Vorhängeschloss

Bild: © PDPics / Pixabay (modifiziert)

Klassische ADFGVX Verschlüsselung

Lesezeit etwa 11 Minuten

Neulich bin ich im Internet auf einen Beitrag gestoßen, der eine klassische und wenig bekannte Verschlüsselungsmethode erwähnte: die ADFGVX Verschlüsselung. Hintergrund der Diskussion war die Frage, welche Verschlüsselung gewählt werden solle, wenn man nur Papier und Stift zur Verfügung habe. Als unter diesen Bedingungen zu Empfehlen wurde dann dieses Verschlüsselungserfahren empfohlen. Die ADFGVX Verschlüsselung ist eine symmetrische Verschlüsselung, so dass Sender und Empfänger das gleiche Passwort verwenden müssen. Nach dem heutigen Stand der Technik ist ein solcher Mechanismus längst überholt. Doch unter den gegebenen Rahmenbedingungen, dass die Verschlüsselung von Hand erfolgen muss, fallen langwierige und komplexe mathematische Primzahlberechnungen aus.

Die ADFGVX Methode bedient sich zweier Schritte und damit auch (mindestens) zweier Passwörter. Im ersten Schritt werden die Buchstaben des zu chifrierenden Textes durch ein Buchstabenpaar ersetzt und im zweiten Schritt eine Vertauschung (Permutation) der neuen Buchstaben vorgenommen.

Das Verschlüsselungsverfahren wurde bereits zu Beginn des verganenen Jahrhunderts so unter anderem während des ersten Weltkriegs eingesetzt. Die Übertragung von Nachrichten erfolgte über Funkt mit Morsezeichen. Um eine möglichst eindeutige Erkennbarkeit der einzelnen Buchstaben zu gewährleisten, wurden sechs Buchstaben im Morsealphabet gesucht, deren Zeichen sich gut unterscheiden ließen. Dies waren die dem Verfahren seinen Namen gebenden Buchstaben

  • A (.-)
  • D (-..)
  • F (.-..)
  • G (–.)
  • V (…-)
  • X (-..-)

Diese sechs Buchstaben werden als Zeilen- und Spaltenbeschriftung einer Tabelle verwendet, die damit 6cdot6=36 Felder beinhaltet, also genau ausreichend für die 26 Buchstaben des Alphabets und 10 Ziffern. Eine Vorgängerversion bestand nur aus den Buchstaben ADFGX und hatte damit nur 25 Felder für ausgewählte Buchstaben des Alphabets platz.

Das erste Kennwort wird nun beginnend im ersten freien Feld der Tabelle Buchstabe für Buchstabe eingetragen. Allerdings werden mehrfach vorkommende Buchstaben nur einmal verwendet. Die anderen Felder werden mit den restlichen Buchstaben des Alphabets in der Reihenfolge des Alphabets sowie den Ziffern 0 bis 9 gefüllt. Wählt man das Kennwort STRENG, ergibt sich die folgende Matrix:

/ A D F G V X
A s t r e n g
D a b c d f h
F i j k l m o
G p q u v w x
V y z 0 1 2 3
X 4 5 6 7 8 9

Die zu verschlüsselnde Botschaft wird nun dem Cäsar Code entsprechend Zeichen für Zeichen durch die Koordinaten des jeweiligen Buchstabens, bzw. der jeweiligen Zahl ersetzt. Aus einem “A” wird nach der Tabelle in diesem Beispiel nun ein “DA”, aus der Ziffer 1 ein “VG”.

Die codierte Nachricht “Hallo Welt” lautet nach dieser Tabelle nun “DX DA FG FG FX GV AG FG AD”.

Die eigentliche Verschlüsselung erfolgt nun im zweiten Schritt. Hierzu wird ein weiteres Kennwort benötigt, das idealerweise auch keine mehrfach vorkommenden Zeichen beinhaltet. Als Beispiel verwenden wir hier als zweites Kennwort “GEHEIM”. Im gewählten Kennwort taucht der Buchstabe “E” zweifach auf, so dass das zweite Vorkommen gestrichen wird und nun das Kennwort “GEHIM” verwendet wird.

