Krypto

Einführung §

Die Enigma-Chiffre war eine Feldchiffre, die von den Deutschen während des Zweiten Weltkriegs verwendet wurde. Die Enigma ist eine der bekannteren historischen Verschlüsselungsmaschinen, und der Name bezieht sich eigentlich auf eine Reihe von ähnlichen Chiffriermaschinen. Die erste Enigma-Maschine wurde von einem deutschen Ingenieur namens Arthur Scherbius am Ende des Ersten Weltkriegs erfunden. Sie wurde ab den frühen 1920er Jahren kommerziell genutzt und auch von den militärischen und staatlichen Diensten einer Reihe von Nationen übernommen – am bekanntesten ist sie von Nazi-Deutschland vor und während des Zweiten Weltkriegs. Es wurden verschiedene Modelle der Enigma hergestellt, aber das deutsche Militärmodell, die Wehrmachts-Enigma, ist die Version, über die am häufigsten gesprochen wird.

Wenn Sie einige Ihrer eigenen Enigma-Nachrichten verschlüsseln möchten, sehen Sie sich das Javascript-Beispiel an.

Der Algorithmus §

In diesem Abschnitt wird über die Enigma I alias Wehrmachts-Enigma gesprochen, andere Varianten sind ähnlich in der Funktionsweise. Der ‚Schlüssel‘ für die Enigma besteht aus mehreren Elementen:

  1. Die Rotoren und ihre Reihenfolge
  2. Die Startpositionen der Rotoren
  3. Die Ringstellung
  4. Steckerverbindungen

Für Informationen über die Verfahren, die von den Deutschen während des Zweiten Weltkriegs beim Senden von Engima-Nachrichten verwendet wurden, einschließlich der Einstellung der Indikatoren, siehe diese Beschreibung.

Die Rotoren §

Angenommen, unsere Rotoren sind I,II,III, die sich von links nach rechts bewegen, und wir versuchen, den Buchstaben „A“ zu verschlüsseln. Da sich die Rotoren I, II und III von links nach rechts bewegen, durchläuft das Zeichen A zunächst den Rotor III. Jeder Rotor wendet eine einfache Ersetzungsoperation an. Die Ersetzungstabelle für Rotor III ist unten zu sehen:

ABCDEFGHIJKLMNOPQRSTUVWXYZBDFHJLCPRTXVZNYEIWGAKMUSQO

B wird durch D ersetzt, C durch F usw. Nachdem der Buchstabe „A“ den Rotor durchlaufen hat, kommt er als „B“ heraus. Der Buchstabe „B“ wird nun durch den Rotor II eingegeben, wo er durch „J“ ersetzt wird usw. Dies lässt sich am besten anhand einer Tabelle veranschaulichen (eine vollständige Beschreibung der Verdrahtung der einzelnen Rotoren ist auf dieser Wikipedia-Seite zu finden):

III II I Reflektor inv(I) inv(II) inv(III)
A -> B B -> J J -> Z Z -> T T -> L L -> K K -> U

Nachdem der Brief die Rotoren III,II,I durchlaufen hat, trifft er auf den Reflektor und erfährt eine weitere einfache Substitution. Nachdem der Buchstabe aus dem Reflektor herausgekommen ist, wird er in umgekehrter Richtung durch die Rotoren zurückgeschickt (d.h. es wird die umgekehrte Substitution angewandt), so dass am Ende, nachdem der verschlüsselte Buchstabe aus Rotor III herausgekommen ist, der Buchstabe U übrig bleibt. Wenn die Startpositionen der Rotoren ‚FEQ‘ sind, dann werden sie zuerst auf ‚FER‘ erhöht, bevor der erste Buchstabe verschlüsselt wird.

Inkrementieren der Rotoren §

Ein häufiger Fehler bei der Implementierung des Rätsels ist die Annahme, dass die Rotoren wie ein normaler Kilometerzähler funktionieren, es gibt jedoch ein paar wichtige Unterschiede. Jeder Rotor hat eine Kerbe, die den Rotor links von ihm zum Schritt veranlasst. Rotor I bewirkt, dass der nächste Rotor beim Übergang von Q nach R einen Schritt macht, Rotor II beim Übergang von E nach F usw. Die Rotoren I bis V werden in der Wermacht-Enigma verwendet, später kamen weitere Rotoren hinzu, die zwei Kerben hatten.

I II III IV V VI VII VIII
Q E V J Z Z,M Z,M Z,M

Es gibt noch ein zusätzliches verwirrendes Detail, nämlich das des „doppelten Schrittes“. Wenn ein Rotor schreitet, schreitet auch der Rotor rechts von ihm. Dies wird nicht bemerkt, wenn der zweite Rotor tritt, da der erste Rotor bei jedem Tastendruck tritt. Wenn jedoch der 3. (linke) Rotor schreitet, wird auch der zweite Rotor in Bewegung gesetzt. Dies bedeutet, dass die Periode der Maschine nicht 26x26x26 ist, sondern nur 26x25x26.

