[JoGu]

Kryptologie

Rotor-Maschinen: Beispiele für die Steuerlogik

a7Hzq .#5r<
kÜ\as TâÆK$
ûj(Ö2 ñw%h:
Úk{4R f~`z8
¤˜Æ+Ô „&¢Dø

Hier werden fünf Beispiele für die Steuerlogik von Rotor-Maschinen behandelt - zwei idealisierte, die in der Praxis meist komplizierter konstruiert wurden: das Zählwerk und der Stangenkorb, zwei realistische: die ungleichen Antriebszahnräder und die pseudozufällige Weiterschaltung, und eine historische: die Hebern-Maschine. Die Steuerlogik der Enigma wird später behandelt.

Die Erkenntnis, dass die Steuerlogik für die Sicherheit einer Rotor-Maschine von entscheidender Bedeutung ist, hatte wohl FRIEDMAN als erster, nachdem er die HEBERN-Maschine gebrochen hatte. Er entwickelte dann selbst die »ultimative« Rotor-Maschine SIGABA.


Beispiel 1: Das Zählwerk

Hier werden die Rotoren wie bei einem Stromzähler oder Tachometer weitergeschaltet: Jeder Rotor hat einen »Mitnehmer«, z. B. einen Nippel oder eine »Schaltnocke«, der nach einer vollen Umdrehung den Nachbar-Rotor um eine Stelle weiterbewegt. Die Rotoren sollen dabei wie folgt angeordnet sein:

[Rotor-Anordnung]

Die Zustandsfolge sieht allgemein so aus:

ZustandRotorstellungen Substitution
z(0) z01z02 ......z0q c0 = σ(a0)
z(1) z11z12 ......z1q c1 = σ(a1)
z(2) z21z22 ......z2q c2 = σ(a2)
:: :   ::
z(i) zi1zi2 ......ziq ci = σ(ai)
:: :   ::

Der i-te Zustand wird durch folgende Gleichung beschrieben, wobei das Alphabet Σ mit Z/nZ identifiziert wird und modulo n addiert wird:

[Zählwerk-Formel]

Bemerkungen

  1. Der q-te, rechte, Rotor ist in diesem Beispiel ein »schneller« Rotor: Er dreht sich bei jedem Schritt.
  2. Dagegen ist der erste, linke, Rotor ein »langsamer« Rotor. Er dreht sich fast nie - nur alle nq-1 Schritte, also überhaupt nur bei sehr langen Nachrichten.
  3. Die Zählerfortschaltung kann natürlich genauso leicht auch umgekehrt realisiert werden, so dass der linke, der Input-Rotor, der schnelle und der rechte, der Output-Rotor, der langsame ist.
  4. Einer andere, in der Praxis auch verwendete Methode ist, den j-ten Rotor nicht erst nach nq-j Schritten weiterzubewegen, sondern schon wenn der Zustand zi,j-1 = n erreicht wird. Das ist je nach Anfangszustand viel früher und entspricht mehr der intuitiven Vorstellung von einem Zähler.
  5. In jedem Fall hat die Zustandsfolge die Periode nq.


Beispiel 2: Zahnlücken

Eine unregelmäßige Fortschaltung, bei der es aber keine langen Pausen für einzelne Rotoren gibt, kann man erreichen, indem man jeden Rotor durch ein Zahnrad antreibt, das unterschiedliche Lücken hat:

[Zahnantrieb mit Lücken]

Die ersten Modelle der Enigma (Modell A und B) hatten solche Antriebszahnräder (die außerdem auch noch verschiedene Umfänge hatten).

Eine übliche Realisierung dieses Antriebs ist das Bolzenrad (Stiftwalze, Sprossenrad, Schlüsselrad, »pin wheel«) mit einstellbaren Bolzen oder Schaltstiften. Hier werden Bolzen nach links oder rechts geschoben; eine von beiden Positionen ist die aktive, bei der das Nachbarrad zum Weiterdrehen veranlasst wird, die andere Position ist die passive. Eine Illustration von der HAGELIN-Maschine M-209:

[Schlüsselrad]

wo die Bolzen allerdings nicht ein Zahnrad weiterbewegen, sondern einen Hebel auslenken. [Die M-209 ist auch ein Schlüssel-Erzeuger und keine eigentliche Rotor-Maschine.]

Eine andere Realisierung dieses Prinzips, der »Stangenkorb« wurde von HAGELIN erfunden und ist ebenfalls bei der M-209 im geöffneten Zustand deutlich zu erkennen. Anstelle eines Zahnrades wird ein Zylinder aus Stangen verwendet, der über die ganze Breite des Walzenkorbs reicht und einstellbare Nippel (»lugs«) hat. Diese bewirken, wenn ein aktiver Bolzen eines Schlüsselrads den Hebel auslöst, eine Verschiebung der jeweiligen Stange nach links. In jeder Phase sind also einige Stangen links herausgeschoben und einige nicht, so dass wieder eine Art Zahnlückenrad entsteht.

Ein einzelnes Antriebsrad kann man durch einen binären Vektor charakterisieren: 1 bedeutet Zahn, 0 bedeutet Zahnlücke:

u(j) = (uj0,...,uj,t-1)F2t     für j = 1, ..., q;
dabei ist t der Umfang des Antriebsrads (muss nicht notwendig = n sein); wir können ihn also insgesamt durch eine Matrix

[Zustandsänderungs-Matrix]

beschreiben. Die Spaltenvektoren

u(i) = (u1i,...,uq,i)F2q     für i = 0, ..., t-1
werden periodisch fortgezählt und ergeben so eine Folge der Periode t.

Die Zustandsänderung wird damit so beschrieben: Im Schritt i bewegt sich der j-te Rotor

Die Zustandsänderung geht also nach der Formel
z(i+1) = z(i) + u(i),
wobei in (Z/nZ)q addiert wird.

Natürlich kann man das Antriebsrad mit Zahnlücken auch durch ein Antriebsrad mit allen Zähnen ersetzen, das aber seinerseits durch eine Steuerlogik jeweils um eine oder null Stellen weitergedreht wird.


Beispiel 3: Die ungleichen Antriebszahnräder

Hier hat jeder Rotor ein eigenes Antriebszahnrad; diese sitzen auf einer gemeinsamen Achse und machen bei jedem Buchstaben eine volle Drehung. Rotor 1 wird also um n1 Stellungen weitergedreht, wenn n1 die Zahl der Zähne seines Antriebsrades ist. Analog für die anderen Rotoren. Die Periode des Zustandes ist daher das kgV(n1, ...,nq). Besonders günstig sind also paarweise teilerfremde Zahnanzahlen, z. B. die Folge 17, 19, 21, 23, 25, 29, 31, 32.

Dieses Prinzip wurde - mit Zahnlückenrädern - bei den ersten Versionen der Enigma mit den Zahlen 11, 15, 17, 19 verwendet.


Beispiel 4: Die pseudozufällige Weiterschaltung

Hierbei wird die Folge der Weiterschaltungen für jeden Rotor nach einem Pseudozufallszahlen-Algorithmus bestimmt; in einer Computersimulation ist das leicht, für eine elektromechanische Rotormaschine kann man etwa zusätzlich einen Schlüsselerzeuger wie die späteren HAGELIN-Maschinen zur Steuerung des Antriebs verwenden.

Dass ein regelmäßiges Weiterschalten der Rotoren, etwa nach dem Zählwerk-Schema, eine deutliche Schwäche ist, hat FRIEDMAN in den Zwanziger- und Dreißigerjahren des 20. Jahrhunderts aus der Analyse verschiedener Rotormaschinen gefolgert. Er propagierte daraufhin die Idee einer (pseudo-) zufälligen Weiterschaltung; dazu experimentierten die Amerikaner zunächst mit einer Steuerung durch Lochstreifen, die sich aber wegen technischer Schwierigkeiten nicht durchsetzte. Um 1940 hatte dann ROWLETT die Idee, die Steuerlogik durch einen weiteren Satz von Rotoren zu bewirken. Nach diesem Prinzip wurde die amerikanische Super-Rotormaschine SIGABA konstruiert.

Näheres dazu in dem Buch

Stephen J. Kelly: Big Machines. Aegean Park Press, Walnut Creek 2001, ISBN 0-89412-290-8.


Beispiel 5: Die Hebern-Maschine

Die HEBERN-Maschine hat q = 5 Rotoren und verwendet das Standard-Alphabet mit n = 26. Die Steuerlogik ist ein Zählwerk, wobei allerdings nicht der benachbarte Rotor, sondern über eine etwas kompliziertere Mechanik ein anderer weitergeschaltet wird, und zwar genauer:

Die Zustandsänderung folgt also der Gleichung (im wesentlichen - siehe »Besonderheiten«)

g(z1, z2, z3, z4, z5) = (z1+λ(z5), z2, z3+λ(z1)λ(z5), z4, z5+1)

mit λ(x) = δx,25 (Kronecker-Symbol).
Die Periode ist also 263 = 17576.

Besonderheiten


Autor: Klaus Pommerening, 1. Januar 2000; letzte Änderung: 2. Februar 2014.