2. Juni 2023

Enigma und die Schweizer Antwort Nema

Professor Jürg Gutknecht analysiert die Enigma, das bekannteste kryptografische Gerät aller Zeiten. Mit ihrem Verschlüsselungsmechanismus verhalf sie dem Deutschen Heer zum strategischen Vorteil, bis der Code von den Alliierten gebrochen wurde. Die Schweiz entwickelte die Technologie mit dem Gerät Nema weiter.

Die Enigma

Die Enigma («das Rätsel») ist das wohl bekannteste und sagenumworbenste kryptografische Gerät aller Zeiten. Mit ihrem raffinierten elektromechanischen Verschlüsselungsmechanismus verhalf sie einerseits dem Deutschen Heer (nach den mühsamen Handverschlüsselungen im Ersten Weltkrieg) zum strategischen Vorteil massenhaft geheime Nachrichten austauschen zu können, verlockte andererseits die Alliierten Gegner zu Riesenanstrengungen um den Enigmacode zu brechen.

Genau dies ist passiert und hat ohne Übertreibung nicht unwesentlich zum schnelleren Ende des Zweiten Weltkrieges geführt. Der ständige Wettkampf zwischen den Deutschen Entwicklern und Weiterentwicklern der Enigma und den Alliierten Codebrechern ist im Endeffekt zugunsten letzterer ausgegangen. Es gelang diesen nämlich im berühmten Bletchley Park in England dank Kenntnis des grundsätzlichen Aufbaus der Enigma infolge derer kommerziellen Vorkriegsvermarktung und dank Vorarbeiten in Polen die Enigma zu knacken und zwar ohne dass die Deutschen davon Kenntnis hatten, ein unschätzbarer Vorteil für die Alliierten.

Wie im Film «The Imitation Game» von 2014 in überspitzter Form dargestellt, spielte dabei Alan Turing, einer der Computerpioniere, mit seiner automatischen Durchprobiermaschine «Bombe» eine entscheidende Rolle. Mit gutem Recht kann die «Bombe» als Vorläufer des Computerbaus schlechthin betrachtet werden. Der einzige, jedoch entscheidende, Unterschied zwischen ihr und den ersten «General Purpose Computern» wie Zuse 3 oder ENIAC war die Zweckbindung.

Es geht in diesem Aufsatz nicht um eine historische Dokumentation (deren es ja bereits zur Genüge gibt), sondern um eine zwar fast karikaturistisch vereinfachte, aber dennoch 100% funktionentreue Beschreibung der Enigma Grundversion sowie der Nema (NEue MAschine) als Schweizer Antwort auf die «unsichere» Enigma.

Die in die folgenden Ausführungen integrierten, kurzen und knappen funktionalen Simulationsprogramme zeigen, nebenbei bemerkt, die enorme Kraft moderner, softwaregesteuerter «General Purpose Computer». Was zur Enigma-Zeit in Form hochkomplexer, elektromechanischer Hardwarekomponenten mühsam zusammengebaut werden musste, kann heute in Form von Software mit wenigen Programmzeilen simuliert werden.

Im Wesentlichen lässt sich das Verschlüsselungskonzept der elektromechanisch gesteuerten Enigma wie folgt beschreiben: Jedes Zeichen des zu verschlüsselnden Textes (sog. Klartext) wird via Tastatur eingetippt und durchläuft als Gleichstromsignal die folgenden Stationen, s. auch Abbildung 1:

1.     Steckerbrett, welches das ankommende Zeichen in sich selbst oder via gestecktes Kabel in ein Partnerzeichen überführt.

2.     Paket dreier seriell (in Abbildung 1 von rechts nach links) geschalteter und einzeln drehbarer Permutierwalzen (Rotoren), von denen jede via elektrische Kreuzverdrahtung jedes von rechts ankommende Zeichen in eines auf der linken Seite überführt und an die nächste Walze oder an den Ausgang des Paketes weiterleitet.

Mathematisch ausgedrückt durchläuft jedes via Tastatur eingegebene Klartextzeichen die folgende Serie von Permutationen (Vertauschungen), wie üblich von rechts nach links gelesen und zur Gesamtpermutation P zusammengefasst:

P = C4 P3 C3 P2 C2 P1 C1 P0

Dabei beschreiben P0 die Steckerbrettpermutation, P1 bis P3 die Walzenpermutationen und Ci die Permutationen, die durch die gegenseitigen Verdrehungen der Walzen entstehen. Letztere sind Übergangspermutationen, die lediglich die Ausgänge der jeweils aktuellen Walze mit den Eingängen der nächsten Walze verbinden.

Von zentraler Bedeutung für die Wirksamkeit der Enigma-Chiffrierung ist die Tatsache, dass die Walzen nach jedem Zeichen, d. h. nach jedem Tastendruck, durch einen automatisierten Vorschubmechanismus weitergedreht werden, sodass sich die Ci und damit die Gesamtpermutation P nach jedem Zeichen ändern. Daraus resultiert eine sog. polyalphabetische Verschlüsselung, die im Gegensatz zu monoalphabetischen Verschlüsselungen nicht via Häufigkeitsanalyse der auftretenden Zeichen leicht geknackt werden kann.

Wenn wir also mit C(…) die Übergangspermutationen bezeichnen und mit ni die Drehung der Walze Nr. i gegenüber ihrer Nullposition («A» im Nordpol), so erhalten wir für P:

P = C(-n3) P3 C(n3 – n2) P2 C(n2 – n1) P1 C(n1) P0

Damit wäre die Funktionalität einer «bruchsicheren», polyalphabetischen Verschlüsselungsmaschine eigentlich bereits erbracht. Allerdings nützt das beste Verschlüsselungsgerät nichts, wenn dazu nicht eine entsprechende Einrichtung zur Entschlüsselung existiert.

Im Falle der Enigma könnte man natürlich die Maschine mit einem Modusumschalter «Verschlüsseln»/ «Entschlüsseln» ausrüsten und es elektromechanisch so ausgestalten, dass die Signale während der Verschlüsselung hin- und während der Entschlüsselung zurückfliessen. In der historischen Realität der Enigma kam jedoch sehr früh ein anderes Konzept zur Anwendung: der Einsatz einer (feststehenden, nicht drehbaren) Umkehrwalze (in der Abbildung 1 links vom Walzenpaket), dank welcher ein und dasselbe Gerät ohne Modusumschaltung sowohl für das Verschlüsseln als auch für das Entschlüsseln verwendet werden kann.

Dazu wurde die beschriebene Permutation P so ergänzt, dass das damit verschlüsselte Zeichensignal via Umkehrwalze abermals in das Walzenpaket eingespeist wird und dann rückwärts (in Abbildung 1 von links nach rechts) über die Permutationswalzen und das Steckerbrett zurückfliesst und schliesslich im Lampenfeld das Lämpchen des verschlüsselten Zeichens aufleuchten lässt.

Abbildung 1. Die Enigma mit Steckbrett

Falls U die Permutation der Umkehrwalze bezeichnet, lässt sich die gesamte Transformation eines Klartextzeichens in die Verschlüsselung also beschreiben als QUP, wobei Q die inverse Permutation zu P sei. Damit nun Entschlüsselung = Verschlüsselung gilt, muss die Inverse zu QUP wiederum QUP sein, d. h. es muss gelten (QUP)(QUP) = Id (Identität) oder, anders ausgedrückt, QUP muss eine sogenannte Involution sein (d. h. zweimal hintereinander ausgeführt, ergibt das Original).

Wie die folgende Rechnung zeigt, folgt daraus, dass U selbst eine Involution sein muss:

(QUP)(QUP) = Id (identische Abbildung), also
QU(PQ)UP = Id
QUUP = Id
PQ(UU)Q = PQ
UU = Id

Um dies zu erreichen wurde die Umkehrwalze der Enigma vollständig paarweise verdrahtet. Damit wurde nicht nur die Involutionseigenschaft erfüllt, sondern auch Fixpunktfreiheit erzeugt, die sich wiederum auf die ganze Enigma übertrug, weil aus U(P(x)) ungleich U(P(y)) für alle x und y folgt, dass auch Q(U(P(x))) ungleich Q(U(P(y))) für alle x und y gilt.

