Polyalphabetische Verschlüsselung
Parallel zur Weiterentwicklung der Kryptologie gab es auch Fortschritte in der Berechnung von Schlüsseln. Um 1400 gelang es den Arabern, Substitutionen zu brechen. Als eigentlicher Begründer der Kryptologie gilt L.B. Alberti, der 1466 erstmals den polyalphabetischen Schlüssel beschrieb. G.B. Della Porta löste erstmals einen polyalphabetischen Schlüssel. Wichtige Beiträge zur Kryptologie lieferten im 19.Jh. u.a. C. Wheatstone, F. Beaufort und Friedrich W. Kasiski.
Die polyalphabetische Chiffrierung hat jahrtausendelang seine Bedeutung erhalten und wurde von den Deutschen noch im Zweiten Weltkrieg benutzt. Allerdings wurden dabei nicht Papierstreifen gegeneinander verschoben, sondern eine Maschine - "ENIGMA" genannt (enigma, griechisch: Rätsel, Geheimnis) - verwendet, in der sich Walzen mit eingravierten Buchstaben drehten. Durch Veränderung von Schaltungen, das heisst durch Neustecken von elektrischen Kontakten, konnte man den Code, also die Grösse der einzelnen Verschiebungen, bei der Wahl eines jeden Buchstabens automatisch verändern. Da der Empfänger den jeweils verwendeten Code kannte, konnte er ihn in diese Maschine eingeben und erhielt dann durch Tippen des verschlüsselten Textes unmittelbar die entschlüsselte Botschaft. Auf deutscher Seite war man überzeugt, dass die kriegswichtigen Nachrichten vom Gegner nicht entziffert werden könnten. Man hatte sich aber getäuscht; zwei Umstände machten es den Polen und Engländern möglich, den Code zu knacken:
- Weil die Verschlüsselung jeweils nur durch Herstellung von verschiedenen Schaltungen erfolgte, gab es eine endliche Zahl von verschiedenen Codes. Es wurden somit nicht immer wieder neue Codes verwendet, sondern nach einiger Zeit alte nochmals eingesetzt. Durch diese Wiederholung wurden Ansatzpunkte geschaffen, die Verschlüsselung zu knacken.
- Die Engländer verfügten über die ersten leistungsfähigen elektronischen Rechenmaschinen (Bomben). Dadurch konnten sie in Sekundenbruchteilen zahlreiche Zuordnungsmöglichkeiten ausprobieren, bis sie durch Zufall auf die richtige stiessen.
Den Deutschen blieb verborgen, dass die Engländer ihre Nachrichten verstehen konnten, was nicht unwesentlich zur Entscheidung des Krieges beigetragen haben soll. Zu der Kryptoanalytikergruppe der Engländer gehörte unter anderen auch Alan Turing, der nicht unwesentlichen Einfluss auf die Weiterentwicklung der noch jungen Computertechnik hatte.
Wesentliche Veränderung für die Kryptologie brachte das Aufkommen des Computers mit sich. Unter dem Aspekt des Datenschutzes hat das Interesse an der Kryptologie ganz erheblich zugenommen. Andererseits bietet der Computer selber die Möglichkeit, grosse Datenmengen schnell analysieren zu können, was neue Ansätze zum Brechen von Schlüsseln schafft.
Polyalphabetische Verschlüsselung
Eine polyalphabetische Chiffrierung kann z.B. für den Klartext abba so wie in folgender Tabelle erfolgen.
| Klartextalphabet | a | b | c | d | e | ... |
|---|---|---|---|---|---|---|
| erstes Geheimtextalphabet | H | L | W | X | D | ... |
| zweites Geheimtextalphabet | U | L | V | W | A | ... |
| drittes Geheimtextalphabet | N | A | R | T | I | ... |
| viertes Geheimtextalphabet | D | Y | Z | L | M | ... |
Damit wird aus abba ganz einfach HLAD. Als Konsequenz ergibt sich, dass die Häufigkeiten und Muster verschwunden sind! Allerdings müssen Empfänger und Sender die Regeln wissen, nachdem sich die Zuordnung Klartextalphabet zu Geheimtextalphabet ändert, im allgemeinen besitzen beide 26 Alphabete und müssen dazu das Anfangswort übermitteln. Die bekannteste Methode der polyalphabetischen Chiffrierung ist die Vigenère-Chiffrierung; hilfreich in der Handhabung ist ein sogennantes Vigenère-Quadrat:
Vigenère Chiffrierung
Neben dem Vigenère-Quadrat benötigen wir noch ein Schlüsselwort. Um Klartext zu chiffrieren, schreibt man das Schlüsselwort - hier VENUS - periodisch über den Klartext. (https://www.youtube.com/watch?v=zZhLLYdDnIQ)
| V | E | N | U | S | V | E | N | U | S | V | E | N | U | S | V |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| p | o | l | y | a | l | p | h | a | b | e | t | i | s | c | h |
| K | S | Y | S | S | G | T | U | U | T | Z | X | V | M | U | C |
Jeder Klartextbuchstabe wird dann mit dem Geheimtextalphabet verschlüsselt, dessen erster Buchstabe im Vigenère-Quadrat über dem Klartextbuchstabe stehende Schlüsselwortbuchstabe ist. Für den ersten Buchstaben des Beispiels von oben heisst das also: Wenn man das erste p aus polyalphabetisch verschlüsseln will, muss man die Geheimtextalphabetzeile nehmen, die mit V beginnt. Dann sucht man sich im Klartextalphabet über den Vigenère-Quadrat das p, geht die Spalte nach unten bis auf die Höhe von V; der Geheimtextbuchstaben ist K.
Verschlüssle die Nachricht kryptologie mit dem Schlüssel WAJ mit Vigenère.
Solution
GRHLTXHOPEE
Ein erstes Beispiel
Dazu verwenden wir den Text, den abgeschlossenen Roman; das Schlüsselwort sei JAMESBOND. Wir schreiben zunächst das Schlüsselwort über den Text. Wir gehen in die Zeile, die mit dem Schlüsselwortbuchstaben beginnt und suchen die Spalte, die mit dem Klartextbuchstaben beginnt; am Schnittpunkt von Zeile und Spalte steht unser Geheimbuchstabe.
| a | b | c | d | e | f | g | h | i | j | k | l | m | ... |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | B | C | D | E | F | G | H | I | J | K | L | M | ... |
| B | C | D | E | F | G | H | I | J | K | L | M | N | ... |
| C | D | E | F | G | H | I | J | K | L | M | N | O | ... |
| D | E | F | G | H | I | J | K | L | M | N | O | P | ... |
| E | F | G | H | I | J | K | L | M | N | O | P | Q | ... |
| F | G | H | I | J | K | L | M | N | O | P | Q | R | ... |
| G | H | I | J | K | L | M | N | O | P | Q | R | S | ... |
| H | I | J | K | L | M | N | O | P | Q | R | S | T | ... |
| I | J | K | L | M | N | O | P | Q | R | S | T | U | ... |
| J | K | L | M | N | O | P | Q | R | S | T | U | V | ... |
| K | L | M | N | O | P | Q | R | S | T | U | V | W | ... |
| L | M | N | O | P | Q | R | S | T | U | V | W | X | ... |
| M | N | O | P | Q | R | S | T | U | V | W | X | Y | ... |
| . | . | . | . | . | . | . | . | . | . | . | . | . |
Wir erhalten somit den dargestellten Geheimtext.
| JAMES | BONDJ | AMESB | ONDJA | ME | ||||
|---|---|---|---|---|---|---|---|---|
| Derab | gesch | losse | neRom | an | ||||
| MEDET | HSFFQ | LAWKF | BRUXM | MR |
Die Verschlüsselung des restlichen Textes ist eine mögliche Übungsaufgabe.
Solution
Man findet die Lösung im vorangegangenen Text.
Die Theorie der Entschlüsselung
Die Kryptoanalyse von Vigenère-Chiffrierung ist leicht, wenn das Schlüsselwort relativ kurz ist und der Geheimtext lang; das Knacken erfolgt in zwei Schritten:
- Bestimmen der Länge des Schlüsseltextes (Kasiski- & Friedmann-Test).
- Bestimmen des Schlüsselwortes selbst.
Der Kasiski-Test
Der Test basiert auf folgender Idee: Treten im Klartext gewisse Buchstabenfolgen häufig auf (Trigramme u.ä.), so werden sie stets gleich übersetzt, wenn ein Vielfaches des Schlüsselwortes dazwischen passt. Man sucht im Geheimtext sich wiederholende Zeichenfolgen und vermutet, dass deren Abstand ein Vielfaches der Schlüsselwortlänge ist. Wie vorhin gesehen bei:
| V | E | N | U | S | V | E | N | U | S | ... |
|---|---|---|---|---|---|---|---|---|---|---|
| e | i | n | ||||||||
W |
D |
R |
| ... | V | E | N | U | S | V | E | N | U | S |
|---|---|---|---|---|---|---|---|---|---|---|
| e | i | n | e | i | n | |||||
| Z | M | A | W |
D |
R |
UEQPC VCKAH VNRZU RNLAO KIRVG JTDVR VRICV IDLMY IYSBC COJQS ZNYMB VDLOK FSLMW EFRZA VIQMF JTDIH CIFPS EBXMF FTDMH ZGNMW KAXAU VUHJH NUULS VSJIP JCKTI VSVMZ JENZS KAHZS UIHQV IBXMF FIPLC XEQXO CAVBV RTWMB LNGNI VRLPF VTDMH ZGNMW KRXVR QEKVR LKDBS EIPUC EAWJS BAPMB VSZCF UEGIT LEUOS JOUOH UAVAG ZEZIS YRHVR ZHUMF RREMW KULKV KGHAH FEUBK LRGMB JIHLI IFWMB ZHUMP LEUWG RBHZO LCKCW THWDS ILDAG VNEMJ FRVQS VIQMU VSWMZ CTHII WGDJS XEOWS JTKIH KEQ
| Folge | Abstand | Primfaktorzerlegung |
|---|---|---|
KAH |
128 | |
JTD |
50 | |
VIQM |
265 | |
TDMHZGNMWK |
90 | |
MWK |
75 |
Man bildet nun den grössten gemeinsamen Teiler der Abstandszahlen. In obigen Beispiel wäre dieser , d.h. die Schlüsselwortlänge eins. Dies scheidet aber aus, weil der Klartext dann monoalphabetisch verschlüsselt sein müsste. Nimmt man aber an, dass KAH nur zufällig mehrmals auftritt, dann ist der gcd der Abstände gleich . Das legt die Schlüsselwortlänge fünf nahe. Es könnte aber auch sein, dass sich VIQM und MWK zufällig wiederholen, dann wäre : die Schlüsselwortlänge ist höchstwahrscheinlich fünf, könnte aber auch zehn sein.
Der Friedmann Test
Die Idee des Friedmanntests ist folgende: Je länger das Schlüsselwort ist, desto regelmässiger sind die Häufigkeiten verteilt, desto kleiner bzw. näher liegt an . Man nimmt nun an, die Schlüsselwortlänge sei und schreibt den Geheimtext in Spalten:
Die Wahrscheinlichkeit, das zwei beliebige Buchstaben in einer Spalte gleich sind, ist (Klartextkappa); die Buchstaben einer Spalte sind ja dann monoalphabetisch verschlüsselt. Die Wahrscheinlichkeit, dass zwei Buchstaben aus verschiedenen Spalten gleich sind, ist , da über verschiedene Alphabete verschlüsselt wurde. Die Wahrscheinlichkeit, dass zwei beliebige Buchstaben des Geheimtextes gleich sind, ist dann
Da und leicht bestimmt werden können, lässt sich die Schlüsselwortlänge bestimmen, indem man nach auflöst:
Für Deutsch ist und daher in Prozenten:
Im oben aufgeführten Beispiel ist , woraus folgt. Kasiski- und Friedmann-Test legen also die Schlüsselwortlänge nahe.
Die Bestimmung des Schlüsselworts
Da wir die Schlüsselwortlänge vermuten, kann das Schlüsselwort gefunden werden. Ist die Länge des Schlüsselwortes gleich , schreibt man den Text wie folgt in Spalten:
Der springende Punkt ist: jede Spalte wurde monoalphabetisch verschlüsselt. Es genügt also, das e zu finden, um herauszukriegen mit welchem Alphabet die entsprechende Spalte verschlüsselt wurde. Man entnimmt diese es der Tabelle. kommentiert
| Spalte | häufigster Buchstabe | Schlüsselwortbuchstabe |
|---|---|---|
| 1 | V e |
R |
| 2 | E e |
A |
| 3 | H,D,U e |
D,Z,Q |
| 4 | N e |
I |
| 5 | S e |
O |
Das Schlüsselwort lautet also RADIO. Nun kann der gesamte Geheimtext dechiffriert werden.
Erkläre, wie der Kasiski- und der Friedmann-Test funktionieren.
Solution
Beide Tests funktionieren umso besser, je mehr Ciphertext zur Verfügung steht. Beim Kasiski-Test sucht man sich wiederholende Ciphertext-Schnippsel, da in diesem Fall vermutlich ein identischer Wortteil mit demselben Schlüsselteil chiffriert wurde. Dadurch kann man die Schlüsselwortlänge abschätzen, da in solchen Fällen der Abstand ein Vielfaches der Schlüsselwortlänge betragen muss. Ein gemeinsamer Teiler dieser Abstände könnte somit mit der Schlüsselwortlänge korrelieren.
Beim Friedmann-Test schätzt man die Schlüsselwortlänge durch folgende Überlegungen nach oben ab. Zuerst misst man den Koinzidenzindex des Ciphertextes, . Setzt man für die vermutete Schlüsselwortlänge an und bricht die Cipher nach jeweils Zeichen um, so sind im Falle der korrekten Schlüsselwortlänge die einzelnen Spalten monoalphabetisch verschlüsselt. Somit ist die Wahrscheinlichkeit, dass zwei zufällig ausgewählte Buchstaben in der gleichen Spalte stehen und folglich die Wahrscheinlichkeit, dass zwei zufällig gewählte Buchstaben in verschiedenen Zeilen stehen. Der Koinzidenzindex des Ciphertextes setzt sich also aus einem eher zufälligen und einem durch das Schlüsselwort gegebenen Teil, der denselben Koinzidenzindex wie die Verfassersprache haben muss, zusammen:
wobei , die Anzahl Spalten, den Koinzidenzindex der Verfassersprache und den Koinzidenzindex einer Randomsprache bezeichnen - Eine Randomsprache definiere ich hier als eine Kunstsprache, bei der jedes Zeichen zufällig ausgewählt wird. Der Koinzidenzindex dieser Sprache ist offensichtlich . Es folgt nach Multiplikation mit und umsortieren
und weiter
Damit ist die Schlüsselwortlänge nach oben abgeschätzt.
Schreibe in Python einen kurzen Codeschnippsel, der eine Message (in Grossbuchstaben) mit einem Keyword (in Kleinbuchstaben) nach Vigenère verschlüsselt.
Solution
Ein Beispiel ist:
cipher = ""
message = "KASISKI FRIEDMANN TEST" # message in Grossbuchstaben, darf Luecken enthalten
key = "vigenere" # Schluessel in Kleinbuchstaben
keylength = len(key)
caps = 0
for k in range(len(message)):
if message[k] == " ":
cipher += " "
caps = caps + 1
else:
kshift = (k + caps) % keylength
shift = ord(key[kshift]) - 97
cipher += chr((ord(message[k]) - 65 + shift) % 26 + 65)
print(cipher)
Ein weiteres Beispiel
Gegeben sei folgender Text:
KWCSS GXYUT ZBZMU CMRFY JZZNZ HMEBS WMEXA ZMZAW
IATBS ABUUK NMZHT ZAKCE HBVLY ZPVCE OMONT PKYML
VJVGW CZRFK ZQEYF FTRLL ZFKVM XPJNS WMEXS MAKYD
GMEES IVRVW MURHV VZWHA XPKPW MOVMK ZVUUK NLVLY
ZPVCE OMONV ZVBFS MBVRL ZQEXW PBZAT ZAKCE HMEGM
NAQOE WMZMH DMCCK OMJHA XPKGG ZOICU CLRMK DMVCF
ZURFY JZZNZ HCJXW MOVBW DUKYP OJLWZ NBRVW IQDED
VZKYP OMZHE VTVOF YMZHS ILVLW NURFK ZVKMH MQTBL
JPEYV VAJYK YIWOW MMZHW MMXYD BQSNV DMUYE ZUGZS
ZVXYJ BMEUM NIXNO VVEYJ ZCEXO VVEYJ NMENK KZZWZ
OMJCK OMENK XPVCV ZVUXS NARHB ZLVLK OMCFW YMJEJ
TXKIY MIDGK YMIMU CTLYK NMCYA ILVOL DOUYF FTRLL
ZFKVM XPJNS WMETM EMUYE BMYYA HBVRL WCTBK OISYF
AMJND ZOK
Wir führen zunächst den Kasiski-Test durch. Dazu suchen wir im Text nach gleichen Textfolgen:
UEQPC VCKAH VNRZU RNLAO KIRVG JTDVR VRICV IDLMY
IYSBC COJQS ZNYMB VDLOK FSLMW EFRZA VIQMF JTDIH
CIFPS EBXMF FTDMH ZGNMW KAXAU VUHJH NUULS VSJIP
JCKTI VSVMZ JENZS KAHZS UIHQV IBXMF FIPLC XEQXO
CAVBV RTWMB LNGNI VRLPF VTDMH ZGNMW KRXVR QEKVR
LKDBS EIPUC EAWJS BAPMB VSZCF UEGIT LEUOS JOUOH
UAVAG ZEZIS YRHVR ZHUMF RRMW KULKV KGHAH FEUBK
LRGMB JIHLI IFWMB ZHUMP LEUWG RBHZO LCKCW THWDS
ILDAG VNEMJ FRVQS VIQMU VSWMZ CTHII WGDJS XEOWS
JTKIH KEQ
| Folge | Abstand | Primfaktorzerlegung |
|---|---|---|
SWMEX |
80 | 2² · 5 |
UUK |
105 | 3 · 5 · 7 |
OMO |
95 | 5 · 19 |
YFFTRLLZFKVMXPJNSWME |
380 | 2² · 5 · 19 |
ZVU |
265 | 5 · 53 |
Wir bilden nun den grössten gemeinsamen Teiler der Abstandszahlen. Dieser Gcd ist , d.h. die Schlüsselwortlänge hat vermutlich die Länge fünf.
Wir führen jetzt den Friedmann-Test durch. Dazu bestimmen wir die Anzahl der Buchstaben und ihre absolute Häufigkeit. In unserem Fall ist und
| A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 | 17 | 20 | 11 | 27 | 15 | 8 | 15 | 12 | 17 | 30 | 21 | 51 |
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20 | 22 | 13 | 6 | 13 | 14 | 18 | 39 | 22 | 16 | 29 | 43 |
Damit können wir die Formel
anwenden und erhalten
Nun ist es möglich, die Schlüsselwortlänge zu bestimmen:
Wir vermuten also eine Schlüsselwortlänge von drei. Der Vergleich der beiden Methoden zeigt, dass kein eindeutiges Resultat entsteht. Wir probieren zunächst die Vermutung der Schlüsselwortlänge fünf, da der Kasiski-Test eindeutig funktionierte. Dazu schreiben wir den Text in Spalten zu je fünf Zeichen.
KWCSS …
GXYUT …
ZBZMU …
CMRFY …
JZZNZ …
Wir suchen nun in jeder Spalte den häufigsten Buchstaben und nehmen an, dass dieser für e steht.
| Spalte | häufigster Buchstabe | Schlüsselwortbuchstabe |
|---|---|---|
| 1 | Z → e |
V |
| 2 | M → e |
I |
| 3 | V → e |
R |
| 4 | Y → e |
U |
| 5 | W, K → e |
S, G |
Wie unschwer zu sehen ist, lautet das Schlüsselwort vermutlich VIRUS. Wir können den restlichen Text dechiffrieren.
Wir entschlüsseln und erhalten als Resultat:
Polyalphabetische Algorithmen haben die Eigenschaft, dass ein bestimmter Geheimtextbuchstabe mehr als einen Klartextbuchstaben darstellen kann. Aber man darf nicht vergessen, dass der Geheimtext den Klartext eindeutig bestimmen muss. Zum Beispiel ist es nicht moeglich, das sie einem Algorithmus der Geheimtextbuchstaben im Klartext einmal
eund ein anderes malsentspricht, ohne dass es dafuer eine Regel gibt, die dem Empfaenger genau sagt, wann ereund wann ersentspricht. Es ist entscheidend, dass an jeder Stelle des Kryptogramms der Schluessel eindeutig den Klartextbuchstaben zu jedem Geheimtextbuchstaben festlegt.
Entschlüsseln Sie folgendende Vigenère-Cipher:
PEK MDIXKYAGU GNW KQR DHEILRU TXZF KHLZNXU GNTITAXUSIZ CANXPZAGKQR XPZGXZQTSA IEKKQN YBQR ULUDX AQSMZ USM LE VHU HOKAQIE DQNG KQR VPBHXYFEQA XAGN USM TAEZSUCAZF WXUUGX MQHELD EGATAXSF UGK SRTTYAMPWAEPECA RMTTZFRHWTAE PET SBPEF ZBIXSF DBL XAXUSE WLE GXDMEASFEG ZOHEBQSLLXWHYFEL BZD TBOH WLESXU CUTSUTTLF EBUQ WBJTTBNQ RHSXE PPQ MTU EIVO XEBJTT WLZKXU WAGU RAESE SBL PIXZQN KLXAMPH KNYLEG AQXM OMBXU WNTJWEG RAEGUQN LV SRTAGLBLDE BJT HXYLLBJT
Solution
Der Schlüssel ist math. Damit lautet der Text:
DER FRIEDMANN UND DER KASISKI TEST KOENNEN UNABHAENGIG VONEINANDER EINGESETZT WERDEN FUER BEIDE TESTS IST ES VON VORTEIL WENN DER CIPHERTEXT LANG IST MOEGLICHST WENIGE FEHLER ENTHAELT UND GRAMMATIKALISCH KATASTROPHAL IST ZUDEM SPIELT DIE LAENGE DES GEWAEHLTEN SCHLUESSELWORTES UND AUCH DESSEN QUALITAET EINE WICHTIGE ROLLE WIE MAN SICH LEICHT DENKEN KANN FALLS SIE DIESEN RELATIV KURZEN TEXT HABEN KNACKEN KOENNEN SO GRATULIERE ICH HERZLICH