Der Probenplan der Theater-AG
AFB I–IIDie Theater-AG verschickt ihre Probenpläne im Klassenchat mit dem Vigenère-Verfahren verschlüsselt (A = 0, …, Z = 25; Umlaute werden umschrieben, Leerzeichen und Satzzeichen entfernt). Das Schlüsselwort ist geheim und hat höchstens zehn Buchstaben. Ein Mitschüler hat einen Geheimtext aus \(N = 511\) Buchstaben abgefangen. Er weiß, dass jeder Plan mit dem Wort PROBENPLAN beginnt. Der Geheimtext beginnt mit
QLSIR RQFEU SYFLH PROPG QLAHF QSJUI …
| Buchstabe | A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Anzahl | 21 | 16 | 11 | 3 | 19 | 26 | 15 | 35 | 27 | 19 | 12 | 28 | 16 |
| Buchstabe | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| Anzahl | 15 | 23 | 17 | 17 | 33 | 16 | 14 | 23 | 29 | 14 | 15 | 38 | 9 |
- Nennen Sie die drei Angriffsszenarien, die sich danach unterscheiden, was der Angreifer außer dem Verfahren kennt oder tun kann, und die Situation des Mitschülers.
- Wenden Sie einen Angriff mit bekanntem Klartext auf den Anfang des Geheimtexts an und bestimmen Sie so das Schlüsselwort.
- Werten Sie die Tabelle aus: Berechnen Sie den Koinzidenzindex des Geheimtexts, schätzen Sie mit \(L\approx\frac{0{,}0762-0{,}0385}{I-0{,}0385}\) die Schlüssellänge und setzen Sie das Ergebnis in Beziehung zu b).
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Nur Geheimtext (ciphertext-only), bekannter Klartext (known-plaintext), gewählter Klartext (chosen-plaintext). Der Mitschüler kennt den Geheimtext und dessen erste zehn Klartextbuchstaben: Es liegt ein Angriff mit bekanntem Klartext vor.
Erwartungshorizont zu Aufgabe b)
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Geheimtext c | Q 16 | L 11 | S 18 | I 8 | R 17 | R 17 | Q 16 | F 5 | E 4 | U 20 |
| Klartext p | P 15 | R 17 | O 14 | B 1 | E 4 | N 13 | P 15 | L 11 | A 0 | N 13 |
| (c − p) mod 26 | 1 B | 20 U | 4 E | 7 H | 13 N | 4 E | 1 B | 20 U | 4 E | 7 H |
Die Folge BUEHNE|BUEH wiederholt sich nach sechs Stellen; da das Schlüsselwort höchstens zehn Buchstaben hat, lautet es BUEHNE. Probe: P + B = Q, R + U = L (17 + 20 = 37 ≡ 11).
Erwartungshorizont zu Aufgabe c)
N bis Z: \(210+506+272+272+1056+240+182+506+812+182+210+1406+72=5926\), also \(\sum n_i(n_i-1)=5340+5926=11\,266\).
\(I=\dfrac{11\,266}{511\cdot510}=\dfrac{11\,266}{260\,610}\approx0{,}043\).
Der Wert liegt deutlich unter dem deutschen Wert 0,0762 und nahe am Zufallswert 0,0385: Das Verfahren ist polyalphabetisch, die einfache Häufigkeitsanalyse scheitert.
Friedman: \(L\approx\dfrac{0{,}0377}{0{,}0432-0{,}0385}\approx8\). Die Schätzung liefert die richtige Größenordnung, trifft die tatsächliche Länge 6 aus b) aber nicht genau: Bei nur 511 Buchstaben (rund 85 je Alphabet) streut \(I\) merklich, und ein kleiner Fehler im Nenner \(I-0{,}0385\) verändert \(L\) stark. Gesamtaussage: Der Koinzidenzindex zeigt „polyalphabetisch, mittellanger Schlüssel“; die genaue Länge liefern Kasiski-Test oder — wie hier — schon ein kurzes bekanntes Klartextstück. Das Verfahren ist damit unsicher.
Die Sicherheitsprüfung
AFB II–IIIEin Versandhändler verschlüsselt seine Kundenbriefe mit einem selbst entwickelten Verfahren „XVig“: Vigenère mit einem zufällig gewählten Schlüsselwort aus 16 Buchstaben, das für alle Briefe gleich bleibt. Jeder Brief beginnt mit „Liebe Kundinnen und Kunden“. Der Hersteller wirbt: „Mit \(26^{16}\approx4{,}4\cdot10^{22}\) Schlüsseln ist XVig sicherer als DES.“
Eine Prüferin misst mit Python-Funktionen den Koinzidenzindex verschiedener Texte eines Kundenbriefs (1420 Buchstaben). „Mittlerer Index bei Länge \(L\)“ bedeutet: Der Text wird in \(L\) Teiltexte zerlegt (jeder \(L\)-te Buchstabe), und der Mittelwert ihrer Koinzidenzindizes wird gebildet.
| Nr. | gemessener Text | Ergebnis |
|---|---|---|
| 1 | Klartext des Briefs | 0,082 |
| 2 | XVig-Geheimtext | 0,040 |
| 3 | XVig-Geheimtext, mittlerer Index bei Länge 5 | 0,040 |
| 4 | XVig-Geheimtext, mittlerer Index bei Länge 8 | 0,059 |
| 5 | XVig-Geheimtext, mittlerer Index bei Länge 16 | 0,082 |
| 6 | AES-verschlüsselter Brief, als Buchstaben kodiert | 0,039 |
- Implementieren Sie in Python die Funktion
koinzidenzindex(text), die nur die Buchstaben A–Z (Groß- und Kleinschreibung gleich behandelt) zählt und \(I\) zurückgibt, sowie die Funktionmittlerer_index(text, laenge). - Interpretieren Sie die Messwerte 1 bis 6.
- Beurteilen Sie die Sicherheit von XVig und die Werbeaussage des Herstellers.
Hinweise
Hinweis zu Aufgabe a)
ord(zeichen) - 65 liefert die Position. Für die Teiltexte hilft das Slicing text[start::laenge]. Denke an Texte mit weniger als zwei Buchstaben.Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
def koinzidenzindex(text):
anzahl = [0] * 26
n = 0
for zeichen in text.upper():
if "A" <= zeichen <= "Z": # nur A–Z zählen
anzahl[ord(zeichen) - 65] += 1
n += 1
if n < 2:
return 0.0
summe = 0
for k in anzahl:
summe += k * (k - 1)
return summe / (n * (n - 1))
def mittlerer_index(text, laenge):
buchstaben = ""
for zeichen in text.upper():
if "A" <= zeichen <= "Z":
buchstaben += zeichen
summe = 0
for start in range(laenge):
teiltext = buchstaben[start::laenge] # jeder laenge-te
summe += koinzidenzindex(teiltext)
return summe / laengeTests: koinzidenzindex("Anna") liefert \(\frac{2+2}{4\cdot3}\approx0{,}333\), koinzidenzindex("SICHERHEITSLUECKE") liefert \(\frac{20}{272}\approx0{,}074\), koinzidenzindex("x") liefert 0.0. Wichtig ist, dass Nicht-Buchstaben weder gezählt noch in \(N\) eingerechnet werden und die Teiltexte aus dem bereinigten Text gebildet werden.
Erwartungshorizont zu Aufgabe b)
(1) 0,082 ist typisch deutsch (ein einzelner Text streut um 0,0762). (2) 0,040 liegt fast beim Zufallswert: Der Geheimtext zeigt insgesamt kaum Sprachspur. (3) Bei Länge 5 bleiben die Teiltexte zufällig — 5 passt nicht zum Schlüssel. (4) Bei Länge 8 steigt der Wert auf etwa die Mitte zwischen Zufall und Deutsch: Jeder Teiltext mischt nur noch zwei Alphabete — ein Hinweis, dass die Schlüssellänge ein Vielfaches von 8 ist. (5) Bei Länge 16 erreicht der mittlere Index den Wert des Klartexts: Jeder Teiltext ist mit einem einzigen Buchstaben verschoben, also Caesar-verschlüsselt. Die Schlüssellänge ist 16, jeder Teiltext lässt sich per Häufigkeitsanalyse knacken. (6) 0,039: Die AES-Ausgabe ist statistisch vom Zufall nicht zu unterscheiden.
Fazit: Der Gesamtwert (2) täuscht Sicherheit vor; erst die Zerlegung zeigt die Struktur.
Erwartungshorizont zu Aufgabe c)
Brute Force: \(26^{16}\approx4{,}4\cdot10^{22}\) ist tatsächlich größer als der DES-Schlüsselraum \(2^{56}\approx7{,}2\cdot10^{16}\), liegt aber weit unter \(2^{128}\approx3{,}4\cdot10^{38}\). Brute Force ist schon heute aufwendig, doch darauf kommt es gar nicht an.
Statistik: Die Messung zeigt (b): Mit dem mittleren Index findet man die Schlüssellänge 16; danach ist jeder Teiltext Caesar, und die Häufigkeitsanalyse liefert jeden Schlüsselbuchstaben. Bei rund 90 Buchstaben je Teiltext klappt das zuverlässig.
Klartext-Angriff: Der feste Anfang „LIEBEKUNDINNENUNDKUNDEN“ hat 23 ≥ 16 Buchstaben. Schlüssel = Geheimtext − Klartext liefert aus einem einzigen Brief sofort das ganze Schlüsselwort.
Handhabung: Weil das Schlüsselwort für alle Briefe gleich bleibt, sind mit ihm auch alle anderen Briefe offen.
Urteil: XVig ist unsicher; schon eine der drei letzten Schwächen genügt. Die Werbeaussage ist irreführend: Sie misst Sicherheit allein am Schlüsselraum und verschweigt Analyse und bekannten Klartext. Empfehlung: ein geprüftes Verfahren wie AES mit zufälligem 128-Bit-Schlüssel (Messwert 6) statt einer Eigenentwicklung — im Sinne von Kerckhoffs wird Sicherheit durch öffentlich geprüfte Verfahren erreicht. Vollständig ist eine Beurteilung, die mindestens drei Kriterien mit Bezug auf die Messwerte bzw. den Briefanfang prüft und zu einem klaren Urteil kommt.
