Enigma 2

 

Eigenschaften:

Dieses Programm basiert auf einer der Deutschen Wehrmachts-Enigma angelehnten Verschlüsselung. Details über die Methode der elektromechanischen Verschlüsselung dieser legendären Maschine finden Sie an diversen Stellen im Internet offen zugänglich, unter anderem bei Wikipedia. Eine kleine Prinzipbeschreibung habe ich ebenfalls erstellt.

Umgesetzte Eigenschaften des Originalkonzeptes:
- Nutzung von einer bis vier gleicher oder verschiedener Walzen.
- Einstellung einer beliebigen Anfangsstellung jeder Walze.
- Acht verschiedene historisch "verdrahtete" Walzen verfügbar (I, II, III, IV, V, VI, VII, VIII).
- Drei verschiedene historisch "verdrahtete" Umkehrwalzen verfügbar (A, B, C).

Gegenüber dem Originalkonzept vernachlässigt wurden:
- Doppelte Weiterschaltung von Walze 2.
- Steckerbrett.

Zusätzliche Optionen, die über das Originalkonzept hinausgehen:
- Nutzung des Clipboards zum Austausch von Texten mit externen Anwendungen.
- Möglichkeit, Texte im erweiterten ASCII-Satz (256 Zeichen) so automatisch umkodieren zu können, damit sie Enigma-kompatibel verschlüsselt werden können. Somit ist auf Basis des rein alphabetischen Zeichensatzes der Enigma der volle ASCII-Code verwendbar. Ein ASCII-Zeichen verteilt sich hierbei auf zwei Enigma-Zeichen (Buchstaben A-Z).

 

Bedienungsanleitung:

Für die Anleitung setze ich voraus, dass dem Nutzer das Konzept der Enigma ausreichend bekannt ist. Eine Beschreibung der Hintergrundfunktionen der Software werde ich hier nicht geben können.

Es gilt: einfach ausprobieren!

Download:

Laden Sie sich den ZIP-Container mit der EXE-Datei herunter: Win32-Enigma2 (544KB)
Entpacken Sie das Archiv.

Programmstart:

Doppelklicken Sie auf die Datei "Enigma2.exe".

Sie erhalten folgenden Eingangsbildschirm:

Es sind bereits ein Satz üblicher Betriebsparameter voreingestellt, namentlich die Walzen I, II und III jeweils in Anfangsstellung A sowie Umkehrwalze A. Somit können Sie gleich mit der Texteingabe beginnen. Die Anfangsstellungen (Walzenstellungen) werden häufig auch mit Zahlen zwischen 01 und 26 bezeichnet, welche aber nichts anderes darstellen als die Buchstaben A bis Z. Auf den Enigmas gab es eine entsprechende Zuordnungstabelle:

A B C D E F G ... Y Z
01 02 03 04 05 06 07 ... 25 26

Für die Entschlüsselung einer Geheimnachricht waren also folgende Angaben notwendig:

Welche Walzen in welcher Position?
Beispiel: IV, VI, II
Welche Umkehrwalze?
Beispiel: B
Welche Anfangsstellungen?
Beispiel: 16, 01, 24

Im Programm Enigma2 nimmt man diese Einstellungen vor, indem man die Maschineneinstellungen wie folgt vornimmt:
Kodierwalzen -> Walze 1 = IV
Kodierwalzen -> Walze 2 = VI
Kodierwalzen -> Walze 3 = II
Anfangsstellung -> Walze 1 = 16 (entsprechend Buchstabe P)
Anfangsstellung -> Walze 2 = 01 (entsprechend Buchstabe A)
Anfangsstellung -> Walze 3 = 24 (entsprechend Buchstabe X)
Umkehrwalze = B

Damit sind sowohl Kodierung als auch Dekodierung eindeutig festgelegt.

Die Anordnung der Walzenfelder entspricht ab Software 1.1 der physischen Anordnung in der Maschine!

 

Tutorial 1 - Verschlüsselung in der Enigma-Methode

Die Enigma arbeitet grundlegend nur mit den 26 Großbuchstaben des Alphabets: A,  B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y und Z. Als Trennzeichen zwischen Worten wurde anstelle des Leerzeichens beispielsweise ein X gesetzt, Ziffern wurden als Worte ausgeschrieben, Sonderzeichen gab es gar nicht. Dies war aber für den durchschlagenden Erfolg der Maschine kein Hindernis.

Versuchen Sie es doch selbst!

Geben Sie in das Feld "Eingabe Textdaten Klartext" folgenden Text ein:

UXFUENFXNULLFUENFXFEINDFAHRTXZEHNXUHRXOPERATIONXAUFXGELEITZUGXPLANQUADRATXEINSXEINSXACHT

( soll heißen "U505 Feindfahrt 10 Uhr Operation auf Gleitzug Planquadrat 118")

Drücken Sie nun den Knopf "Enigma!".

