![]() |
KryptologieRotor-Maschinen: Beispiele für die Steuerlogik |
|
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.
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:
Die Zustandsfolge sieht allgemein so aus:
Zustand | Rotorstellungen | Substitution | ||||||
---|---|---|---|---|---|---|---|---|
z(0) | z01 | z02 | ... | ... | z0q | c0 = σ(a0) | ||
z(1) | z11 | z12 | ... | ... | z1q | c1 = σ(a1) | ||
z(2) | z21 | z22 | ... | ... | z2q | c2 = σ(a2) | ||
: | : | : | : | : | ||||
z(i) | zi1 | zi2 | ... | ... | 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:
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:
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:
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
beschreiben. Die Spaltenvektoren
u(i) = (u1i,...,uq,i) ∈ F2q für i = 0, ..., t-1werden 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
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.
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.
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.
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)Die Periode ist also 263 = 17576.
mit λ(x) = δx,25 (Kronecker-Symbol).