Die Buchstaben aus dem ersten Schritt der ADFGVX Methode werden nun zeilenweise unter die Buchstaben des zweiten Kennworts geschrieben. Alle Spalten sollten gleich lang sein. Ist dies nicht der Fall, werden zufällige Buchstaben aus der Menge “ADFGVX” angefügt. Es empfielt sich dabei die Nachricht in der Art zu erweitern, dass die hinzugefügten Zeichen die Botschaft nicht verfälschen und eindeutig als Füllzeichen erkannt werden können. Für dieses Beispiel wird die Nachricht um die Ziffer 4, also das Buchstabenpaar “XA” erweitert. Dies sieht dann in etwa wie folgt aus:

GEHIM
---------
DXDAF
GFGFX
GVAGF
GADXA

Diese Spalten werden nun so vertauscht, dass die Buchstaben des Kennworts alphabetisch sortiert sind. In diesem Beispiel sieht man sogleich, dass das gewählte Passwort “GEHEIM” wenig gut geeignet ist, denn die Buchstaben in dem Wort sind schon fast alphabetisch sortiert und es müssen nur zwei Spalten vertauscht werden. Eine bessere Wahl wäre “VERTRAULICH”, also “VERTAULICH” gewesen, welches sortiert “ACEHILRTUV” lautet und deutlich mehr Vertauschungen erfordert.
EGHIM
---------
XDDAF
FGGFX
VGAGF
AGDXA

Nach der Spaltenvertauschung ist die Nachricht final verschlüsselt. Um einem höheren Sicherheitsstandard zu genügen, kann die verschlüsselte Nachricht nun durch Wiederholung des zweiten Schritts mit einem weiteren Passwort noch einmal codiert werden. Wähle ich nun das bereits diskutierte “VERTRAULICH” als drittes Passwort
VERTAULICH
-----------------
XDDAFFGGFX
VGAGFAGDXA

ergibt sich nach Sortierung
ACEHILRTUV
-----------------
FFDXGGDAFX
FXGADGAGAV

die verschlüsselte Botschaft “FFDXG GDAFX FXGAD GAGAV”.

Um die Botschaft nun wieder zu entschlüsseln ist der gesamte Weg rückwärts durchzuführen. Beginnend mit dem sortierten letzten Passwort werden die Zeichen des chiffrierten Texts unter die Buchstaben geschrieben, die Spalten dann wieder so sortiert, dass das Passwort lesbar wird. Dies wiederholt man mit den ggf. zusätzlich verwendeten Passwörtern, bis nur noch ein Passwort übrig ist. Dieses verwendet man wie im ersten Schritt beschrieben um die Matrix zu erstellen und kann dann die Botschaft zurückübersetzen.

Wem dieses Verfahren von Hand zu aufwändig ist, der kann das kleine Online-Tool zur ADFGVX Verschlüsselung verwenden.

Eine komplex verschlüsselte Botschaft ist im Folgenden gegeben:

DGVGD AFFVF GDXAA XADVG FFDAG DFFDA ADGGD GAAVF DAVFA VADDD AFAFF GDFFD FXVDX DFFGD 
XFFFG GFAFF GDADD DDXDF GVDVX DFFGD GADFF FDDFX FVDAD VDGVD DAGAF AFVAA DDFVG FAGDF 
GDVAF AAFXD FGDGV XDFFF FGDDA FFDAA GDXDX DXDGA VFVAF AAADG FADXF FDVDD XFFGA FDFXD 
DGVAA DFFFD DFDAF GXDAD VGDAV DXAFD AVGGF GFDFV AVXFD VDGVD DFADG FDFFD AVGFV AVFGA 
GADDF FAFXF DXFGA DGXDG GVADV AAXDD FFGDD ADDDV VAVFA VFDFA ADFGA DDFGD GFDFX FADDA 
VGDFD FDFAD GFGAV GFXDF DVFDD FVFGF DFDDX DAFVG GVDAX DAFDD VFFVD FDAAD XVDVV DVFXV 
AFFFG DDAGV DGVFX DADVF FVDFX ADFFA FGGDF FFDFD VVVDF VFXGD DGDAD FFAAV DDFVD DFFAG 
DDGDD AFGDV FFGVD AFXDF DGGVF DDVGG VFVAD VAAVF GAXDF VDFFF FGAAD ADDGA FFVVA XGADD 
VXVDD DADDV DXDDG FFGDV AAXGF FVDDA DDVFA FXDFV FGGFD FAAFD VDAVA FAVAD GFGFV DDDXD 
AVVDD DFADX FDVAA GFADD AVDAV DFDDD AXDGV GFDFV FVAAF VGDVF AFFFG VAFVX AXVGV FFGGA 
FFVFF DADDD FFFVF DVVGX VXDVA DFADD VDXDD FAAGV GVGDA FDADV DFVFA FFDDA AFXGV XDDDF 
GGFAD GDAFF DVFFD XVXDG GFGFD VADFA GDDDX DFDFA VGFDX FFDDV AADGF DDVFG FFDFV ADDGA 
FVVAG AFDDA GFDDF FFFDV FFFDV FXDDA DGFXF AFDVD FVVGF FGVFA ADADF XDDXV AFVFG AFGXD 
XFVAA ADFGF VFAGD DFXDF GVFGG DDFAD ADVFA GDFDG GDFAF VXFDF FDDDA AAXXF FAGVV VAGFD 
DGFDG DDDFV FXFAD FFDXG DAVAF FDGGD FAFAF AVAGG VDGDV AGFFA VAFFD DAFFD VVFVD GVDFX 
AXFAD ADGFG GDGDX FVGFG DFDDF DFDGF AXFFG FFFVX VDDFA GAVVA AFDAA FDDGV DDVVG FXAXD 
DDAFD DFAVD FGFVD DAVDV VXDFD FAXFD GDVDD GFAFG FGADD VFFXF DAVAD DDGFD FDGFV XDAFA 
AGFGF GADDF FVDFV FVGVV AFVFD GAFFG FAAGV AFFFF VVDAV FAAAX DGAFD DDVAA AGFFF ADFFV 
FFDFD FDAGX FFXFV DVAFG FVGGF AXADD DXFGD DDDAF GVFAF FFFAD DGDAD VAADF DGDFF VFDXA 
VGGGA DAFFF AVFXF DDVAG FFDVA ADVAG FDXFD DFFXG XVGFD DFFGG AFGDF AGXFG DDVGF FAFAD 
XFGAF DGAVF FFDGF GXVDV DFDFF FDFAF XFVFG DFADG DFXGX DFDDV DDDFF DGFFA FVDFF DGAXD 
DXGDF FDDDV FDFVX XDADV DFDFD FVDFA FGXGX DFDDX GDGDD FFFFG ADADF FFDAV DXVFF FDDGD 
FDAAA FDFFD GVAXD GDGAX FFFGV DAVDG VAFFD XDDFG ADXDF GFDVD FDGGD AAFVD DDDGF FAGFD 
VXFAA DDDFD FXDDA VGVGF DFVDD XAGFA VADFA AFFGF VVDFV FFGAF FDDGA DFFFG VVDVF FXDAF 
GXFFF DDDVG DDFFG DFFGX GFDDG ADGAF GAFFV FAAVV FDAFD XFFDD FDFAG DDAVD GFFDX DGAFD 
FGFAG AADXD FFFVD DXVFD GVAFG AGVFF AAFFD FAGDV VDFGD FFDFD GAGGD GDAVD ADFXF VGAAA 
VADFA AFAVV DDADD FVFFG GGXFD VGDDA VGXDF DVFXF VVGDA AVADD GAAFD ADFGF GAFDD AFFVV 
FVGFF AADVD AFGAX DFFVG FFAFG GXGDA DFGFD FFVDD DVFFD FFFGD FAAFG VAAVV FFGAX AVADA 
DDDDA AGDFD FFFAG DFDDV FFDGX GDFFD DDXGD VDAAX GVFDD AVAFD DDVAG GAVDF GFAFF VFADA 
AVVGD GDFGA AVDDV FXDGF AXFFD GAGDA VADAA FVFGF VFXFV DFGAV FDDVG DGAFA FVDXF FDAVF 
FAXAD DDAFV DDVDA GDFXD FVGFX ADAFG FGGDG DFDVF FXGFG XFDFF FDDAF DDFXF DGDGF VFDVF 
GDXGD DDFAA AFVVD DFADA VVAVF GFDDA DAVDF VDFGF GXVDF FFAAD DFVDD AADFG GDDFX VFFDD 
AFVDD GDDVF FXFDF VXFGA FVDFG GFAAA VDVDD FXDFG FGGFD FADFD ADDXA FFDAD GGADV FXDGG 
AFFDD GGDGD FDDFX FVAGF FFDAG DXFAD FVVXF DAAAV GVDFD AAVFF GGVFA DDFAD AVAFD FDDVX 
ADDGF