Wie Sie sehen können, ist der von Ihnen eingegebene Text bereits verschlüsselt worden. Im Ausgabefeld "A-Z (de)kodiert" ist der verschlüsselte Text abgepackt in Fünferblöcke verteilt auf mehrere Zeilen zu finden. Dies erhöht die Lesbarkeit für den später erfolgenden Dekodiervorgang, da bereits ein Zeichen zu viel oder zu wenig jede weitere Kodierung unmöglich macht.

Wollen Sie diesen Text gleich sichern oder weiterversenden, drücken Sie einfach unter dem Ausgabefenster die Taste "M+", der Text landet dann in der Windows-Zwischenablage und kann mit vielen anderen Programmen in Dokumente eingefügt und dort weiterverwendet werden.

Jetzt interessiert Sie sicher, ob der Text denn auch korrekt verschlüsselt wurde, also sich wieder vollständig dekodieren lässt?

Kein Problem!

Drücken Sie "M+" unter dem Ausgabefeld und "MR" unter dem Feld "Eingabe Textdaten Klartext". Und schon ist der kodierte Text als Eingabetext ohne neues Eintippen an der richtigen Stelle gelandet, um einen Dekodierversuch zu starten. Wenn Sie gut aufgepasst haben, sollten Sie bemerken, dass die Leerzeichen und Zeilenumbrüche dabei wieder verschwunden sind. Im Eingabefeld dürfen ja nur Großbuchstaben eingegeben werden, da sonst die Kodierung nicht funktioniert.

Drücken Sie jetzt erneut den Knopf "Enigma!".

Im Ausgangsfeld steht bereits wieder der ursprünglich eingegebene Text bereit, allerdings ebenfalls in Fünferblöcke aufgeteilt, was hier aber nicht mehr unbedingt notwendig ist. Das kann man mit den Format-Tasten beheben, siehe Tutorial 3.

Sie sehen: die Kodierung der Enigma funktioniert in beide Richtungen gleich, sie ist umkehrbar. Mathematisch ausgedrückt liefert die Funktion der Funktion des Ausgangswertes wieder den Ausgangswert zurück. Dies war letztlich ein großer Schwachpunkt der Enigma im Zweiten Weltkrieg, aber keine Bange, die Verschlüsselung ist im normalen Rahmen kaum zu knacken, schon sehr sicher.

 

Tutorial 2 - Sie wollen mehr Zeichen?

Wie Sie bemerkt haben werden, wurde das erste Eingabefeld bisher gar nicht benutzt. Dies stellt eine Erweiterung dar, die die ursprüngliche Enigma niemals geleistet hatte. Mit dieser Erweiterung der Funktion kann die Enigma-Kodierung auch auf "richtige" Texte mit Sonderzeichen angewandt werden.

Geben Sie für einen Test dieser Funktionalität einen Volltext in das erste Feld "Eingabe/Ausgabe Volltext" ein, wenn Sie wollen, tippen Sie den aus folgendem Bildschirmausdruck ab. Sie werden bemerken, dass Sie im ersten Feld auch die Enter-Taste benutzen können, ganz im Gegensatz zu den anderen Feldern.

Nachdem Sie den Text eingegeben haben, drücken Sie die Taste "ASCII > A-Z"!

Sie haben nun Ihren Volltext in einen Enigma-Klartext umgewandelt, der nur aus den Buchstaben A-P besteht (Teilmenge des Enigma-Alphabets). Je zwei Buchstaben enthalten ein einkodiertes Zeichen des Volltextes, der kodierte Klartext ist also doppelt so lang wie der Volltext im ersten Textfeld.

Achtung, sie sehen noch NICHT die Enigma-Verschlüsselung, sondern nur eine veränderte, aber unverschlüsselte Darstellung Ihres eingegebenen Volltextes.

Drücken Sie jetzt wieder die Taste "Enigma!", um auch diesen Text zu verschlüsseln.

Im unteren Textfeld sehen Sie Ihren verschlüsselten Volltext, der ohne dieses Programm kaum wieder herzustellen ist. Diesen können Sie beispielsweise per E-Mail versenden, der Empfänger braucht dann zwei Dinge: dieses Programm und die Einstellungen aus dem Bereich "Maschinenparameter". Damit, und fast nur damit ist der Text nur wieder zurückzuwandeln.

Wie aber dekodiert man nun diesen Text wieder? Mit dem Klartext kann man ja nicht direkt etwas anfangen.

Also: Bringen Sie Ihren eben kodierten Text wieder nach oben in das Klartextfeld. Hierzu können Sie umständlich vorgehen, oder Sie drücken einfach unten "M+" und am Klartextfeld "MR". Einfach, oder? Oder noch einfacher: in diesem Fall drücken Sie nur auf "Kopiere ^", und der Text wird vom Ausgang in den Eingang zurückgeschaufelt, diese Taste dient einzig und allein der Eigenkontrolle auf korrekte Verschlüsselung.

In jedem Fall sind wieder alle Sonderzeichen verschwunden, der verschlüsselte Text bereit zur Weiterverarbeitung.

