Die Engima ist eine Verschlüsselungsmaschine, die vor allem durch ihren Einsatz im 2. Weltkrieg sehr berühmt geworden ist. Mich hat der Aufbau und die Funktion dieser Geräte schon immer fasziniert, sodass ich mich rangesetzt habe, meine eigene Enigma zu bauen.

Es gibt bereits viele Softwareimplementierungen in diversen Programmiersprachen und für Windows und Linux. Ich möchte meine Enigma aber für einen Mikrocontroller entwickeln. Dieser soll dann per USB an den Rechner angeschlossen werden können und zum Beispiel per Terminalprogramm verwendet werden. Ziel ist es die Enigma in Form eines USB-Sticks zu minimieren.

Es soll zudem möglich sein jeden Enigma-Typ zu simulieren. Es müssen also alle Eigenschaften der Enigma genau abgebildet werden:

  • Walzenverdrahtung
  • Umkehrwalzen
  • Steckerbrett
  • Enigma-Uhr

Da zu vielen Modellvarianten der Enigma der komplette interne Aufbau bekannt ist, können sogar originale Nachrichten wieder entschlüssel werden.

Wer sich nicht für den Aufbau der Enigma interessiert, kann den folgenden Abschnitt auslassen und direkt zur verwendeten Hardware der USB-Enigma springen.


Die Enigma

Die Enigma ist eine mechanische Chiffriermaschine die im Aussehen einer Schreibmaschine ähnelt. Sie besitzt eine Tastatur zu Eingabe und ein Lampenfeld zur Ausgabe. Beide besitzen eine Buchstabenanordnung ähnlich der einer Schreibmaschinentastatur. Jedes Zeichen des zu verschlüsselnden Textes wird mit der Tastatur einzeln eingegeben. Bei jedem Tastendruck leuchtet der durch die Enigma kodierte Buchstabe im Lampenfeld auf. Mit der Tastatur können nur die 26 Buchstaben des Alphabets eingeben werden; es wird nicht zwischen Groß- und Kleinschreibung unterschieden. Auch Zahlen können nicht direkt eingegeben werden und müssen ausgeschrieben werden (z.B. "eins"). Da die Enigma auch nicht über eine Leertaste verfügt, werden Wortzwischenräume mit "X" gekennzeichnet.

Aufbau und Funktion

Walzen

Im Grundaufbau besteht die Enigma aus mehreren hintereinander geschalteten Walzen. Jede Walze besitzt auf der linken und rechten Seite je 26 Kontakte, die den Buchstaben des Alphabetes entsprechen und elektrisch miteinander verbunden sind. Dabei sind alle Kontakte der linken Seite mit beliebigen Kontakten der rechten Seite fest verdrahtet. Wird beispielsweise an dem Kontakt auf der rechten Seite, der dem Buchstaben "A" entspricht, Strom angelegt, tritt dieser an dem Kontakt auf der linken Seite, der dem Buchstaben "P" entspricht wieder aus. Die Enigma ist aus insgesamt 3 hintereinander geschalteten Walzen aufgebaut, bei denen sich die Kontakte der jeweils benachbarten Walze berühren.

Hat der Strom die 3 Walzen durchlaufen, trifft er auf eine Umkehrwalze (kurz UKW). Diese besitzt nur auf der rechten Seite 26 Kontakte die ebenfalls beliebig untereinander verbunden werden. Der Strom fließt bei einem Kontakt der Umkehrwalze hinein und aus einem anderen Kontakt auf der rechten Seite wieder hinaus. Dabei trifft er wieder auf die 3 Walzen und durchläuft diese in umgekehrter Reihenfolge.

Nach der letzten Walze trifft der Stromfluss wieder auf das Tastenfeld, durchläuft es und bringt im Lampenfeld die Lampe mit dem kodierten Buchstaben zum leuchten. 

Steckerfeld