Demnach wird mit der Umkehrwalze also jede Permutation P in eine Involution QUP ohne Fixpunkte übergeführt. Diese Tatsache, auch «Fluch der Umkehrwalze» genannt, erleichterte den Codebrechern die Arbeit enorm. Quantitativ ausgedrückt reduzierte die Umkehrwalze die Anzahl aller möglichen Permutationen von 26 Zeichen (Buchstaben) gemäss folgendem Pythonprogramm von
26! = 403291461126605635584000000 auf relativ gesehen wenige 7905853580625 Involutionen ohne Fixpunkte, mit  0.0000000000019603324996120133 % ein unvorstellbar winziger Bruchteil!

def nofInvolNoFP (n):
if n <= 0 or n %
2 != 0: return 0
elif n == 2: return 1
else: return (n – 1) * nofInvolNoFP(n – 2)

Die Schwierigkeit, den Enigmacode mit «brute force» Durchprobieren zu brechen, hängt natürlich auch wesentlich von der Komplexität des Vorschubmechanismus ab. In der Originalversion der Enigma wurde ein simpler «Kilometerzähleralgorithmus» verwendet, welcher die erste Walze nach jedem Zeichen um eine Position weiterdreht, die zweite Walze nach jeder vollen Umdrehung der ersten um eine Position weiterdreht etc. In die Formel P = C(-n3) P3 C(n3 – n2) P2 C(n2 – n1) P1 C(n1) P0 übertragen heisst dies, dass C(-n3) und C(n3 – n2) beim Verschlüsseln einer Nachricht lange stabil bleiben. Wie wir sehen werden, zeichnet sich die Schweizer Antwort Nema auf die Enigma hauptsächlich durch einen raffinierteren Vorschubmechanismus aus.

Andererseits wurde die Arbeit der Codebrecher wiederum durch zwei Freiheitsgrade erschwert: Erstens war es möglich die Walzen einzeln auszuwechseln, d. h. die Permutationen P1, P2 und P3 z. B. jeweils z. B. um Mitternacht gemäss Geheimprotokoll zu verändern (sog. Tagesschlüssel)  und andererseits durch die Möglichkeit die Walzen vor der Übertragung einer Nachricht in irgendeine Anfangsstellung zu bringen, also n1, n2 und n3 beliebig wählen zu können (sog. Spruchschlüssel oder Nachrichtenschlüssel). Dieser muss natürlich den Empfängern der geheimen Botschaften ebenfalls übermittelt werden. Typischerweise wird er dazu speziell verschlüsselt und der eigentlichen Nachricht vorangestellt. Insgesamt gibt es also 26*26*26 = 17576 verschiedene Spruchschlüssel, welche den Codebrechern das Leben schwer machen.

Eine wichtige Frage, die sich bei jedem walzenbasierten Verschlüsselungssystem stellt, ist die Periodendauer, also die (minimale) Anzahl unterschiedlicher Verschlüsselungspermutationen bis die ursprüngliche Permutation wiederkehrt. In unserem Falle des «kilometerzählerartigen» Vorschubmechanismus für drei Walzen bei gestecktem Steckerbrett und bei gegebenen Pi sind dies offensichtlich  26*26*26 = 17576 Permutationen der Form P = C(– n3) P3 C(n3 – n2) P2 (n2 – n1) P1 C(n1) P0, wobei sich natürlich sofort die Frage stellt ob diese alle voneinander verschieden sind. Offensichtlich hängt dies von den konkreten Pi (i = 1, 2, 3) ab. Betrachten wir dazu die authentische, damals oft verwendete Walzenkonfiguration I, II, III mit den Verdrahtungen

Walze I: ‚EKMFLGDQVZNTOWYHXUSPAIBRCJ‘ (also ‘A’ ‘E’, ‘B’ ‘K’, etc.)
Walze II: ‚AJDKSIRUXBLHWTMCQGZNPYFVOE‘
Walze III: ‚BDFHJLCPRTXVZNYEIWGAKMUSQO‘

