Klausuren im Fachbereich
AFB I–IIDie acht Lehrkräfte A bis H des Fachbereichs Informatik schicken sich Klausurentwürfe per E-Mail. Jede Mail soll nur von der Empfängerin bzw. dem Empfänger gelesen werden können. Sie verwenden das symmetrische Verfahren AES mit 128-Bit-Schlüsseln; jedes Paar von Lehrkräften erhält einen eigenen Schlüssel, der bei einer Konferenz auf USB-Sticks verteilt wird.
- Erklären Sie das Prinzip eines symmetrischen Verfahrens am Beispiel des Fachbereichs. Gehen Sie dabei auf das Prinzip von Kerckhoffs ein.
- Berechnen Sie, wie viele Schlüssel der Fachbereich benötigt und wie viele hinzukommen, wenn drei Referendarinnen und Referendare aufgenommen werden.
- Leiten Sie die Formel für die Anzahl der Schlüssel bei \(n\) Personen her.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
A und B besitzen denselben geheimen Schlüssel \(K_{AB}\). A verschlüsselt die Klausur mit \(K_{AB}\) und AES; B entschlüsselt mit demselben Schlüssel. Wer die Mail unterwegs abfängt, sieht nur den Geheimtext.
Nach Kerckhoffs darf das Verfahren (AES) öffentlich bekannt sein; die Sicherheit beruht allein auf der Geheimhaltung der Schlüssel. Deshalb müssen die Schlüssel vorab auf sicherem Weg verteilt werden — hier persönlich bei der Konferenz. Da jedes Paar einen eigenen Schlüssel hat, kann C die Mails zwischen A und B nicht lesen.
Erwartungshorizont zu Aufgabe b)
8 Lehrkräfte: \(\frac{8 \cdot 7}{2} = 28\) Schlüssel (wie in der Abbildung).
11 Personen: \(\frac{11 \cdot 10}{2} = 55\) Schlüssel, also \(55 - 28 = 27\) neue. Probe: Jede der drei neuen Personen braucht Schlüssel mit den 8 bisherigen (\(3 \cdot 8 = 24\)) und untereinander (\(3\)): \(24 + 3 = 27\).
Erwartungshorizont zu Aufgabe c)
Jede der \(n\) Personen braucht mit jeder der \(n - 1\) anderen einen Schlüssel: \(n \cdot (n-1)\) Zuordnungen. Dabei ist jeder Schlüssel doppelt gezählt (\(K_{AB} = K_{BA}\)), also
\(\displaystyle N(n) = \frac{n\,(n-1)}{2}.\)
Die Anzahl wächst quadratisch: Verdoppelt sich die Zahl der Personen, braucht man etwa viermal so viele Schlüssel.
Die Tresor-App
AFB II–IIIEine Tresor-App speichert Dokumente mit AES-256 verschlüsselt und wirbt mit dem Satz „Mit AES-256 sind Ihre Daten unknackbar.“ Den Schlüssel kann man auf drei Arten erzeugen lassen (siehe Tabelle). Ein Angreifer hat die verschlüsselte Datei kopiert und testet auf seiner Grafikkarte \(10^{10}\) Schlüssel pro Sekunde; eine Sperre nach Fehlversuchen greift bei der kopierten Datei nicht.
| Variante | Schlüsselquelle | Anzahl möglicher Schlüssel |
|---|---|---|
| 1 | sechsstellige PIN | \(10^6\) |
| 2 | zehnstelliges Passwort aus 62 Zeichen (a–z, A–Z, 0–9) | \(62^{10}\) |
| 3 | zufälliger 256-Bit-Schlüssel auf USB-Stick | \(2^{256}\) |
- Schätzen Sie für alle drei Varianten ab, wie lange eine vollständige Brute-Force-Suche höchstens dauert.
- Erstellen Sie eine Python-Funktion
pin_knacken(pruefe), die alle sechsstelligen PINs von"000000"bis"999999"durchprobiert und die richtige PIN als Zeichenkette zurückgibt. Die gegebene Funktionpruefe(pin)liefert genau für die richtige PINTrue. - Nehmen Sie Stellung zur Werbeaussage der App.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
| Variante | Rechnung | Zeit (höchstens) |
|---|---|---|
| 1 | \(10^6 : 10^{10} = 10^{-4}\,\text{s}\) | 0,1 ms |
| 2 | \(62^{10} \approx 8{,}4 \cdot 10^{17};\; 8{,}4 \cdot 10^{17} : 10^{10} \approx 8{,}4 \cdot 10^{7}\,\text{s}\) | ≈ 2,7 Jahre |
| 3 | \(2^{256} \approx 1{,}2 \cdot 10^{77};\; 1{,}2 \cdot 10^{77} : 10^{10} = 1{,}2 \cdot 10^{67}\,\text{s}\) | ≈ 3,7 · 10⁵⁹ Jahre |
Variante 1 ist sofort geknackt, Variante 2 in wenigen Jahren (mit 100 Grafikkarten in Tagen), Variante 3 ist praktisch unmöglich — das Universum ist erst etwa \(1{,}4 \cdot 10^{10}\) Jahre alt.
Erwartungshorizont zu Aufgabe b)
def pin_knacken(pruefe):
for zahl in range(1000000): # 0 … 999999
pin = str(zahl)
# führende Nullen: 42 -> "000042"
while len(pin) < 6:
pin = "0" + pin
if pruefe(pin):
return pin
return None # nicht gefundenGleichwertig: pin = str(zahl).zfill(6) oder f"{zahl:06d}". Test: Mit pruefe = lambda p: p == "004711" liefert die Funktion "004711".
Erwartungshorizont zu Aufgabe c)
AES-256 selbst gilt als sicher: Ein Brute-Force-Angriff auf einen zufälligen 256-Bit-Schlüssel ist aussichtslos (Variante 3). Die Werbeaussage verschweigt aber, dass die Sicherheit vom schwächsten Glied abhängt — hier von der Schlüsselquelle. Aus einer PIN entstehen nur \(10^6\) Schlüssel; der Schlüsselraum ist dann nicht \(2^{256}\), sondern \(10^6\) (Variante 1). Auch ein zehnstelliges Passwort ist nur dann einigermaßen stark, wenn es zufällig gewählt ist; gängige Passwörter fallen einem Wörterbuchangriff viel schneller zum Opfer.
Hinzu kommen Angriffe, die das Verfahren gar nicht betreffen: Diebstahl des USB-Sticks, Schadsoftware auf dem Gerät, Weitergabe des Schlüssels.
Position: Die Aussage ist irreführend. Richtig wäre: „Mit AES-256 und einem zufälligen 256-Bit-Schlüssel sind Ihre Daten nach heutigem Stand nicht per Brute Force zu knacken.“ Vollständig ist eine Stellungnahme, die Algorithmus und Schlüsselquelle trennt, mindestens eine Variante rechnerisch einbezieht und zu einem klaren Urteil kommt.