Viele Enigma-Modelle verügen über zusätzliches Steckerfeld Dieses befindet sich im Stromfluss zwischen dem Tastenfeld und der ersten Walze. Mit dem Steckerfeld können mit speziellen Kabeln jeweils zwei Buchstaben ausgetauscht werden. Wird beispielsweise ein Kabel mit einem Ende in den Buchstaben B, und mit dem anderen in den Buchstaben C gesteckt, wird beim Drücken der Taste "B" auf dem Tastenfeld, der Buchstabe "C" kodiert, und umgekehrt. Hat der Stromfluss die Walzen und die Umkehrwalze durchlaufen, wird auch erneut das Steckerfeld durchlaufen, bevor der Strom das Lampenfeld erreicht.

In der folgenden Grafik ist der Stromfluss gezeigt, der genommen wird, wenn der Buchstabe "B" eingegeben wird. Nachdem alle Walzen und das Steckerfeld durchlaufen wurden, leuchtet die Lampe A auf. Der Buchstabe "B" wird also zu "A" verschlüsselt. An dieser Stelle lässt sich gut erkennen, dass Bei Eingabe von "A" der Buchstabe "B" ausgegeben wird. Die Engima arbeitet also involutorisch: Ein Text wird mit der Enigma auf die gleiche Weise verschlüsselt wie er entschlüsselt wird.

Walzenrotation

Bisher ist die Verschlüsselung aber statisch. Jeder eingegebene Buchstabe wird immer zu dem gleichen Buchstaben; egal wie oft die Taste gedrückt wird. Die Enigma schaltet aber bei jedem Tastendruck die erste Walze um einen Schritt weiter. Somit wird bei jedem Drücken des gleichen Buchstabens ein anderer Buchstabe ausgegeben. Nach 26 Buchstaben, hat die erste Walze eine ganze Umdrehung vollzogen und dei zweite Walze wird um einen Schritt weitergestellt. Hat die zweite Walze eine komplette Umdrehung vollzogen schaltet sie die dritte Walze einen Schritt weiter.

Bei manchen Modellen wird nach dem gleichen Prinzip auch die Umkehrwalze einen Schritt weitergedreht sobald die dritte Walze sich komplett umdreht hat. Es wurden auch Walzen entwickelt und eingesetzt die nicht nur alle 26 Schritte einen Übertrag auslösen sondern durch zusätzliche Kerben innerhalb einer Umdrehung zwei oder mehr Überträge ausführen. Ein Spezialfall war die entwickelte aber nicht mehr eingesetzte Lückenfüllerwalze. Bei dieser konnte die Anzahl und die Position der Übertragskerben frei eingestellt werden.

Ringstellung

Um die aktuelle Stellung der Walzen zu sehen, befindet sich auf jeder Walze ein Ring auf dem das Alphabet aufgedruckt ist und somit jeder Position einen Buchstaben zuordnet. Die aktuelle Position aller Walzen kann durch ein kleines Sichtfenster eingesehen werden. Werden nacheinander Buchstaben auf der Tastatur eingegeben, erscheinen beim Sichtfenster der ersten Walze nacheinander die Buchstaben des Alphabetes. Zeigt die Walze den Buchstaben Z an, führt sie einen Übetrag durch, zeigt den Buchstaben A an und schaltet die neben ihr stehende Walze einen Schritt weiter.

Ein weiterer Konfigurationsschritt der vorgenommen werden kann, ist, den Ring auf den Walzenkörper zu verdrehen. Der Ring jeder Walze lässt sich lösen und verschieben. Auf dem Walzenkörper ist, wie auch auf dem Ring ein Alphabet augebracht mit sich feststellen lässt um wieviel Schritte der Ring zum Walzenkröper verdreht wurde.

Wird der Ring verstellt, ändert sich der Versatz zwischen der inneren Verdrahtung und der Beschriftung der Walze. Da auch die Kerben für den Walzenübertrag am Ring befestigt sind, ändert sich auch die Position für das Weiterschalten der nebenstehenden Walze. Wird der Ring um eine Position weiter gestellt, wird statt Position B im Sichtfenster der Walze ein A angezeigt. Der Übertrag finden dementsprechend nicht auf Position Z statt sondern auf der angezeigten Position Y.

