Eine praktische Einführung in Stromchiffren — vom Bleistift zur Post-Quanten-Kryptografie.
Vier Lektionen, gedacht für Bleistift, Papier und eine zweite Person. Am Ende wirst du eine Chiffre von Hand geschrieben, dieselbe Chiffre gebrochen und verstanden haben, warum moderne Kryptografie mit dem, was du hier tust, nichts gemein hat. Diese letzte Einsicht ist der eigentliche Punkt der Übung.
1553 veröffentlichte ein italienischer Mathematiker namens Giovan Battista Bellaso eine Chiffre. Ein knappes Jahrzehnt später veröffentlichte ein französischer Diplomat namens Blaise de Vigenère eine ähnliche — und weil im Kryptografieunterricht kaum jemand Italienisch liest, blieb sein Name hängen. Die Vigenère-Chiffre galt dreihundert Jahre lang als le chiffre indéchiffrable: die unentzifferbare Chiffre.
Das Prinzip lässt sich in einem Absatz erklären. Du wählst ein Schlüsselwort, etwa HAMBURG, und schreibst es unter den Klartext, so oft wiederholt wie nötig:
Klartext: TREFFENWIRUNSMORGENFRUEH Schlüssel: HAMBURGHAMBURGHAMBURGHAM
Für jede Spalte wandelst du beide Buchstaben in Zahlen um (A=0, B=1, …, Z=25), addierst sie, nimmst das Ergebnis modulo 26 und wandelst es wieder in einen Buchstaben zurück. Das ist das Geheimtextzeichen dieser Spalte. Weil dasselbe Klartextzeichen je nach Position des Schlüsselbuchstabens unterschiedlich verschlüsselt wird, taucht E nicht jedes Mal als derselbe Geheimtextbuchstabe auf.
Genau dieses Merkmal verschaffte Vigenère seinen dreihundertjährigen Ruf — und war zugleich die Quelle seiner dreihundertjährigen Verwundbarkeit. Dazu kommt Lektion 2. Jetzt: probieren.
Zuerst von Hand. Wähle eine kurze Nachricht und den Schlüssel HAMBURG. Berechne die ersten fünf Geheimtextzeichen mit Bleistift. Dann gib deine Nachricht ins Werkzeug ein und vergleiche. Stimmt etwas nicht, such die Zeile, in der die Ergebnisse auseinandergehen.
HAMBURG), startet der Substitutionszyklus neu. Positionen 0, 7, 14, 21 … verwenden immer denselben Schlüsselbuchstaben.ä→AE, ö→OE, ü→UE, ß→SS. Aus früh wird FRUEH, aus Straße wird STRASSE.Dreihundert Jahre lang galt Vigenère als unknackbar, weil Kryptografen damals nur einen wirksamen Angriff auf Substitutionschiffren kannten: die Häufigkeitsanalyse. Im Deutschen ist E mit Abstand der häufigste Buchstabe — rund 17,4 % aller Buchstaben —, gefolgt von N, I, S, R, A. Bei einer einfachen Substitution (jeder Buchstabe wird fest durch einen anderen ersetzt) werden alle E zum selben Geheimtextzeichen, und wer im Geheimtext den häufigsten Buchstaben zählt, weiß sofort, wo das E gelandet ist.
Vigenère verhindert das, indem jede Spalte eine andere Substitution benutzt: kein einzelner Buchstabe steht fest für E. Der Geheimtext sieht beinahe gleichverteilt aus, und die übliche Häufigkeitsanalyse findet keinen Hebel.
Diese Verteidigung hielt bis 1863, als ein pensionierter preußischer Kavallerieoffizier namens Friedrich Kasiski eine Schrift veröffentlichte, die erklärte, wie man die Chiffre dennoch bricht. (Der britische Mathematiker Charles Babbage hatte die Lösung offenbar schon um 1854, behielt sie aber für sich.) Kasiskis Beobachtung hat die Eleganz einer einfachen Idee:
Kasiskis Beobachtung. Enthält der Klartext eine Wortwiederholung und fällt diese Wiederholung beide Male zufällig mit demselben Abschnitt des Schlüssels zusammen, dann ist der Geheimtext an beiden Stellen identisch. Der Abstand zwischen den beiden Vorkommen ist ein Vielfaches der Schlüssellänge. Finde mehrere solche Wiederholungen, berechne die Abstände, bestimme den größten gemeinsamen Teiler — und die Schlüssellänge fällt heraus.
Das ist der ganze Angriff auf die erste Hälfte des Problems. Sobald du die Schlüssellänge k kennst, teilst du den Geheimtext in k verschränkte Ströme auf: Positionen 0, k, 2k, … bilden Strom 0; Positionen 1, k+1, 2k+1, … bilden Strom 1 — und so weiter. Jeder Strom ist eine reine Cäsar-Verschiebung, und die brichst du mit gewöhnlicher Häufigkeitsanalyse. Den Schlüssel zusammensetzen, Geheimtext entschlüsseln, fertig.
Kasiskis Methode braucht wiederholte N-Gramme — die in natürlichsprachigem Text normalerweise vorkommen, aber nicht immer. 1922 veröffentlichte der amerikanische Kryptograf William F. Friedman ein statistisches Werkzeug, das die Schlüssellänge ganz ohne Wiederholungen findet: den Koinzidenzindex.
Die Idee: Du ziehst zufällig zwei Buchstaben aus einem Text. Wie groß ist die Wahrscheinlichkeit, dass beide identisch sind? Bei gleichverteiltem Rauschen über einem 26-Buchstaben-Alphabet liegt sie bei 1/26 ≈ 0,0385. Bei deutschem Fließtext liegt sie bei etwa 0,0762 — weil Deutsch ungleichmäßig verteilt ist: E ist viel häufiger als Y, und ein zufällig gezogenes Buchstabenpaar landet daher häufiger auf zwei gemeinsamen Buchstaben als der reine Zufall vermuten ließe.
Der Trick: Teile einen Vigenère-Geheimtext in k Ströme auf. Hast du das richtige k gewählt, ist jeder Strom eine reine Cäsar-Verschiebung deutschen Textes — sein Koinzidenzindex liegt nahe 0,0762. Beim falschen k ist jeder Strom noch immer ein Gemisch mehrerer Substitutionen, und sein KI liegt nahe 0,0385. Berechne den mittleren KI für k = 1, 2, 3, …, 20 und such den ersten Wert, bei dem die Zahl Richtung 0,0762 springt. Das ist die Schlüssellänge.
Probiere es an dem Geheimtext aus Lektion 1 aus: verschlüssele eine längere Nachricht (mindestens 100 Buchstaben), füge sie ein, und lass alle drei Werkzeuge der Reihe nach laufen. Sie einigen sich am Ende.
Die Lektion lautet nicht: Vigenère ist schwach. Das stimmt, ist aber nicht der Punkt. Der Punkt ist der Grund der Schwäche — denn dieser Grund gilt für jede Chiffre, die je entworfen wurde, und ihn erkennen zu können ist der Instinkt, der Leute, die über Sicherheit nachdenken können, von allen anderen unterscheidet.
Das Muster: Vigenère wollte einen Klartext verbergen, indem es einen Schlüssel darüberlegte. Aber der Schlüssel wiederholte sich. Wiederholung ist Struktur. Sobald du weißt, wonach du suchen musst — Wiederholungen von N-Grammen, Koinzidenzstatistik —, fällt die Schlüssellänge heraus, und damit zerfällt die Chiffre in ein Bündel bereits gelöster Teilprobleme.
Die Chiffre hat ihre eigene Schlüssellänge durch den Geheimtext verraten. Nicht direkt, nicht als Zahl, die jemand hingeschrieben hätte — sondern als messbare statistische Eigenschaft, die ein motivierter Schüler mit Schulmathematik aufspüren kann.
Die Frage des Verteidigers, immer: Welche Struktur übernimmt mein Geheimtext von meinem Klartext, meinem Schlüssel, meinem Algorithmus oder meinem Protokoll, die ich nicht eingeplant habe?
Vigenère erbt:
Moderne Chiffren — AES, ChaCha20, die Post-Quanten-Bausteine im hinteren Teil von FERRUM-10 — sind um ein einziges Prinzip herum entworfen, das Vigenère nicht erfüllt: Der Geheimtext soll für jeden rechentechnisch begrenzten Angreifer ununterscheidbar von Zufall sein. Kann ein Angreifer den Geheimtext von einer gleich langen Folge von Münzwürfen unterscheiden, leckt die Chiffre — und ein Leck reicht, um an einem Faden zu ziehen.
Moderne Chiffren verwenden Schlüsselströme, die selbst nicht von Zufall unterscheidbar sind; sie verhindern, dass wiederholter Klartext wiederholten Geheimtext erzeugt; und sie hängen einen Nachrichtenauthentisierungscode an, damit manipulierter Geheimtext schlicht abgewiesen wird, noch bevor irgendjemand versucht, ihn zu entschlüsseln.
Vigenère besteht keinen dieser Tests. Es leckt die Schlüssellänge; seine Spalten lecken Sprachstruktur; und es hat keinerlei Authentisierung — manipulierter Geheimtext ergibt einfach leicht veränderten Kauderwelsch, ohne dass der Empfänger zwischen Übertragungsfehler und gezieltem Angriff unterscheiden kann.
Alle drei Mängel zu beheben war ungefähr die Aufgabe der Kryptografie des 20. Jahrhunderts. Das Ergebnis siehst du in Lektion 4.
Das Chiffre-Werkzeug unter ferrum.kmsp42.com/app (passwortgeschützt) verwendet drei Bausteine, die zusammen jeden Mangel adressieren, den du gerade in den Lektionen 1 und 2 ausgenutzt hast. Keiner davon ist von Hand durchführbar — die beteiligten Zahlen sind zu groß, die Struktur ist absichtlich zu gleichmäßig. Aber du solltest verstehen, wofür jeder Baustein da ist, weil jeder als direkte Antwort auf ein historisches Versagen entstanden ist.
Vigenère setzt voraus, dass du und dein Gesprächspartner bereits einen geheimen Schlüssel teilen. Im echten Leben ist genau das das schwierige Problem: Wie einigt man sich mit jemandem, den man nie getroffen hat, über einen Kanal, den ein Angreifer belauscht, auf einen gemeinsamen Schlüssel? Die Antwort ist ein Schlüssel-Kapselungs-Mechanismus. Du erzeugst ein Schlüsselpaar: einen öffentlichen und einen geheimen Schlüssel. Du veröffentlichst den öffentlichen, behältst den geheimen. Wer dir schreiben will, kapselt mit deinem öffentlichen Schlüssel einen frischen, zufälligen symmetrischen Schlüssel. Das Ergebnis ist ein Geheimtext, den nur dein geheimer Schlüssel wieder öffnen kann. Ein Angreifer auf der Leitung sieht den öffentlichen Schlüssel und den Geheimtext — beides verrät ihm das gemeinsame Geheimnis nicht.
ML-KEM-768 ist der KEM-Standard, den das NIST 2024 als FIPS 203 veröffentlicht hat. Er baut auf dem Problem Module Learning With Errors auf, das als schwer gilt — auch für Angreifer mit einem Quantencomputer. Das ist relevant, weil Quantencomputer die vorherige KEM-Generation (RSA, Diffie-Hellman) in Polynomialzeit brechen würden. Öffentliche Schlüssel: ≈ 1.184 Byte. Geheimtexte: ≈ 1.088 Byte. Gemeinsames Geheimnis: 32 Byte hochentropischer Zufall.
Diese 32 Bytes lassen sich nicht direkt verwenden. Du brauchst einen Verschlüsselungsschlüssel, einen MAC-Schlüssel, möglicherweise einen Nonce-Keim — mehrere voneinander unabhängige Schlüssel, die alle aus dem einen gemeinsamen Geheimnis abgeleitet werden müssen, ohne dass einer von ihnen Information über die anderen preisgibt. Dafür ist eine Schlüsselableitungsfunktion da. HKDF (HMAC-based Key Derivation Function) arbeitet in zwei Phasen: Extract verdichtet den Eingang zu einem gleichmäßigen pseudozufälligen Block, Expand streckt diesen Block auf so viele benannte Teilschlüssel, wie du brauchst. „SHA-512" bezeichnet die zugrundeliegende Hashfunktion.
HKDF ist langweilig — im besten Sinne. Es ist der Baustein, der dafür sorgt, dass alle anderen Bausteine funktionieren, ohne dass man darüber nachdenken muss.
Verschlüsselung allein sagt dem Empfänger nicht, dass du die Nachricht geschickt hast — nur dass jemand mit Zugang zum Schlüssel sie geschickt hat. Wenn der Empfänger wissen soll, dass die Nachricht wirklich von dir stammt und unterwegs nicht verändert wurde, brauchst du eine digitale Signatur. Du signierst mit einem privaten Schlüssel, den nur du besitzt; der Empfänger prüft mit deinem öffentlichen Schlüssel. Jede Veränderung bricht die Signatur — Manipulationen sind erkennbar.
ML-DSA-65 ist NISTʼs Post-Quanten-Signaturstandard von 2024 (FIPS 204), basierend auf derselben Gitterproblem-Familie wie ML-KEM. Verifikationsschlüssel: ≈ 1.952 Byte. Signaturen: ≈ 3.309 Byte. Der Signaturschlüssel wird nie übertragen. In FERRUM-10 signiert er die verschlüsselte Nachricht — der Empfänger kann damit sowohl Herkunft als auch Unversehrtheit bestätigen.
Jeder dieser Bausteine ist eine direkte Antwort auf eine Lektion, die Kryptografen schmerzhaft aus einem vorangegangenen Versagen gelernt haben. ML-KEM ersetzt die Annahme eines vorab geteilten Schlüssels, weil jedes reale Protokoll, das darauf bestand, am Schritt der Schlüsselverteilung scheiterte. HKDF ersetzt Ad-hoc-Schlüsselhandhabung, weil jede Chiffre, die bei „nimm einfach das Passwort als Schlüssel" schlau sein wollte, am Schlüssel-Handling brach. ML-DSA ersetzt „ich habe den Schreibstil erkannt, also muss es echt sein", weil in jedem Protokoll ohne Authentisierung irgendwann Nachrichten gefälscht wurden.
Du hast Vigenère mit dem Kasiski-Test gebrochen. Moderne Kryptografie existiert, weil Leute in anderen Lektionen andere Dinge gebrochen haben, und der Patch, den sie für jeden Bruch schrieben, wurde zu einem Bestandteil dessen, was eine moderne Chiffre leisten muss. Das lässt sich nicht dadurch verstehen, dass man es erzählt bekommt — man muss zuerst selbst etwas brechen. Das hast du gerade getan.
Zum Abschluss. Verwende Vigenère niemals für Inhalte, die wirklich geheim bleiben müssen. Es ist ein schönes Lehrstück; kein Werkzeug. Wenn du eine Nachricht schicken willst, die auch vor einem entschlossenen Angreifer privat bleibt, benutze das echte Werkzeug. Das Chiffre-Werkzeug auf der passwortgeschützten Seite verwendet die drei oben beschriebenen Bausteine — und es funktioniert.