Dann zeigt ein entsprechendes Computerprogramm, dass tatsächlich alle resultierenden Verschlüsselungspermutationen P und damit bei Verwendung einer Umkehrwalze auch alle Involutionen QUP voneinander verschieden sind.

Die soeben berechnete Anzahl der mit drei Walzen (und einer feststehenden Umkehrwalze) realisierbaren Permutationen lässt sich natürlich durch Umstecken des Steckerbretts (dessen aktuelle Konfiguration natürlich ebenfalls zum Tagesschlüssel gezählt werden kann) nochmals erhöhen. Ähnlich wie bei der Umkehrwalze sind im Steckerbrett jeweils Paare verschiedener Zeichen via Kabel verbunden, die allerdings im Gegensatz zur Umkehrwalze umsteckbar sind. Auch ist es im Steckerbrett möglich, dass unverbundene Zeichen verbleiben, die dann als Fixpunkte der Steckerbrettpermutation fungierten.

Somit realisiert das Steckerbrett abermals eine Involution, jedoch eine mit möglichen Fixpunkten. Will man damit möglichst viele Permutationen erzeugen können, stellt sich die Frage nach der optimalen Anzahl Kabel. Diese lässt sich leicht mithilfe des folgenden Programmes bestimmen.

def nofCombins(N, n): #number of combinations
len(list(itertools.combinations(list(range(0, N)), n)))

def nofPlugBoardPerm(n):
return nofInvolNoFP(26 – n) * nofCombins(26, n)

Anzahl Permutationen mit 13, 12, 11, …, 0 Kabelverbindungen, also mit 0, 2, 4, …, 26 Fixpunkten:

13        7905853580625
12      102776096548125
11      205552193096250
10      150738274937250
09       53835098191875
08       10767019638375
07        1305093289500
06         100391791500
05           5019589575
04            164038875
03              3453450
02                44850
01                  325
00                    1

Das Maximum wird also mit 11 Verbindungskabeln bzw. mit 4 Fixpunkten erreicht. Deshalb waren praktisch alle Steckerbretter der Enigmas 10 oder 11 Kabelverbindungen ausgerüstet. Wenn die Verkabelung des Steckerbrettes mit dieser Anzahl von Kabeln als Tagesschlüssel verwendet würde, liesse sich jeden Tag über eine Dauer von rund 100 mal das Alter der Erde ein neues Verschlüsselungsschema erzeugen!

Nach all diesen Vorbereitungen sollte der folgende Ablauf des Verschlüsselungs-/Entschlüsselungsalgorithmus der Enigma verständlich sein:

1.     Zeichen vorwärts durch das Steckerbrett, die Walzen 1, 2, 3 und die Umkehrwalze

2.     Zeichen rückwärts durch die Walzen 3, 2, 1 und das Steckerbrett

3.     Walzenvorschub

Im zugehörigen Programmcode (in Python) bezeichnen P[0] die Permutation des Steckerbretts, P[1], P[2], P[3], P[4] die Permutationen der Walzen 1, 2, 3 bzw. der Umkehrwalze, Q[0], Q[1],QP[2], Q[3], Q[4] die zugehörigen Umkehrpermutationen (Q[4] = P[4]) und R[1], R[2], R[3], R[4] die aktuelle Position der betreffenden Walze:

y = P[0][buf[n]] #Zeichen aus buf{0] vorwärts durch das Steckerbrett
for i in range(1, 5): #Walzen 1, 2, 3, UKW
y = P[i][(y – R[i] + R[i – 1]) % 26] #vorwärts durch Walze nr. i
for i in range(3, -1, -1): #Walzen 3, 2, 1 und Steckerbrett
y = Q[i][(y – R[i] + R[i + 1]) % 26] #rückwärts durch Walze/ Brett nr.i
buf[n] = y #Resultat in buf[n] zurück

Walzenvorschub nach dem «Kilometerzählverfahren»:

def rotate(n): #Walzenvorschub nach n-tem Tastendruck
R[1] = (R[1] + 1) % 26 #nach jedem Tastendruck
if n % 26 == 0: #nach voller Drehung von Walze 1
R[2] = (R[2] + 1) % 26
if n % 26*26 == 0: #nach voller Drehung von Walze 2
R[3] = (R[3] + 1) % 26