Spezielle Umkehrwalzen

Neben Modellen mit festen und auswechselbaren Umkehrwalzen wurden auch ein Modell ("M4) entwickelt, dass über eine verkürzte, nicht rotierende Umkehrwalze verfügt. Der somit verfügbare Platz ermöglicht es eine dünne Spezialwalze einzusetzen die ebenfalls nicht rotierte. Die Position dieser Walze konnte im Sichtfenster der ursprünglichen Umkehrwalze eingesehen werden. Es waren zwei mit β und γ (auch "Griechenwalzen") bezeichnete schmale Walzen verfügbar, aus denen gewählt werden konnte. Die M4 Enigma verfügte insgesamt über 3 rotierende Walzen und eine Umkehrwalze.

Für den Geheimdienst wurde die Enigma G entwickelt. Diese verfügt über mehrere kryptographische Besonderheiten. Sie ist das einzige Modell bei der sich auch die Umkehrwalze mitdreht. Bei einem Übertrag der linken Walze wird also die Umkehrwalze um einen Schritt weiter gehdreht.

Gegen Kriegsende wurde von der Luftwaffe für die M4 Enigma eine neue, nicht mitdrehende Umkehrwalze entwickelt. Diese neue Walze wurde "UKW-D" genannt und ersetzte die bisherigen Umkehrwalzen und die Zusatzwalzen. Die UKW-D hatte den Vorteil, dass sie vom Bediener neu verdrahtet werden konnte. Sie wurde dazu aus der Enigma entnommen und geöffent. Im Inneren befinden sich 12 umsteckbare Kabel die jeweils zwei Buchstaben miteinander verbinden (die Buchstaben J und Y waren fest verbunden).

Enigma-Uhr

Die Luftwaffe setzte noch kurzzeitig die Enigma-Uhr, auch Steckeruhr genannt, als Zusatzgerät zur Enigma ein.

Die Enigma-Uhr befindet sich in einer Holzschachtel die seitlich mit zwei Metallspangen an der Enigma eingehangen wurde. Innerhalb der Schachel befinden sich 20 Kabel, die fest mit der Uhr verbunden sind, und ein großer Drehschalter der in 40 Positionen einrasten. Die aktuelle Position ist in einem kleinen Anzeigefeld sichtbar, das "00" bis "39" anzeigt.

Zum Betrieb wurden die 20 Kabel mit dem Steckerbrett der Enigma verbunden. Der Drehschalter verbindet die Kabel innerhalb der Uhr untereinander in einem festen aber ungeordneten Schema. Mit dem Drehschalter kann dieses schema verschoben werden.

Die Kabel sind in zwei Gruppen unterteilt. Bei der Hälfte wurde der Stecker mit "a" beschriftet und rot markiert, die andere Hälfte mit "b" und einer weißen Markierung. Beide Steckergruppen wurden mit den Zahlen von 1 bis 10 versehen.

Beim Einstellen der Enigma wurden statt der normalen Kabel für die Steckerverbindungen die Kabel der Enigma-Uhr angeschlossen. Dabei wurde die Kabel in der Reihenfolge "a1", "b1", "a2", "b2", usw. eingestellt. Damit wurde sichergestellt, dass mit der Enigma-Uhr auch Nachrichten für Empfänger ohne Enigma-Uhr verschlüsselt werden konnten. Der Drehschalter wurde dafür auf Position "00" gestellt. Nun waren die Kabel "a1" und "b1", "a2 und "b", usw. miteinander verbunden, was der normalen Verkabelung mit den Steckerverbindungen entspricht.

Anders als das reguläre Steckerbrett, konnten mit der Enigma-Uhr auch nichtinvolutorische Buchstabenpermutationen erzeugt werden. Wenn mit der Enigma-Uhr der Buchstabe "A" gegen "B" getauscht wird, wird nicht zwangsläufig "B" gegen "A" getauscht. Die feste Verdrahtung wurde so gewählt, dass jede vierte Position des Drehschalters involutorisch ist und alle anderen nichtinvolutorisch. Dies erschwerte das Entschlüsseln der Nachricht durch Codeknacker.

Schlüssel

Soll eine Nachricht mit der Enigma ver- oder entschlüsselt werden, müssen dem zuvor sämtliche genannten Einstellungsparameter bekanntgegeben werden. Dies geschieht über Schlüsselbücher, in denen für jeden Tag die einzustellende Konfiguration vorgegeben ist.

Der Schlüssel besteht aus:

  • Umkehrwalze (bei manchen Modellen konnte aus einem Satz von bis zu 4 Umkehrwalzen, mit verschieder Verdrahtungen eine ausgewählt werden)
  • Walzen (Zu jeder Enigma gab es einen Walzensatz aus bis zu 8 unterschiedlich verdrahteten Walzen aus denen 3 ausgewählt und in die Enigma eingesetzt werden konnten)
  • Ringstellung (Die Ringstellung aller Walzen wurde in Zahlen ausgedrückt die den Abstand zur Nullposition der Walze darstellte)
  • Steckerverbindungen (Die Anzahl der Steckerverbindungen variierte anfangs und wurde später auf 10 Buchstabenpaare festgelegt. 6 Buchstaben blieben "ungesteckert")

Die Einträge eines Schlüsselbuchs für drei Tage könnten beispielsweise wie folgt aussehen:

Tag UKW  Walzenlage  Ringstellung  ---- Steckerverbindungen ----
 31  A   V   IV III    24 14 18    AD CN ET FL GI JV KZ PU QY WX
 30  B   II  V  VII    08 11 16    BN DZ EP FX GT HW IY OU QV RS
29 B III I IV 01 17 22 AH BL CX DI ER FK GU NP OQ TY

Mit diesen Tagesschlüsseln wurden aber nicht direkt die Nachrichten verschlüsselt, sondern nur der jeweilige Spruchschlüssel. Dieser bestand wiederum aus einer vom Verfasser frei gewählten Startposition in die die Walzen gedreht wurden. Wurde die Enigma-Uhr verwendet, musste auch die Position des Drehschalters mit angegeben werden.

Wurde die UKW-D Walze verwendet, wurde die Verdrahtung der Walze in einer zusätzlichen Spalte im Schlüsselbuch angegeben.

Schlüsselraum

Die Anzahl der möglichen Schlüssel sind stark abhängig vom Modell. Der hier berechnete Schlüsselraum betrachtet die Enigma M4 mit zusätzlicher Griechenwalze. Der Schlüsselraum berechnet sich aus den folgenden vier Faktoren:

  1. gewählte Walzen
    • Aus dem Sortiment von 8 Walzen wurden 3 ausgewählt und in die Enigma eingesetzt
    • Es kann zwischen 2 verschiedenen Umkehrwalzen und 2verschiedenen Griechenwalzen gewählt werden
    • 2·2·(8·7·6) = 1344 Walzenstellungen
  2. Ringstellung
    • Für jede Walze kann der Ring in 26 verschiedene Stellungen gebracht werden. Jedoch sind nur die ersten beiden Walzen für die Berechnung relevant, da die dritte Walze keine Rotation an der nebenstehenden Walze auslöst.
    • 26² = 676 Ringstellungen
  3. Walzenposition
    • Jede der 4 Walzen kann auf eine von 26 Positionen gestellt werden.
    • 264 = 456.976 Walzenpositionen
    • Sind die Ringstellungen dem Codeknacker bekannt, sinkt diese Zahl auf 26·26·25·26=439.400
  4. Steckerbrett
    • Anzahl der Kombinationsmöglichkeiten des Steckerbretts berechnet sich mit
      (n steht für die Anzahl der Steckerverbindungen)
    • Bei der Enigma M4 wurden genau 10 Steckerverbindungen hergestellt.
    • 150.738.274.937.250 Steckerpositionen waren möglich

Insgesamt ergeben sich 1334·676·456.976·150.738.274.937.250 = 62.118.285.187.639.341.364.704.000 (Mehr als 62 Quadrillionen) Kombinationsmöglichkeiten. Sind einem Codeknacker die Ringstellungen der Walzen bekannt, verringert sich die Anzahl der Möglichkeiten auf etwas mehr als 60 Quadrillion.

Die Schlüssellänge ist erstaunlich groß und entspricht umgerechnet etwa 86 Bit.

Kryptographische Schwächen

Die Sicherheit dieser gewaltigen Anzahl an Schlüsselstellungen ist trügerisch. Den größten Einfluss auf den Schlüsselraum hat das Steckerbrett. Dieses bietet aber nur eine monoalphetische Verschlüsselung (jeder Buchstabe wird durch immer den gleichen Buchstaben ersetzt), die leicht durch Codeknacker vollständig abgestreift werden kann.

Auch die Ringstellung bietet nur einen geringen Schutz gegen Entschlüsselung. Die Ringstellung der linken Walze trägt nicht zu Sicherheit bei; die der rechten Walze nur alle 26 Zeichen, wenn ein Übertrag ausgeführt wird. Hat ein Codeknacker seine Enigma bis auf die Ringstellung der rechten Walze korrekt eingestellt, können schon Teile des Textes entschlüsselt werden. Die Ringstellung der mittleren Walze hat noch weniger Einfluss, da sie noch weniger Umdrehungen ausführt (alle 25·26 Zeichen).

Übrig bleiben nur die Faktoren für die 1344 möglichen Walzenkombinationen und die 456.976 Walzenpositionen. Dies ergibt eine wahre Schlüsselstärke von 1344·456.976 = 609.605.984 (≈30 Bit).

Bei einfacherern Modellen mit nur drei Walzen und bei bekannter Ringstellung, sind beide Faktoren noch kleiner und es ergibt sich eine Schlüsselstärke von nur 120·17.576 = 2.109.120  (≈21 Bit).

Diese Schlüsselmenge ließ sich breits im 2. Weltkrieg von den Briten mechanisch vollständiges ausprobieren. Zur Hilfe kamen den Codeknackern aber vor allem Bedienfehler beim Verschlüsseln. So wurden teilweise sehr lange Nachrichten verschlüsselt, der exakt gleiche Text mehrfach mit verschiedenen Schlüsseln verschlüsselt oder leicht erratbare Worte am Nachrichtenanfang verwendet (z.B. "WETTERVORHERSAGE" oder "ANX"). Dadurch gelang es zum einen die interne Walzenverdrahtung und die Position der Übertragskerben zu ermitteln, aber auch die Walzenstellungen zu erraten.

Hardware

Entwicklung

  • Crumb2560 auf EntwicklungsplatineCrumb2560 auf Entwicklungsplatine

Ich habe mich für Microcontroller von Atmel entschieden. Welcher es genau wird, ist noch unklar. Da der Quellcode relativ hardwareunabhängig ist, kann ich mich jederzeit noch umentscheiden. Um die Entwicklungszeit kurz zu halten, habe ich auf ein kleines Crumb2560 Evaluationsboard von chip45.com mit folgenden Eigenschaften verwendet:

  • Atmega2560 (256k Flash, 8k SRAM, 4k EEPROM)
  • 16 MHz Quarz
  • UART wird über USB als virtuelle COM-Schnittstelle herausgelegt
  • Stromversorgung über USB
  • Anschluss für Programmieradapter (ISP)
  • reichlich freie Pins

Prototyp

  • unbestückter Prototypunbestückter Prototyp

Der erste Prototyp der USB-Enigma basiert auf einem Atmega328P (32k Flash, 2k SRAM, 1k EEPROM) und läuft mit 20 Mhz. Da die Platine möglichst klein sein sollte, wurde auf alles Überflüssige verzichtet. Die Stromversorgung erfolgt wie bereits bei der Entwickungsplatine über die USB-Schnittstelle. Der Anschluss für den Programmieradapter kann nach der Programmierung einfach von der Leiterplatte abgeknickt werden, wodurch diese nochmals ein paar Millimeter kleiner wird.

Fertige Enigma

  • Die erste fertige USB-EnigmaDie erste fertige USB-Enigma

Die fertige USB-Enigma verwendet, wie auch bereits der Prototyp einen Atmega328P. Zur Entlastung des Mikrocontrollers wird nun die gesamte USB-Kommunikation von einem FT232RL erledigt. Dennoch konnte ich die Platine kleiner machen als beim Prototyp. Die USB Enigma ist nun in der aktuellen Version 3,5 x 1,5 cm groß; in eine USB-Buchse gesteckt, ragen noch 2,5 cm heraus, was in etwa heutigen USB-Sticks entspricht. Die geringe Abmessung wurde erreicht, indem ausschließlich SMD-Bauteile verwendet wurden. Für Widerstände und Kondensatoren wurde die SMD-Bauform 0603 (1,6 x 0,8 mm) gewählt. Diese lässt sich noch gut von Hand unter einem Mikroskop löten.

USB-Enigma bei der Arbeit

Programmiert wird das Board über JTAG. Dafür sind auf der Platine Lötpads auf die ein 2x6 Pfostenstecker gesteckt werden kann.

Um nicht die nackige Platine anfassen zu müssen, bekommt die USB-Enigma ein stilechtes Holzgehäuse. Die LED wird über eine Bohrung an der Oberseite in die ein kurzer Lichtleiter eingeklebt ist sichtbar bleiben.

Wenn größeres Interesse bestehen sollte, werde ich die USB-Enigma hier in einen kleinen Online-Shop anbieten.

  • Verschiedene Versionen im VergleichVerschiedene Versionen im Vergleich
  • Gehäuse PrototypGehäuse Prototyp
  • fertiges Gehäusefertiges Gehäuse

Software

In der Firmware sind alle Verschlüsselungseigenschaften der echten Enigma umgesetzt worden. Es können Walzen und Umkehrwalzen beliebig angeordnet werden und auch die Ringstellung jeder Walze angepasst werden. Es sind sämtliche Walzen und Umkehrwalzen verfügbar von denen die Verdrahtung und Übertragskerben bekannt sind. Insgesamt kann aus 60 Walzen gewählt werden. Es ist somit möglich alle bekannten Enigma-Typen exakt zu simulieren. Dabei kann entweder ein Preset mit dem jeweiligen Typ gewählt werden oder einfach frei konfiguriert werden.

Es kann gewählt werden zwischen:

  • I (Heer, Luftwaffe)
  • I (Norwegen)
  • M3 (Heer, Marine)
  • M4 (U-Boote)
  • D (kommerziell)
  • K (Schweiz)
  • K (Reichsbahn)
  • KD (Mil Amt)
  • T "Tirpitz" (Japan)
  • A28 (Zählwerk)
  • G31 (Zählwerk) Geräte G-111, G-260, G312
  • und benutzerdefiniert

Ich habe auch alle technischen Besonderheiten und Anomalien umgesetzt. Es kann beispielsweise die Art des Walzenantriebes ausgewählt werden. Die Auswahl hat Einfluss auf das Schaltverhalten der mittleren Walze. Wird die Hebelmechanik gewählt, wird bei dieser Walze ein Doppelschritt vollzogen. Außerdem habe ich die Enigma-Uhr implementiert, die als Zusatzgerät bei der Luftwaffe verwendet wurde und die Verschlüsselungsstärke der Enigma erheblich verstärkt.

Benutzerdialog

Zur Kommunikation wird die RS232-Schnittstelle verwendet die als virtuelle COM über den USB-Port angezeigt wird.

Ist das Board an den USB-Port angeschlossen, kann mit einem Terminal-Programm (z.B. HTerm) sofort losgelegt werden. Wird ein Buchstabe eingegeben wird dieser von der Enigma kodiert. Wird eine Ziffer eingegeben öffnet sich das Einstellmenü mit einem Überblick über die aktuelle Konfiguration und einer Auflistung aller Optionen. Wird ein Untermenü betreten, wird erneut ein Bildschirm mit den entsprechenden Optionen ausgegeben.

Einstellmöglichkeiten

  • Modell: Auswählen eines realen Enigma-Modells oder Benutzerdefinierter Modus
  • Walzen: Auswählen der Walzen. Die verfügbaren Walzen sind abhängig vom gewählten Modell
  • Walzenposition: Einstellen der Stellung der Walzen (Spruchschlüssel)
  • Ringstellung: Einstellen der Ringe der Walzen
  • Steckerbrett: Einstellen der Steckverbindungen und der Position der Enigma-Uhr. Auch abhängig vom Modell
  • Eintrittswalze: Im Benutzerdefinierten Modus kann hier die sonst modellabhängige Verdrahtung der Eintrittswalze ausgewählt werden.
  • Mechanik: Hier kann, ebenfalls nur im benutzerdefinierten Modus, die Art der Mechanik zwischen Hebelmechanik und Getriebe gewählt werden. Die Auswahl beeinflusst das Schaltverhalten der mittleren Walze (→ Anomalie)
  • Rotation: Wurde der benutzerdefinierte Modus gewählt, kann hier eingestellt werden ob sich die Umkehrwalze und die Walzen drehen oder statisch sind.
  • Optionen: Spezielle Einstellungen der USB-Enigma (z.B. Baudrate)
  • Reset: Setzt die gesamte Enigma zurück
  • Verlassen: Kehrt zum Eingabemodus zurück

Zeitverhalten

  • Bei High-Pegel arbeitet die EnigmaBei High-Pegel arbeitet die Enigma

Bei der Entwicklung stand die Geschwindigkeit der Ver- bzw. Entschlüsselung nicht im Vordergrund. Dennoch wurde viel Wert auf eine optimale Datenverwaltung im Quellcode gelegt. Bei jedem Verschlüsselungsvorgang leuchtet die LED für die Dauer der Verschlüsselung kurz auf. Dieses Signal wurde mit einem Oszilloskop erfasst. Im nebenstehenden Oszillogramm sieht man, dass die Berechnungsdauer für ein Zeichen zwischen 1,1 ms und 1,5 ms liegt. Die Zeit pro Zeichen ist nicht konstant, da die Anzahl der zu drehenden Walzen, die Steckerverbindungen, das Vorhandensein der Enigma-Uhr sowie der Art der Umkehrwalzen Einfluss auf die Berechungsdauer haben.

Wenn lange Texte in einem Rutsch per Kommandozeile an die USB-Enigma übertragen und verschlüsselt werden sollen, ist die Baudrate sehr kritisch. Ist sie zu hoch gewählt, können eingehende Zeichen nicht sofort von der Enigma abgearbeitet werden und werden, wenn der Eingangspuffer voll ist, verworfen. Bei 4800 Baud können auch mehrere Zeichen hintereinander gesendet werden ohne auf die Antwort der Enigma zu warten, da bei dieser Geschwindigkeit die Enigma ein eingegebenes Zeichen sicher abarbeiten kann bevor ein neues eintrifft.

Quellcode

Der Quellcode liegt aktuell auf GitHub und kann von dort heruntergeladen werden. https://github.com/TheRocken/chicken-coop

Die letzte Version habe ich auf einem Arduino Yún umgesetzt. Es ist aber auch ein einfacher Arduino Uno geeignet. Dazu müssen aber die unnötigen includes und Funktionen rausgeworfen werden (webserver(), digitalCommand(), Bridge.h, YunClient.h, YunServer.h)

Ausblick

Das Projekt ist für mich abgeschlosen und es wird keine weiteren Ergänzungen hier geben. Am Ende der Entwicklung stellte sich heraus, dass die verwendete Arduino-Hardware für meine Anforderungen nicht leistungsfähig genug war. Gern hätte ich das System ins WLAN eingebunden und per MQTT darauf zugriffen. Auch die verwendt Aruino Yún Hardware entsprach da nicht meinen Vorstellungen. Eine Umsetzung mit einem ESP32 wäre da sinnvoll. Der Quellcode ließe sich dafür leicht anpasen.

Besucher

Heute 2

Monat 510

Insgesamt 91915

Go to top
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.