Und jetzt jagen wir diesen Text wieder durch die Enigma.

Drücken Sie "Enigma!".

Hmm, sieht irgendwie nicht sonderlich vielversprechend aus, was da nun bei rausgekommen ist, oder? Ich könnte Ihnen jetzt den Tip geben, etwas weiter oben nachzuschauen, dann würden Sie sehen, dass sie schon wieder den richtigen Klartext vorliegen haben. Aber wir machen das anders, denn auch für die Rückwandlung in Volltext haben wir eine automatische Funktion.

Drücken Sie bitte jetzt noch einmal die Taste "Kopiere ^", um das Ergebnis des letzten Verschlüsselungslaufs in das Klartextfeld zu bringen.

Und nun, anstatt wieder zu verschlüsseln, wandeln Sie den Klartext in Volltext um:

Drücken Sie dazu die Taste "A-Z > ASCII"!

Et voilà! Sie haben Ihren ursprünglichen Volltext wieder zurück, inklusive aller Sonderzeichen wie Zeilenumbrüche, Leerzeichen etc.
Und jetzt: üben üben üben, das Programm ist viel unkomplizierter, als es zuerst wirken mag.

 

Tutorial 3 - Die Format-Tasten (ab Version 1.1)

Ein kleine Ergänzung für den echten Enigma-Betrieb ohne Volltext ist ab der Version 1.1 in die Software eingepflegt: die Format-Tasten für das Ausgabefeld.

Tippen Sie für einen Versuche einen Klartext in das Feld "A-Z unkodiert" und drücken dann "Enigma!".

Um den Text wieder zu entschlüsseln, kopieren Sie ihn mittels Zwischenablage oder Taste "Kopieren ^" in das Eingabefeld hoch.

Drücken Sie jetzt erneut die Taste "Enigma!", um den Text zu entschlüsseln.

Der Text ist nun entschlüsselt, ist aber weder gut lesbar, noch ohne große manuelle Nacharbeitung zur weiteren Verarbeitung geeignet. Und genau dafür gibt es die beiden neuen Format-Tasten "+F" und "-F". Diese machen nichts weiter, als sämtliche Leerzeichen und Zeilenumbrüche zu entfernen ("-F") oder wieder einzufügen ("+F"). Probieren Sie es einmal aus und drücken Sie jetzt die Taste "-F".

Und schon ist der Text zusammenhängend geschrieben. Bei längeren Texten kann nun das manuelle Entfernen der Formatierungen entfallen.

So, das war die Einführung in den Enigma-Simulator. Möglicherweise wird das Programm noch um folgende Wunschfunktionen erweitert:
- Direkte Verschlüsselung beliebiger Dateien mittels Volltext-Funktion.
- Umsetzung des Steckerbrettes.
- Exakte Doppelschaltung der Walze 2.
- Unterstützung von Sonderwalzen (Griechenwalzen etc.).
- Abspeichern verschiedener Walzenkonfigurationen.

Mal sehen, was mir meine Zeit erlaubt, davon weiter umzusetzen.

Viel Spaß weiterhin mit der Enigma!

 

Sollte Ihnen das Programm gefallen haben oder Sie Kritik oder Anregungen haben, schicken Sie mir einfach eine Mail. Aber bedenken Sie: es ist quasi mein allererstes Visual C++ Programm gewesen, also bitte nicht mit Fragen kommen wie "warum zeigt das Programm nicht die Enigma graphisch". Für mich war das schon eine nette Leistung. Ich komme nämlich aus der Ecke Top-Down-Programmierung und bin nicht wirklich firm mit Objektorietierung.

 

Hier noch eine Testaufgabe für ganz Eifrige:

VI V VII 01 08 03 B
MILQW TYGWQ KTVGR BRVMP VTOLC YOQSR
PFONG MLFHK NJTJS EJAPC VRPGO ZCLOJ
UJETW XQWWT UJYZX SBCTW FGVVQ BMYOD
BWKPS YINEA MUNPE GKAAU VHYUE GGVCS
VQYSX LVDIH TBCQU JYXEZ LEZOI UHMSK
QJMEO XSKWZ JHWQS AGXWJ L

Lösung gerne als Feedback per Mail.

 

Changelog:

Version 2.1 - 10.03.2006
Fehler in Kodierung/Dekodierung entdeckt, die vor allem unter Nutzung von UKW C und Walze 4 fehlerhafte Ergebnisse lieferten oder sogar zum Programmabsturz führten. Kodierung und Dekodierung wurden in der Zwischenversion 2.0 komplett neu bearbeitet.

Version 1.1 - 09.03.2006
Hinzufügung der Format-Tasten. Ein paar kleinere Bugs entfernt. Bei Nutzung von Walze 4 gab es bisweilen einen Programmabsturz.

Version 1.0 - 07.03.2006
Hervorgegangen aus einem ersten Kommandozeilen-Tool, dem ersten Versuch des Umgangs mit Visual C++ überhaupt. Einfach, aber brauchbar.