Programming lesson
Kryptographie-Entschlüsselung: Monoalphabetische und Vigenère-Chiffren knacken – Anleitung für CSCI 181
Lerne, wie du mit Frequenzanalyse und Kasiski-Methode monoalphabetische und Vigenère-Chiffren entschlüsselst. Schritt-für-Schritt-Anleitung für die Hausaufgabe 1 in CSCI 181.
Einführung in die Kryptographie: Von Caesar bis Vigenère
Die Kryptographie ist heute relevanter denn je – ob beim Verschlüsseln von WhatsApp-Nachrichten, bei Blockchain-Transaktionen oder in der Cybersicherheit von KI-Systemen. In diesem Tutorial lernst du, wie man klassische Chiffren wie die monoalphabetische Substitution und die Vigenère-Chiffre entschlüsselt – genau das, was in der Hausaufgabe 1 (CSCI 181) verlangt wird. Wir zeigen dir, wie du Frequenzanalyse und die Kasiski-Methode anwendest, ohne brute Force. Du wirst sehen: Kryptographie ist wie ein spannendes Rätsel – ähnlich wie das Lösen eines Escape Games oder das Entschlüsseln eines viralen Codes in einer Social-Media-Challenge.
Teil 1: Monoalphabetische Substitution – Frequenzanalyse in der Praxis
Im ersten Teil der Aufgabe (10 Punkte) geht es um einen Geheimtext, der mit einer monoalphabetischen Chiffre verschlüsselt wurde. Deine Aufgabe: entschlüsseln mit Frequenzanalyse. Hier ist der Schlüssel: Buchstaben werden eins zu eins ersetzt, aber die Häufigkeitsverteilung bleibt gleich. Im Deutschen ist der häufigste Buchstabe das E, gefolgt von N, I, S, R, A, T.
Schritt 1: Buchstabenhäufigkeit zählen
Zuerst zählst du, wie oft jeder Buchstabe im Chiffrat vorkommt. Du kannst das manuell machen oder ein Python-Skript schreiben. Ein Beispiel: Angenommen, der häufigste Buchstabe im Chiffrat ist Z. Dann ist es sehr wahrscheinlich, dass Z für E steht. So gehst du vor:
- Erstelle eine Häufigkeitstabelle (z. B. Z: 12%, W: 10%, Q: 9% usw.)
- Vergleiche mit der Standardverteilung der deutschen Sprache.
- Ersetze die häufigsten Buchstaben zuerst.
Schritt 2: Muster erkennen und Wörter erraten
Nach einigen Ersetzungen siehst du vielleicht Teile von Wörtern. Im Chiffrat ZIW VQKD LAFLIOFW YOSZWKWR ZIKGAUI könntest du nach Ersetzung von Z→E und W→N EIN V?KD LAFLIOFN YOS?ENKR EIKGAUI erhalten. Dann errätst du vielleicht EIN als Artikel. So arbeitest du dich vor – wie bei einem Wordle-Spiel, nur mit Buchstaben! Notiere jeden Schritt in deiner Abgabe.
Schritt 3: Vollständige Entschlüsselung
Am Ende erhältst du den Klartext. Zeige in deiner Lösung die Häufigkeitstabelle, deine Ersetzungsschritte und den finalen Text. Ein Beispiel für einen entschlüsselten Satz könnte sein: „Die Vögel zwitschern im Wald“ – aber dein tatsächlicher Text wird anders sein.
Teil 2: Vigenère-Chiffre – Programmieren in Python
Im zweiten Teil (10 Punkte) schreibst du ein Programm in Python, das die Vigenère-Chiffre ver- und entschlüsselt. Die Vigenère-Chiffre ist eine polyalphabetische Substitution: Ein Schlüsselwort gibt an, um wie viele Positionen jeder Buchstabe im Alphabet verschoben wird.
Verschlüsselungsfunktion
Die Funktion encrypt(plaintext, keyword) nimmt den Klartext und das Schlüsselwort. Jeder Buchstabe wird um den Wert des entsprechenden Schlüsselbuchstabens (A=0, B=1, …, Z=25) verschoben. Beispiel: encrypt('HELLO', 'KEY') ergibt RIJVS. So implementierst du es:
def encrypt(plaintext, keyword):
ciphertext = []
key_index = 0
for char in plaintext.upper():
if char.isalpha():
shift = ord(keyword[key_index % len(keyword)]) - ord('A')
cipher_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
ciphertext.append(cipher_char)
key_index += 1
else:
ciphertext.append(char)
return ''.join(ciphertext)Entschlüsselungsfunktion
Die Funktion decrypt(ciphertext, keyword) macht das Gegenteil: Sie subtrahiert die Verschiebung. Teste dein Programm mit dem Beispiel aus der Vorlesung.
Teil 3: Vigenère-Knacken mit Kasiski-Methode und Frequenzanalyse
Der dritte Teil (30 Punkte) ist der anspruchsvollste: Du erhältst einen längeren Chiffrattext (hw1q3-cipher.txt), der mit Vigenère verschlüsselt ist. Dein Ziel: Finde die Schlüssellänge und dann den Schlüssel selbst.
Schritt 1: Schlüssellänge mit Kasiski-Methode bestimmen
Die Kasiski-Methode sucht nach wiederholten Trigraphen (Dreiergruppen von Buchstaben) im Chiffrat. Wenn du z. B. XYZ zweimal siehst, berechnest du den Abstand zwischen den Vorkommen. Dieser Abstand ist oft ein Vielfaches der Schlüssellänge. Notiere alle Abstände und finde den größten gemeinsamen Teiler (ggT) – das ist ein guter Kandidat für die Schlüssellänge k.
Schritt 2: Frequenzvektoren für jede Position
Angenommen, du vermutest k = 5. Dann betrachtest du alle Buchstaben an Positionen 0, 5, 10, … (erster Vektor), dann Positionen 1, 6, 11, … (zweiter Vektor) usw. Für jeden Vektor zählst du die Häufigkeit von A bis Z. Das ergibt k Vektoren der Länge 26. Beispiel:
- Vektor 1: [10, 0, 0, 1, 1, 3, 7, 0, 0, 5, 7, 3, 2, 2, 0, 0, 1, 0, 4, 1, 2, 3, 10, 0, 1, 6]
- Unterstreiche alle Zahlen ≥ 4 – das sind die häufigsten Buchstaben.
Schritt 3: Verschiebung pro Vektor ermitteln
Im Deutschen sind die häufigsten Buchstaben E, N, I, S, R, A, T. Die Abstände zwischen E und A sind 4, zwischen E und T sind 15, zwischen E und N sind 9 (A=0, E=4, N=13, T=19). Wenn in einem Vektor der häufigste Buchstabe z. B. an Position 8 (I) liegt, dann könnte die Verschiebung so sein, dass I dem E entspricht: Shift = (8 - 4) mod 26 = 4. Probiere alle möglichen Shifts aus: Verschiebe die Häufigkeitsverteilung so, dass die Spitzen mit E, N, I usw. übereinstimmen. Notiere alle plausiblen Shifts pro Vektor.
Schritt 4: Schlüsselwort rekonstruieren
Aus den Shifts ergibt sich der Schlüssel: Shift 0 → A, Shift 1 → B usw. Wenn du für jeden Vektor einen Shift hast, erhältst du das Schlüsselwort. Teste es, indem du das Chiffrat mit deinem Programm aus Teil 2 entschlüsselst. Der Klartext sollte sinnvolles Deutsch ergeben.
Trends und Beispiele aus dem Jahr 2026
Stell dir vor, du entschlüsselst eine geheime Nachricht in einem Metaverse-Escape-Room oder knackst den Code eines KI-generierten Rätsels. Kryptographie ist nicht nur für Hacker – auch in Fintech-Apps wie N26 oder Trade Republic werden Verschlüsselungen genutzt, um deine Daten zu schützen. Oder denk an Verschlüsselung in Messengern wie Signal – ohne sie wäre Privatsphäre unmöglich. Mit diesem Wissen bist du bereit, die Hausaufgabe zu meistern und vielleicht sogar einen Bug-Bounty-Wettbewerb zu gewinnen!
Häufige Fehler und Tipps
- Nicht brute forcen: Zeige deine Zwischenschritte, sonst gibt es Punktabzug.
- Schlüssellänge prüfen: Teste mehrere Kandidaten, falls der ggT nicht eindeutig ist.
- Groß-/Kleinschreibung ignorieren: Arbeite nur mit Großbuchstaben.
- Dokumentation: Schreibe Kommentare in deinen Code und erkläre deine Logik.
Fazit
Mit Frequenzanalyse und Kasiski-Methode kannst du selbst komplexe Chiffren knacken. Diese Techniken sind die Grundlage für moderne Kryptographie – vom SSL/TLS-Protokoll bis zur Ende-zu-Ende-Verschlüsselung. Übe sie gut, denn sie sind der Schlüssel (Wortspiel beabsichtigt) zu vielen weiteren Geheimnissen.