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.
Hier werden die Rotoren wie bei einem Stromzähler oder Tachometer weitergeschaltet: Jeder Rotor hat einen »Mitnehmer«, einen Nippel, 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 = s(a0) | ||
z(1) | z11 | z12 | ... | ... | z1q | c1 = s(a1) | ||
z(2) | z21 | z22 | ... | ... | z2q | c2 = s(a2) | ||
: | : | : | : | : | ||||
z(i) | zi1 | zi2 | ... | ... | ziq | ci = s(ai) | ||
: | : | : | : | : |
Der i-te Zustand wird durch folgende Gleichung beschrieben, wobei das Alphabet S 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 andere Realisierung dieses Prinzips, der »Stangenkorb« wurde von Hagelin erfunden und ist bei der M-209 im geöffneten Zustand deutlich zu erkennen [bei der er aber auf etwas andere Weise wirkt - die M-209 ist ein Schlüssel-Erzeuger und keine elektrische Rotor-Maschine]. Anstelle der individuellen Zahnräder wird ein Zylinder verwendet, der über die ganze Breite des Walzenkorbs reicht und an entsprechenden Stellen Mitnehmer für die einzelnen Rotoren hat. Die Wand des Zylinders besteht aus Stangen, auf denen als Mitnehmer aufsteckbare oder zumindest verschiebbare Nippel angebracht sind.
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.
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. Nach diesem Prinzip soll die amerikanische Super-Rotormaschine SIGABA gearbeitet haben.
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+l(z5), z2, z3+l(z1)l(z5), z4, z5+1)Die Periode ist also 263 = 17576.
mit l(x) = dx,25 (Kronecker-Symbol).