Alle anderen Deklarationen und Funktionen im vollständigen Enigma Simulationsprogramm in der Abbildung 3 im Anhang dienen  im Wesentlichen dem soeben beschriebenen Kern des Verschlüsselungs-/ Entschlüsselungsalgorithmus. Für das Verständnis zu ergänzen wäre lediglich noch, dass bei der Eingabe der eigentlichen Meldung der bereits erwähnte Nachrichtenschlüssel vorangestellt werden muss, d. h. die Anfangspositionen der drei Walzen müssen in Form dreier Buchstaben, welche die Nordpolpositionen der Walzen zu Beginn der Verschlüsselung bestimmen, mitgeteilt werden.

Die Nema

Wie eingangs bereits angesprochen wurde der Code der Enigma schliesslich gebrochen. Trotzdem wollte man die grundsätzliche Möglichkeit Nachrichten automatisch verschlüsseln zu können keinesfalls wieder aufgeben, und so entstanden verschiedene Weiterentwicklungen der Enigma. Für die Schweiz besonders interessant ist die Nema, deren Konzept von Mitgliedern der Schweizer Armee erfunden wurde.

Die wichtigsten technischen Veränderungen der Nema gegenüber der Enigma in Kürze waren die Erhöhung der Anzahl Codierwalzen (Kontaktwalzen genannt) von drei auf vier, die Aufwertung der Umkehrwalze zu einem drehbaren Reflektor und, last but not least, die Ersetzung des simplen «Kilometerzähler» Walzenvorschubsystems mit einem viel raffinierteren Algorithmus unter Einbezug sogenannter Fortschaltwalzen.

In der folgenden Präsentation stützen wir uns auf das Buch «Die Chiffriermaschine Nema» Nr. 517, entklassifiziert 9. Juli 1992, des Experten Walter Schmid. In formal abstrakter Form kann der Aufbau und die Wirkungsweise der Nema demnach wie folgt beschrieben werden:

1.     Die Grundlage der Nema Verschlüsselungsarchitektur ist ein Durchlaufsystem für elektrische Gleichstromsignale, bestehend aus (von rechts her betrachtet) einer kreuzverdrahteten Anschlussplatte A, einer fest eingebauten, drehbaren, jedoch nicht kreuzverdrahteten, rot lackierten Eintrittswalze EW, gefolgt von vier ebenfalls drehbaren, kreuzverdrahteten, sogenannten «Kontaktwalzen» K1, K2, K3, K4 und zum Abschluss einer ebenfalls drehbaren und involutorisch verdrahteten Umkehrwalze UKW. Damit wird für jede Position des Walzensystems analog zur Enigma eine involutorische Permutation definiert.

2.     Analog zur Enigma fliesst zur Verschlüsselung jedes einzelnen Klartextzeichens ein Gleichstromsignal von der Tastatur her der Reihe nach durch die Stationen A, EW, K1, K2, K3, K4, UKW und zurück in ein Lampenfeld zur Anzeige des verschlüsselten Zeichens. Dabei wird eine Permutation P = B EW L1 L2 L3 L4 UKW K4 K3 K2 K1 EW A (von rechts her gelesen) erzeugt, falls L1, L2, L3, L4 die Umkehrpermutationen zu K1, K2, K3, K4 und B die Umkehrpermutation zu A bezeichnen.

3.     Vollkommen neu ist das Vorschubsystem der Nema. Der Vorschub jeder Kontaktwalze um jeweils eine Position wird von einer zugehörigen Fortschaltwalze über unregelmässig angeordnete Nocken gesteuert. So schaltet die Fortschrittswalze F1 die Kontaktwalze K1 weiter, F2 K2, F3 K3 und F4 die Umkehrwalze UKW. Die Rolle von F1 wird dabei von der Eintrittswalze EW via Nocken auf ihrer linken Seite übernommen.