Zur Entschlüsselung ist als zweites bis fünftes Kennwort der aus vier einzelnen Worten bestehende Name eines großen deutschen Dichters erforderlich und als erstes Passwort die Bezeichnung eines geballten Körperteils, das auch zugleich der Titel desjenigen Werks ist, aus dem die hier verschlüsselte Botschaft entnommen wurde. Die Matrix wurde NICHT rückwärts befüllt und als Code kommt der ADFGVX Mechanismus zum Einsatz.

Als Vorstufe zu diesem Code kam die ADFGX Verschlüsselung zum Einsatz, die nach dem gleichen Verfahren funktioniert, allerdings nur eine 5×5 Matrix und damit nur 25 verschlüsselbare Zeichen erlaubt. Damit waren dann keine Ziffern codierbar und aus dem Alphabet musste ein Buchstabe (im deutschsprachigen Raum das “J”) gestrichen werden. Zahlen wurden dann als Text ausgeschrieben (13 = eins drei) und der fehlende Buchstabe durch einen anderen ersetzt (“I” statt “J”).

Diskussion

Natürlich hat diese Verschlüsselung einige Schwächen. Zu den geringeren Übeln des klassischen Verfahrens zählen die folgenden:

  • Die Nachrichtenlänge verdoppelt sich (mindestens) – kann ausgemerzt werden, indem der klassische Cäsar Code im ersten Schritt verwendet wird und jedes Zeichen auf ein anderes einzelnes Zeichen abgebildet wird. Allerdings ist bei dem Cäsar Code der ganze Code erforderlich und nicht einfach nur ein leicht zu merkendes Passwort.
  • Die Zahl der möglichen Zeichen ist auf 36 begrenzt – kann durch Wahl einer größeren Matrix oder durch den klassischen Cäsar Code beseitigt werden
  • Die Übersetzungstabelle ist extrem schwach und kann durch stochastische Verfahren leicht geknackt werden. Die Hauptlast der Verschlüsselung liegt damit in den nachfolgenden Spaltenvertauschungen.

Problematischer sind dann jedoch die folgenden Aspekte:

  • Die Durchmischung der Übersetzungstabelle ist sehr schlecht.
    • Die Wahrscheinlichkeit für die weiter hinten stehenden Buchstaben und Ziffern immer das gleiche Buchstabentupel zu erhalten ist sehr hoch. – Allerdings wird dieses Manko durch die späteren Verwürfelungen ausgeglichen. Eine Alternative wäre auch hier eine beliebig erstellte Matrix, die dann jedoch nicht mit einem einfachen Passwort reproduzierbar wäre. Die historische Lösung hierzu ist jedoch recht trivial und durchaus passabel: Nach dem ersten Passwort wird die Matrix mit den restlichen Buchstaben rückwärts (also von “Z” nach “A”) befüllt.
    • Die Wahrscheinlichkeit für häufige Buchstaben (ENIRAST) im vorderen Bereich anzutreffen ist sehr hoch. – Lösungsansatz wie oben.
  • Die Permutation ist bei gut gewählten Passwörtern (vergleiche GEHEIM und VERTRAULICH) passabel. Lange Passwörter finden sich in Wörterbüchern eher selten, kurze hingegen zahlreich. Eine unglückliche Kombination um Brute Force Angriffe zu realisieren. – Die Lösung hier ist die Verwendung von mehreren, unterschiedlich langen und nicht im Kontext zueinander stehenden Passwörtern. Statt der Passwortkombination “STRENG GEHEIM” verwendet man also besser “TANZKAPELLE ERDWAERME PFEFFER”.

