Station - Verfahren mit modularer Addition
Variation des Caesar-Verfahrens - Version 1
Eine erste einfache Variation des Caesar-Verfahres besteht darin, weitere Zeichen bei der Darstellung der Nachricht zuzulassen (z.B. ein Leerzeichen) und die Verschiebezahl zu variieren.
Aufgabe 1
Kannst du die Nachricht von Asterix entschlüsseln? Asterix hat die in der Übersicht gezeigten Parameter (Alphabet mit Codierung und Verschiebezahl) benutzt.
Variation des Caesar-Verfahrens - Version 2
Die Idee des Caesar-Verfahrens lässt sich weiter verallgemeinern:
Aufgabe 2
(a) Welche Änderungen sind hier im Vergleich zum Caesar-Verfahren vorgenommen?
(b) Über welche Informationen muss man verfügen, um eine verschlüsselte Nachricht (in Zahlenform) entschlüsseln zu können?
Variation des Caesar-Verfahrens - Version 3
Hier eine weitere Verallgemeinerung des Caesar-Verfahren:
Aufgabe 3
(a) Welche zusätzlichen Änderungen sind hier im Vergleich zu Verfahren 2 vorgenommen? Achte auf die Blockbildung.
(b) Probiere selbst eine andere Variation aus.
Verfahren mit modularer Addition
Schritt 1: Wahl der Blocklänge und Zerlegung des Textes
Die Blocklänge legt die Länge der Texteinheiten fest, die mit Zahlen codiert werden und anschließend verschlüsselt werden. Je größer die Blocklänge, desto mehr Zahlen benötigt man zur Codierung der Texteinheiten.
Bei einer Blocklänge 3 wird beispielweise der Text 'CAESAR' wie folgt in Texteinheiten zerlegt:
'CAE','SAR'
Bei einer Zerlegung eines Textes kann es vorkommen, dass eine Texteinheit übrig bleibt, die nicht mehr die gesamte Blocklänge hat. In diesem Fall füllen wir den Text mit zusätzlichen Zeichen (hier Leerzeichen) auf:
'HAL','LO '
Schritt 2: Wahl der Codierung
Die Codierung ordnet jeder Texteinheit eine natürliche Zahl zu. Die Zuordnung muss eindeutig sein, so dass eine Decodierung möglich ist.
In unserem Beispiel oben haben wir die folgende Codierung des Alphabets gewählt:
' ' -> 00 'A' -> 01 ... 'Z' -> 26
Aus dieser Codierung ergibt sich durch Aneinanderfügen eine Codierung für Zeichenblöcke. Für Zweierblöcke erhält man:
' ' -> 0000 ' A' -> 0001 ' B' -> 0002 ... ' Z' -> 0026 'A ' -> 0100 'AA' -> 0101 ... 'ZZ' -> 2626
Beachte, dass auch andere Codierungen hier möglich sind, z.B.:
' ' -> 000 ' A' -> 001 ' B' -> 002 ... ' Z' -> 026 'A ' -> 027 'AA' -> 028 ... 'ZZ' -> 728
Schritt 3: Wahl des Moduls und der Verschiebezahl
Die Modulzahl n ist eine beliebige natürliche Zahl. Sie muss nur so gewählt werden, dass sie größer als die größtmögliche Codezahl einer Texteinheit ist. Die zu wählende Größe hängt demnach von der Blocklänge und der gewählten Codierung ab.
Die Verschiebezahl e zum Verschlüsseln (e-ncrypt) ist eine beliebige natürliche Zahl, die kleiner als die Modulzahl n ist.
Beide zusammen - Verschiebezahl und Modul - werden zur Verschlüsselung benötigt. Das Zahlenpaar (e, n) bildet den Schlüssel zur Verschlüsselung eines Textes. Dieser Schlüssel wird auch öffentlicher Schlüssel genannt.
Schritt 4: Verschlüsselung codierter Texte
Zur Verschlüsselung eine Codezahl x benötigt man den öffentlichen Schlüssel (e, n). Die Verschlüsselung erfolgt hier durch modulare Addition:
x -> [x + e]%n
Schritt 5: Bestimmung des Gegenschlüssels
Die Verschiebezahl d zum Entschlüsseln (d-ecrypt) ergibt sich direkt aus e und n: Es muss e+d=n gelten. Also ist d = n - e.
Das Zahlenpaar (d, n) bildet den Schlüssel zur Entschlüsselung eines Textes. Dieser Schlüssel wird auch privater Schlüssel genannt.
Schritt 6: Entschlüsselung codierter Texte
Zur Entschlüsselung einer Codezahl y benötigt man den privaten Schlüssel (d, n). Die Entschlüsselung erfolgt analog zur Verschlüsselung:
y -> [y + d]%n
Aufgabe 4
Benutze unsere Standardcodierung mit Blocklänge 2. Erzeuge zunächst einen öffentlichen Schlüssel (wie z.B. (567, 2911)) und gib ihn deinem Nachbarn. Dein Nachbar soll jetzt mit diesem Schlüssel eine selbst gewählte (nicht zu lange) Nachricht mit dem oben beschriebenen Verfahren mit modularer Addition verschlüsseln und sie an dich weitergeben. Entschlüssele diese Nachricht.