4.     Die Fortschaltwalzen ihrerseits werden von einem drehbaren Stegmechanismus gesteuert und jeweils um eine Position weitergedreht. Dabei bedienen Steg Nr. 1 die Fortschaltwalzen F1, F3 und FUKW, Steg Nr. 2 die Fortschrittswalzen F2 und F4. Steg Nr. 1 wird von der Eintrittswalze EW bei jedem Tastendruck mitgedreht. Steg Nr. 2 wird ebenfalls von der Eintrittswalze mitgedreht, allerdings in unregelmässigen Abständen gemäss entsprechend angeordneter Nocken auf ihrer rechten Seite.

5.     Das Vorschubsystem ist doppelt indirekt: Das Weiterdrehen einer Kontaktwalze setzt das Weiterdrehen der zugehörigen Fortschaltwalze zu einer Vorschubposition (je nach Mechanismus Anwesenheit bzw. Abwesenheit eines Nockens) voraus und das Weiterdrehen einer Fortschaltwalze setzt das Weiterdrehen des steuernden Stegs ebenfalls zu einer Vorschubposition voraus. Damit wird eine Kontaktwalze also nur dann weitergedreht wenn beide Vorschubpositionen positionsmässig «zusammenfallen».

6.     Die Eintrittswalze EW übernimmt insgesamt also drei Funktionen: a) Drehung gegenüber der Anschlussplatte bei jedem Tastenanschlag um eine Position, b) Integration der Fortschrittswalze F1 über unregelmässig angeordnete Vorschubpositionen auf ihrer linken Seite (links.EW) und c) Steuerung der Stege, insbesondere von Steg Nr. 2 über unregelmässig angeordnete Vorschubpositionen auf ihrer rechten Seite (EW.rechts).

Das gesamte Nema System sieht demnach in abstrakter Form wie folgt aus, wobei in Klammern der jeweils für die Fortschaltung der Fortschaltungswalze zuständige Steg genannt ist:

UKW, FUKW(S1), K4, F4(S2), K3, F3(S1), K2, F2(S2), K1, links.EW.rechts, A, Tastatur/Lampenfeld

Abbildung 2. Die Nema mit 10 Walzen

Die Frage nach der Periodendauer der Nema ist infolge des komplexeren Vorschubmechanismus etwas schwieriger zu beantworten als im Falle der Enigma. Es geht darum die minimale Anzahl von Tastenanschlägen herauszufinden, nach welchen alle Walzen wieder in der ursprünglichen Position sind, sich also um ein Vielfaches von 26 (Zeichen) gedreht haben.

Wir unterscheiden dabei die a) direkt von der Tastatur gesteuerten Walzen, b) die via S1 und Fortschaltwalzen indirekt von der Tastatur gesteuerten Walzen und c) die via S2 und Fortschaltwalzen doppelt indirekt von der Tastatur gesteuerten Walzen:

a)     EW.rechts = S2, links.EW = F1, F3, F5

b)     F2, F4, K1, K3, UKW

c)     K2, K4

Die Steuerungshierarchie (Anzahl Vorschubpositionen in Klammern) sieht folgendermassen aus:

·       S2 (n0) -> F2 (n2), F4 (n4) -> K2, K4

·       F1 (n1) -> K1

·       F3 (n3) -> K3

·       F5 (n5) -> UKW

Mit kgV = kleinstes gemeinsames Vielfaches und

·       N0 = kgV(n0, n1, n3, n5)

·       N1 = kgV(n2, n4)

lässt sich die Periodendauer gemäss folgender Formel berechnen:

·       kgV(N0, 26) // N0 * kgV(N1, 26) // N1 * 26

Einige Beispiele:

n0

n1

n2

n3

n4

n5

Periodendauer

11

5

17

9

3

7

17576

11

5

17

8

3

7

8788

13

5

17

9

3

7

1352

13

5

17

9

3

8

676

13

13

17

8

3

8

676

Wenn die Anzahlen aller Vorschubpositionen teilerfremd zu 26 sind, ergibt sich die maximale Periodendauer 17576 = 26 * 26 * 26, andernfalls verkürzt sich die Periodendauer gemäss Tabelle bis hinunter zu 676.

 

Im folgenden und im Nema-Simulationsprogramm in der Abildung 4 im Anhang verwenden wir folgende Notationen:

·       A, B = Anschlussplatte (Vorwärts-/ Rückwärtspermutation der Zeichennummern 0, …, 25)

·       S = Stegsteuerung der Fortschaltwalzen (binär codiert Nocken/ kein Nocken)

·       F = Fortschaltwalzen zur Steuerung der Kontaktwalzen (binär codiert Nocken/ kein Nocken)

·       K, L = Kontaktwalzen (Vorwärts-/ Rückwärtspermutation der Zeichennummern 0, …, 25)

·       posS, posF, posK = aktuelle Position von S, F, K

Der Kern des Nema-Algorithmus besteht im Verschlüsselungs-/ Entschlüsselungsalgorithmus. Dieser lässt sich in drei Phasen unterteilen:

1.     Walzenvorschubschritt (im Gegensatz zur Enigma vor dem Walzendurchlauf des Zeichens)

2.     Lauf durch die Kontaktwalzen vorwärts (einschliesslich Umkehrwalze)
y = A[buf[i]] #Zeichen buf[i] vorwärts durch die Anschlussplatte
for j in range(1, 6):
#vorwärts durch die Walzen nr. 1, 2, 3, 4, 5(UKW)
z = (y + posK[j]) % 26 #Eingangsposition Walze nr. j
y = (y + K[j][z] – z) % 26 #vorwärts durch Kontaktwalze nr. j

3.     Lauf durch die Kontaktwalzen rückwärts
for j in range(4, 0, -1):
#rückwärts durch die Walzen nr. 4, 3, 2, 1
z = (y + posK[j]) % 26 #Eingangsposition Walze nr. j
y = (y + L[j][z] – z) % 26 #rückwärts durch Kontaktwalze nr. j
buf[i] = B[y] #Zeichen rückwärts durch die Anschlussplatte in buf[i]

Der Code zum Walzenvorschubschritt Nr. 1 seinerseits lautet folgendermassen:

  def rotate():

    for i in range(6): #Walzen nr. 1, 2, 3, 4, 5(UKW)

      if S[i][(posS[i] + off) % 26]: #mit Offset gegenüber Referenzposition

        if F[i][(posF[i] + off – 1) % 26]:

          posK[i] = (posK[i] – 1) % 26

        posF[i] = (posF[i] – 1) % 26

      Spos[i] = (Spos[i] – 1) % 26

Alle anderen Programmteile dienen dem soeben beschriebenem Algorithmenkern bzw. seiner Anwendung und sind weitgehend selbsterklärend.

Wir schliessen unsere Ausführungen ab mit der Präsentation des vollständigen Nema Simulationsprogrammes, einschliesslich einer Testmeldung. Wie im Falle der Enigma-Simulation muss der eigentlichen Meldung der Nachrichtenschlüssel (auch «äusserer Schlüssel» genannt, in der Testmeldung «DISTELFINK») vorangestellt werden, diesmal bestehend aus 10 Zeichen, je einem für jede Fortschaltwalze und einem für jede Kontaktwalze:

Schlussbemerkung

Nachdem die Enigma, die während des Zweiten Weltkrieges auch in der Schweiz (in Form einer modifizierten «Enigma-K» Version) Verwendung fand, geknackt war, wurde die Nema vom Schweizer Militär als knacksicherere Nachfolge entwickelt und ab 1946 von Zellweger AG in Uster gebaut. Sie wurde bis Ende der 1950er Jahre für militärische und diplomatische Zwecke eingesetzt, ohne allerdings je im Krieg gestanden zu sein, da dieser bei ihrer Fertigstellung bereits zu Ende war. Im Jahre 1982 wurde sie entklassifiziert. Es gibt keine Hinweise, dass sie je geknackt worden wäre.

 

Abbildung 3. Enigmasimulation Programmcode

 

 

Abbildung 4. Nemasimulation Programmcode

Mit Ihrem Besuch auf unserer Website stimmen Sie unserer Datenschutzerklärung und der Verwendung von Cookies zu. Dies erlaubt uns unsere Services weiter für Sie zu verbessern. Datenschutzerklärung

OK