Für die Übersetzungstabelle gibt es theoretisch 36! = 3.72cdot10^{41}  (das ist eine Zahl mit 41 Nullen) Möglichkeiten. Werden nur reguläre Wörter aus dem Wörterbuch zur Generierung verwendet, bleibt es allerdings “nur” bei rund 5,3 Millionen (eine Zahl mit 6 Nullen) gemäß dem angenommenen Bestand an deutschen Wörtern. (Faktisch ist der Wert allerdings auch nicht korrekt, denn dadurch, dass doppelte Buchstaben entfallen, reduziert sich die Zahl (RENTE = RENTNER = RENTEN = RENTENTRENNER), durch Wortneuschöpfungen (KUPFERWIND, FASANENKLINGEL, etc.) kann sie sich dann jedoch wieder erhöhen.) Verwendet man auch nichtlexikalische Kennwörter, so wie es für gute Passwörter vorgesehen ist, das Potenzial wiederum fast beliebig hoch.

Auch für das zweite und alle weiteren Kennwörter gelten die gleichen Regeln wie für das erste. Die Länge ist hier theoretisch unbegrenzt, wenn man sich auf die Sortierreihenfolge der Zeichenkombinationen einigt. (Ist alpha<a und 1<Z?)

Geht man für die Übersetzungstabelle von 5 Millionen Möglichkeiten aus, erhöht sich die Zahl der Kombinationen mit dem zweiten Kennwort (ebenfalls 5 Millionen Möglichkeiten bei Nutzung von sprechenden Passwörtern) auf theoretisch 5 Millionen * 5 Millionen, also 25 Billionen (eine 25 mit 12 Nullen). Jedes weitere Passwort hängt an diese Zahl weitere 6 Nullen an (um nur die Dimension zu klären.) Wichtig dabei ist allerdings, dass die Kennwörter sich von der Länge her unterscheiden und keine ganzzahligen Vielfachen voneinander darstellen, andernfalls erhöht sich die Komplexität NICHT.

Für die Vorgabe, dass man den Code von Hand berechnen und dechiffrieren können soll, ist der ADFGVX Code jedoch (bei Einsatz von zwei oder mehr Verwürflungen) wirklich gut. Verwendet man dazu eher kurze Nachrichten und wechselt regelmäßig die Passwörter, bzw. nutzt diese nur selten, so ist der Code wohl – auch für topmoderne Geheimdienste – kaum zu knacken. Klassische technische Angriffsmöglichkeiten für den Code sind die üblichen Verdächtigen:

  • Brute Force (Durchprobieren aller Kombinationen – dank heutiger EDV nicht mehr ungewöhnlich komliziert)
  • Suche nach bekannten/wiederkehrenden Textfragmenten einer verschlüsselten Botschaft (Namen, Wetterdaten, Floskeln)
  • Ausnutzung statistischer Mittel bei einer großen Anzahl an gleichartig verschlüsselter Nachrichten

Gerade mit letzter Methode wurde nicht nur im zweiten Weltkrieg der deutlich komplexere Enigma Code geknackt, sondern auch 1918 schon der ADFGX-Code der Deutschen. Tatsächlich gibt es aber auch heute noch einige verschlüsselte Botschaften aus Zeiten des ersten Weltkriegs und spanischen Bürgerkriegs, die noch nicht dechiffriert werden konnten.

Schreibe einen Kommentar

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.