Die Ringstellung §

Die Ringstellung wird im Allgemeinen als eine Zeichenkette mit drei Buchstaben angegeben, z.B. ‚FAM‘ (oder alternativ als Zahlen zwischen 1 und 26, die die Buchstaben darstellen). In der vorangegangenen Diskussion bin ich davon ausgegangen, dass die einfache Substitutions-Chiffre eines jeden Rotors festgelegt war. Die Ringstellung bietet die Möglichkeit, die Substitutionsziffer wie folgt zu verschieben. Mit einer Ringstellung von ‚A‘ (oder 1) sieht die Substitution von Rotor I wie folgt aus:

ABCDEFGHIJKLMNOPQRSTUVWXYZEKMFLGDQVZNTOWYHXUSPAIBRCJ

Mit einer Ringstellung von ‚B‘ (oder 2) sieht die Substitution von Rotor I wie folgt aus:

ZABCDEFGHIJKLMNOPQRSTUVWXYEKMFLGDQVZNTOWYHXUSPAIBRCJ

Die Steckerverbindungen §

Die Steckerverbindungen sind eine zusätzliche Sicherheitsschicht, die aus 13 Drähten besteht, die in Buchsen an der Vorderseite der Enigma-Maschine eingesteckt werden.Jeder Draht verbindet 2 Buchstaben, z.B. P mit O. Diese Paarungen sind als Teil des Schlüsselmaterials festgelegt. Wenn ein Buchstabe getippt wird, wird er, bevor er in den ersten Rotor eintritt, entsprechend der Steckerleiste ersetzt, und nachdem der Buchstabe herauskommt, wird er erneut durch die Steckerleiste ersetzt, bevor er ausgegeben wird. Ein Beispiel für ein Plugboard ist wie folgt: PO ML IU KJ NH YT GB VF RE AC (Das bedeutet, dass P und O vertauscht werden, M und L werden vertauscht usw.).

Wenn wir das obige Beispiel verwenden, bei dem der Buchstabe ‚A‘ mit den Rotoren I, II und III mit den Startpositionen AAA verschlüsselt wurde, hatten wir den Buchstaben A als ein U verschlüsselt. Wenn wir nun das Plugboard berücksichtigen, indem wir die Plugboard-Einstellungen im vorherigen Absatz verwenden, wird das ‚A‘ vor der Verschlüsselung zuerst in ein ‚C‘ übersetzt. Die Verschlüsselung wird wie üblich fortgesetzt, diesmal wird das ‚C‘ als ‚J‘ ausgegeben. Dieser Buchstabe wird dann wieder durch die Steckplatte geleitet und durch ein „K“ ersetzt. Jetzt haben wir also ein ‚A‘, das mit Hilfe des Plugboards als ‚K‘ verschlüsselt wird. Das Plugboard erhöht die Stärke der Enigma-Chiffre als Ganzes erheblich, mehr als es das Hinzufügen eines weiteren Rotors könnte.

Javascript Example §

Plaintext

key settings:
Ringeinstellungen:
Rotoren:
Steckbrett-Einstellungen:

Ciphertext

Andere Implementierungen §

Um eigene Nachrichten in Python zu verschlüsseln, kann man das Modul pycipher verwenden. Um es zu installieren, verwenden Sie pip install pycipher. Um Nachrichten mit der Enigma-Chiffre (oder einer anderen Chiffre, siehe hier für die Dokumentation) zu verschlüsseln, sehen Sie sich das Beispiel hier an.

Kryptoanalyse §

Für einige Codes zum automatischen Brechen von Enigma-Nachrichten siehe Kryptoanalyse von Enigma.

Viel Arbeit ist in das Brechen von Enigma geflossen, einige Methoden wie Rodding und Buttoning Up wurden während des Zweiten Weltkriegs verwendet, erfordern aber ‚cribs‘ oder bekannte Stücke von Klartext. Diese Methoden werden auf der Wikipedia-Seite besprochen.

Moderne Ansätze sind u.a. Jim Gilloglys Arbeit „Ciphertext only Cryptanalysis of the Enigma“. Ein Folgebrief, der einige Fehler in der Arbeit korrigiert, ist hier zu finden. Ein weiteres Papier, das auf Jim Gilloglys Papier aufbaut, ist „Applying Statistical Language Recognition Techniques in the Ciphertext only Cryptanalysis of Enigma“ von Heidi Williams. Eine weitere interessante Quelle ist The Cryptographic Mathematics of Enigma.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.