CODEERMACHINES EN CRYPTOGRAFIE
Technische details van de Enigma
Home Geschiedenis Procedures Technische Details Enigma Simulator


Op deze pagina vindt u de technische details van de Wehrmacht en Luftwaffe Enigma, en de Kriegsmarine Enigma M4. U kunt alle foto's in hogere resolutie bekijken door ze aan te klikken.


Wehrmacht Enigma I
© D. Rijmenants

Enigma M4
© D. Rijmenants


Stroomdiagram van de Enigma
Top

De Enigma-machine is een elektromechanisch toestel, bestaande uit een toetsenbord (Duits type QWERTZ), een lampenpaneel dat het alfabet voorstelt, en drie of vier rotors waarvan de interne bedrading telkens een alfabetische substitutie uitvoert. Bij het indrukken van een letter op het toetsenbord beweegt een stappenmechanisme de rotors en vertaalt het elektrisch systeem de toets in een oplichtende lamp die de gecodeerde letter voorstelt. Er bevindt zich een batterijvak in het toestel maar op het frontpaneel er is ook een aansluiting voorzien om de machine te voeden met een uitwendige stroombron, of men kan de ingebouwde kleine transformator gebruiken om het toestel op het elektriciteitsnet aan te sluiten.

Een Enigma I met open deksel. Van links naar rechts: de B reflector, de drie rotors, de ingangsrotor (zwart) en het batterijvak (zwart vierkant). Onder het batterijvak zien we de contacten van de schakelaar. Onder de rotors ligt het lampenpaneel. Op de tweede rij van het lamppaneel links zit een reservelampje en rechts een uitsparing om lampjes te testen. © Foto D. Rijmenants

In bovenstaande voorbeeld vloeit de stroom van de batterij [1] via de ingedrukte wisselschakelaar toets A [2] naar het stekkerbord of "Steckerbrett" [3]. De stroom gaat door de ongebruikte en daarom doorverbonden A socket [3] via de vaste ingangsrotor of "Eintrittwalze" [4] door de bedrading van de drie rotoren of "Walzen" [5] om bij de reflector of "Umkehrwalze" [6] aan te komen. De reflector stuurt het signaal via een ander pad terug door de rotors [5] en de ingangsrotor [4] en vervolgens via het stekkerbord naar de geopende S socket [7]. De kabel met twee stekkers of "Stecker" [8] stuurt het signaal via de D socket naar toets D [9] om gloeilamp D te laten branden.

Het stekkerbord stuurt en ontvangt het signaal van en naar de vast ingangsrotor, rechtstreeks of omgewisseld met een andere letter via een snoer met twee stekkers. Als er geen stekker in een socket zit, zijn de twee zijden van die socket met elkaar verbonden via een brug (rode balkje). Wanneer een stekker wordt ingestoken, wordt de brug opgetild, waardoor de twee zijden van de socket losgekoppeld zijn en wordt het signaal omgeleid via de stekkers. Het is onmogelijk om de stekkers verkeerd in de sockets te steken omdat de stekkers een dikke en dunne pin hebben.

Opgelet: Bij vercijfering zal het indrukken van de toets eerst de rotors voortbewegen en daarna de stroom door rotors en lamp sturen. Als de toets wordt losgelaten gaat de lamp uit. Is er geen toets ingedrukt, dan is de rotorpositie, zichtbaar in de kleine venstertjes, dus de rotorpositie van de vorige vercijferde letter!

Onderstaande afbeelding toont de mechanische en elektrische opstelling van de Enigma, gezien van de rechterkant. In dit voorbeeld de bedrading met drie toetsen, drie lampjes en één stekker-snoer. Rechts de aansluiting op de vaste ingangsrotor, het batterijvak (grijze zone) en de spannings-selector. In werkelijkheid is de bedrading gegroepeerd in bundels van 26 draden naar het stekkerbord, de ingangsrotor en lampenpaneel. Zie ook 3D video.



De Rotors
Top

De rotors (Walzen in Duits) zijn de belangrijkste elementen van de codering. Deze ronde schijven [9] van ongeveer 10 cm zijn vervaardigd uit bakeliet en metaal, met in het midden een kern met aan de rechterkant zijn er 26 verende contacten [6] en aan de linkerzijde 26 vlakke contacten [4] en een holle as [8]. De contacten aan beide zijden zijn verbonden door middel van een interne bedrading [5]. Rond de kern met de bedrading zit een beweegbare ring [3] met 26 letters of cijfers en een nok [1]. Deze ring kan gedraaid en vergrendeld worden met een verende pin [7] (Wehrmacht) of twee verende bogen (Kriegsmarine) zodat de positie ten opzichte van de interne bedrading wijzigt. Dit is de ringinstelling of Ringsstellung en deze positie is zichtbaar met een dot markering [2]. Elke rotor heeft aan één zijde een getande ring [10] en aan de andere zijde een nok [1]. Beiden worden gebruikt om met het stappenmechanisme de rotors te bewegen. De rotors kunnen ook manueel in de gewenste positie gezet worden. De bedrading is de feitelijke code en verschilt voor elk van de beschikbare rotors. Elke rotor functioneert als een eenvoudige substitutie-vercijfering. Het is de combinatie van verschillende rotors in serie, in verschillende posities, die de codering zo complex maakt.

Initieel werd de Enigma geleverd met drie rotors. Vanaf 1939 werden de Wehrmacht en Luftwaffe machines uitgerust met een set van vijf verschillende rotors om uit te kiezen, genaamd I, II, III, IV en V. Deze rotors hadden één nok. De Kriegsmarine werd initieel voorzien van vijf, dan zeven, en tenslotte acht rotors, genaamd VI, VII en VIII. Deze drie extra rotors hadden twee nokken, waardoor de snelheid van rotorbewegingen verdubbelde bij de rotors die volgden op zo'n rotor.

Vanaf begin 1942 werd een vierde rotor, ook Griekse rotor genoemd, geïntroduceerd op het beruchte M4 Kriegsmarine model. Er waren twee verschillende, genaamd Beta en Gamma. Deze waren echter niet verwisselbaar met de andere rotors. Om een vierde rotor te kunnen plaatsen werd een nieuwe versmalde reflector gebruikt waartegen de vierde rotor werd geplaatst. Deze vierde rotor kon niet bewegen door het ontbreken van een vierde pal, maar kon manueel in 26 verschillende posities worden gezet.






Enigma rotor exploded view.
Bron:
Eric Pierce - Wikipedia

De drie rotors op hun as
© D. Rijmenants

Linkerzijde rotor met de nok (links)
© D. Rijmenants

Rechterzijde rotor met tanden
© D. Rijmenants

Kriegsmarine rotor met twee nokken
(klik om te vergroten)
© D. Rijmenants

Wehrmacht
ring met pin
© D. Rijmenants

Kriegsmarine
ring met bogen
© D. Rijmenants


De reflector
Top

De reflector, Umkehrwalze of UKW in het Duits, is wat de Enigma machine onderscheidde van andere elektromechanische codeertoestellen. Bij de interne bedrading van de beweegbare rotors kan elke letter met een andere verbonden worden. Zo kan ‘A’ met ‘F’ verbonden worden, en ‘F’ met ‘K’. Bij de reflector worden de letters echter in lussen verbonden. Als ‘A’ met ‘F’ is verbonden, is dit ook omgekeerd het geval. Hierdoor ontstaat een reciproke codering. Het grote voordeel is dat wanneer bijvoorbeeld ‘G’ in ‘X’ wordt gecodeerd, men enkel maar dezelfde codering hoeft toe te passen op de ‘X’ om de ‘G’ terug te bekomen. Hierdoor hoefde de operator tijdens het decoderen geen andere handelingen uit te voeren dan tijdens het coderen. Een nadeel dat later een zwakke schakel in de codering bleek, is dat een letter nooit in zichzelf gecodeerd kan worden.

Tijdens de Tweede Wereldoorlog zijn voor de Wehrmacht machine twee typen reflectors gebruikt: B en C. Beiden hebben verende contacten. De vier-rotor Kriegsmarine Enigma had speciale smalle reflectors, ook B en C genoemd, maar met een andere interne bedrading. Deze waren echter compatibel met de brede B en C reflectoren indien de smalle B met de Beta rotor in A positie of small C met Gamma rotor gebruikt werd. Hierdoor was communicatie tussen Wehrmacht, M3 en M4 modellen mogelijk. De smalle reflectors hadden geen verende maar vaste vlakke contacten. Daarom hadden de speciale Beta en Gamma rotors verende contacten aan beide zijden.

Tegen het einde van de oorlog werd de D reflector geïntroduceerd in de Luftwaffe. Deze kon door middel van 12 draden met 24 stekkers worden aangepast. De dertiende verbinding was vast aangebracht. De vier-rotormachines van de Kriegsmarine zijn voorzien van speciale smalle reflectors, ook B en C genaamd, maar met een andere interne bedrading.


Interne bedrading van rotors en reflectors
Top

De interne bedrading en rotatie van de rotors voert de eigenlijke encryptie uit. In alle volgende tabellen is de "input" zijde de rechterzijde van de rotor, zoals gezien in de machine. We zien dat bij de rotor type I een 'A' vercijferd wordt als een 'E', een 'B' als 'K', en een 'K' als 'N'.

De letters A tot Z zijn slechts de benaming van de pin-posities op de rotors. Deze letters hebben absoluut niets te maken met de signaal-route of letters door de machine, of de letters van toetsen of stekkerbord. Het "A" signaal, komende van het stekkerbord, kan net zo goed toekomen op de "X" pin van de rotor, afhankelijk van de huidige rotatiepositie en ringinstelling van die rotor.

Hieronder de tabel met de bedrading van de standaard rotors voor Wehrmacht, Luftwaffe en Kriegsmarine:

Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rechterzijde rotor) |||||||||||||||||||||||||| I = EKMFLGDQVZNTOWYHXUSPAIBRCJ II = AJDKSIRUXBLHWTMCQGZNPYFVOE III = BDFHJLCPRTXVZNYEIWGAKMUSQO IV = ESOVPZJAYQUIRHXLNFTGKDCMWB V = VZBRGITYUPSDNHLXAWMJQOFECK

De B reflector van de Wehrmacht Enigma
© D. Rijmenants


Kriegmarine Beta rotor met smalle B reflector
© D. Rijmenants

Bijkomende rotors, enkel gebruikt door Kriegsmarine voor het M3 en M4 model:

Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rechterzijde rotor) |||||||||||||||||||||||||| VI = JPGVOUMFYQBENHZRDKASXLICTW VII = NZJHGRCXMYSWBOUFAIVLPEKQDT VIII = FKQHTLXOCBJSPDZRAMEWNIUYGV

De speciale vierde rotor, ook wel Zusatzwalzen of Griekse rotors genoemd. Enkel gebruikt bij de Kriegsmarine M4:

Input = ABCDEFGHIJKLMNOPQRSTUVWXYZ (rechterzijde rotor) |||||||||||||||||||||||||| Beta = LEYJVCNIXWPBQMDRTAKZGFUHOS Gamma = FSOKANUERHMBTIYCWLQPZXVGJD

In de tabel voor reflectoren zien we dat bij de brede B reflector de 'A' is verbonden met de 'Y', en de 'Y' met de 'A'. Zoals u merkt zijn de letters, in tegenstelling tot de rotor, verbonden in lussen.

De normale brede reflectors voor Wehrmacht en Luftwaffe:

Contacten = ABCDEFGHIJKLMNOPQRSTUVWXYZ |||||||||||||||||||||||||| Reflector B = YRUHQSLDPXNGOKMIEBFZCWVJAT Reflector C = FVPJIAOYEDRZXWGCTKUQSBNMHL

De smalle Kriegsmarine reflectoren, enkel gebruikt bij het M4 model:

Contacten = ABCDEFGHIJKLMNOPQRSTUVWXYZ |||||||||||||||||||||||||| Reflector B smal = ENKQAUYWJICOPBLMDXZVFTHRGS Reflector C smal = RDOBJNTKVEHMLFCWZAXGYIPSUQ

De hierboven beschreven bedradingen zijn voor de rotors van Wehrmacht, Luftwaffe en Kriegsmarine Enigma's. De rotors van andere versies van het Enigma toestel hebben een andere interne bedrading.


De rotor encryptieTop

Een rotor bestaat uit twee hoofddelen. Het eerste deel is de beweegbare ring met het alfabet (zichtbaar in het kleine venstertje) en nok voor het stappen van de rotors. Het tweede deel is de kern met de inwendige bedrading (de eigenlijke codering) en de 2 x 26 contacten. Deze kern is bevestigd aan het grote duimwiel. De positie van de ring veranderen noemt men de ringinstelling of 'Ringstellung' en veranderd de positie van de alfabet-ring en zijn nok, ten opzichte van de interne bedrading.

The route van het elektrisch signaal begint van rechts naar links. Het signaal komende van het stekkerbord komt toe op de vaste ingangsrotor, rechts in het rotor-compartiment, en gaat van rechts naar links verder door de rechtse, de middelste en uiteindelijk de linkse rotor. Eens door alle drie rotors (of vier bij M4) gaat het signaal in de reflector die het signaal terugstuurt door de linkse, middelste en rechtse rotor, en dit via een volledig andere route, wat een heel andere encryptie veroorzaakt dan de eerste passage. Het is duidelijk dat de combinatie van rotor-bedradingen, rotor posities en ring-instellingen met onregelmatig stappen van de rotors een zeer complexe encryptie veroorzaakt. Eén enkele stap van een rotor veroorzaakt een volledig andere route door de drie rotors.

Denk er aan dat, wanneer men een toets indruk, de rotors voortbewegen alvorens het elektrische signaal door de rotors loopt. Om de weg van de stroom door de rotor in A positie te volgen moet men de rotor dus in Z positie zetten alvorens de toets in te drukken (zo ook bij de andere rotors indien die net gaan bewegen)! In de voorbeelden hierboven zijn er geen stekkers gebruikt op het stekkerbord en gaat het signaal dus van de A toets rechtstreeks via de ingangsrotor naar rotor I.

In de onderstaande afbeeldingen gebruiken we de Enigma rotor type I (Romeinse 1). De verstelbare ring is het verticaal grijze gedeelte. De bedradingskern, met het duimwiel eraan vast, is het lichtere gedeelte (in werkelijkheid staan er geen letters op het lichte vlak). De positie van de rotor is aangegeven door de letter in het zwarte kadertje (het venstertje op het deksel). De kleine zwarte rechthoek, rechts van de ring, is de vergrendelingspin om de ring vast te zetten, en geeft de ringinstelling aan.

De letters rechts buiten de rotor zijn de pinnen van de ingangsrotor. De letters links buiten de rotor zijn ook uitgelijnd met de letters van de vaste ingangsrotor. De A pin gaat enkel naar de rechts A pin van de volgende rotor als die volgende rotor in de dezelfde positie staat met dezelfde ringinstelling!

De eerste voorbeelden tonen hoe rotor I met ringinstelling A-01 (pin of dot langs A) en twee opeenvolgende toetsaanslagen van de letter A. Weet dat de rotor in de Z positie was voor de toets werd ingedrukt en de rotor nu naar de A positie is bewogen.

Links ziet u rotor I in de A positie (zichtbaar in kleine venstertje). Het signaal komende van de A toets komt aan bij de vaste ingangsrotor op de A positie, gaat in de rotor op A positie en via de inwendige bedrading naar het E contact dat zich op de E positie bevindt.

Rechts ziet u dat de rotor één stap werd voortbewogen naar de B positie. Het signaal komt weer toe op de ingangsrotor A positie, gaat de rotor in via het B contact en door de bedrading naar het K contact. Aangezien de hele rotor één positie verschoven is, bevind het K contact zich nu echter op de J positie en zal het signaal daarom de rotor verlaten op de J positie naar de volgende rotor!

Op de rotors is de 'Ringstellung' aangeduid door de blokkeerpin (Wehrmacht) of door een kleine dot markering (Kriegmarine) op de draaibare kern van de rotor en toont de positie van het eerste contact (A) van de bedrading. Ringinstelling F of 06 zal de letter C of de cijfers 06 op de buitenste ring dus op één lijn brengen met het eerste contact van de rotor, aangeduid met de pin of dot.

Als de ringsinstelling één positie verschuift zal ook en encryptie één positie verschuiven. De ringinstelling mag niet verward worden met de rotorpositie, aangeduid door de letter op de buitenste ring, zichtbaar is in het kleine venstertje op het deksel van de machine.

De volgende voorbeelden tonen het effect van verschillende ringinstellingen.

Links ziet u rotor I met een ringinstelling B-02 (pin of dot op B) en de rotor staat in de A positie (zichtbaar in het kleine venster). Het signaal van de ingedrukte A toets kom toe op ingangsrotor A positie, en lijkt van buitenaf de rotor binnen te gaan op de A positie In werkelijkheid gaat het signaal de rotor binnen op het Z contact en verlaat de rotor via het J contact.

Vanwege de ringinstelling is de bedradingskern één positie opgeschoven en de uitgangscontacten zijn dus ook opgeschoven. Daarom bevindt het J contact zich nu in de K positie en verlaat het signaal de rotor dus in de K positie naar de volgende rotor. Het is verwarrend, maar dat was ook de bedoeling van de ringinstelling.

Rechts ziet u dezelfde rotor I, maar met ringinstelling F-06. De rotor staat in de Y positie. Het signaal komt toe op de ingangsrotor A positie en gaat via het rotor T contact door de bedrading naar het P contact. Echter, de combinatie van de rotorpositie en de ringinstelling veroorzaakt een verschuiving van zeven posities van alle uitgangscontacten. Daarom bevindt het P contact zich nu in de U positie en verlaat het signaal de rotor dus in de W positie naar de volgende rotor.

Weet dat het signaal de drie rotors aan de linkerkant verlaat en de reflector vervolgens het signaal terug naar rechts door de rotors stuurt, ditmaal via een andere complexe route, afhankelijk van de rotorposities en ringinstellingen.

Er is een uitstekende online Java Enigma simulator van Daniel Palloks om mee te experimenteren. De simulatie toont duidelijk de route van het signaal door de rotors. Klik de knop "Show Monitor". In die monitor, PLG is plugboard, ETW is ingangsrotor, -W- zijn de rotors, en UKW is de reflector. Groene pijlen zijn heen, rode pijlen terug,



Het stappenmechanisme Top

Het continu veranderen van de positie van de verschillende rotors zorgt ervoor dat elke letter telkens weer anders gecodeerd wordt. De rechtse (snelste) rotor beweegt telkens wanneer een toets gedrukt wordt. De middelste rotor beweegt slechts éénmaal per 26 stappen van de rechtse rotor (wanneer de rechtse rotor één nok heeft). De linkse rotor beweegt éénmaal per 26 stappen van de middelste rotor.

Bij het drukken van een toets beweegt het stappenframe [1] naar beneden en de as [2] met drie (spiraal-verende) pallen omhoog. Als deze as omhoog komt bewegen de pallen in de richting van de rotors. Elke pal [3] is voor de helft geplaatst over de alfabetring (met nok) van de ene rotor; de andere helft over de getande ring van de rotor links daarvan.

Als een rotor in zijn nok-positie staat kan zijn pal verder richting rotor bewegen, in de getande ring grijpen en de rotor één stap voortbewegen. Als de rechtse rotor niet in de nok-positie is zal de pal over zijn nok-ring glijden en niet in de tanden van de rotor links ervan kunnen grijpen. Gezien er rechts van de meest rechtse rotor geen rotor is met nok, zal de rechtse pal bij elke toetsaanslag de rotor voortbewegen.

Wanneer er geen toets gedrukt is, duwt de as [2] de drie pallen naar beneden. De onderkant van de pal-constructie duwt hierdoor tegen de bodem van het toestel waardoor de bovenkant van de pal - die in de tanden of nok grijpt - wordt weggedrukt van de rotor. Hierdoor kan men alle rotors manueel in beide richtingen draaien indien er geen toets ingedrukt is.

Stepping Mechanism by Dirk Rijmenants

De positie van de nok is verschillend voor elk van de rotors. In onderstaande tabel zien we dat rotor I een nok heeft aan letter Y. Als deze nok tegenover zijn pal staat is de letter Q zichtbaar in het kleine venstertje. Daarom zal de rotor links van rotor I een stap maken als rotor I van Q naar R stapt (cryptanalisten gebruikten het ezelsbrugje Royal Flags Wave Kings Above om de posities van de rotors na het stappen te onthouden). Bemerk dat de Kriegsmarine rotors VI, VII en VIII twee in plaats van één nok hebben. Hierdoor zal de rotor links van zo'n rotor eens zo snel voortbewegen als normaal.

Rotor Nok Venster Rotor links van deze rotor stapt als deze stapt van:
I
II
III
IV
V
VI VII VIII 
Y
M
D
R
H
H + U
Q
E
V
J
Z
Z + M
Q -> R
E -> F
V -> W
J -> K
Z -> A
Z -> A + M -> N

De drie pallen op hun as, rustend op de bodem-pads. De as is bevestigd aan het stappenframe (zilveren L-vorm). Rechts van de pallen is de vaste ingangsrotor.
© D. Rijmenants


Tandwielmechanisme van de speciale voorganger van de Enigma G. Bemerk de normale plaatsing van de rotor contacten in plaats de latere speciale G rotors met smalle geschraagde contacten. © D. Rijmenants

Belangrijke opmerking i.v.m. het Stappen: Hoewel het stappenmechanisme op het eerste zicht lijkt te werken als een kilometerteller, is er een belangrijk verschil. Eenmaal per volledige omwenteling zal de middelste rotor twee maal na elkaar een stap zetten. Dit wordt de dubbel-stap genoemd. Een voorbeeld: KDO, KDP, KDQ, KER, LFS, LFT (gebruikte rotors zijn III,II,I). Een dubbel-stap gebeurt als volgt: Wanneer de eerste (rechtse) rotor in zijn nok-positie staat en men een toets drukt neemt hij de middelste rotor één stap mee. Indien de middelste rotor door deze stap in zijn eigen nok-positie komt kan bij de volgende stap de derde pal de linkse rotor - via de tandring - één stap verder duwen, maar zal diezelfde pal eveneens in de nok van de middelste rotor duwen en deze een stap verder bewegen. Hierdoor stapt de middelste rotor dus twee maal na elkaar. Er dient nog vermeld dat het drukken van een toets eerst de rotors zal bewegen en pas daarna de stroom door de contacten zal laten vloeien om de letter te coderen.

Het stappenmechanisme zoals hierboven beschreven werd gebruikt door de Wehrmacht en de Kriegsmarine machines. De Enigma-G van de Abwehr werkt totaal verschillend. De Enigma-G heeft een draaiende reflector en drie rotors met meerdere nokken met onregelmatige tussenafstanden, die worden aangedreven door tandwielen.van één nok hebben. Hierdoor zal de rotor links van zo'n rotor eens zo snel voortbewegen als normaal.


Het stekkerbord Top

Het stekkerbord of Steckerbrett werd in 1930 geïntroduceerd op de eerste versies van de Wehrmacht. Dit stekkerbord is vooraan de machine geplaatst. Zonder stekkers vloeit de stroom van elke toets naar de corresponderende letter van de ingangsrotor. Indien een kabel met twee stekkers wordt geplaatst, verbindt men een letterpaar.

Hierdoor worden de twee letters gewisseld voor ze naar de ingangsrotor gaan. Er werden standaard per machine een set van 10 kabeltjes voorzien. Het stekkerbord was een uitbreiding die de sterkte van encryptie van de Enigma-machines flink verbeterde.

Elke letter heeft twee bussen. Inbrengen van een tweepolige stekker verbreekt de bovenste bus, komende van het toetsenbord, en de onderste bus, die naar de ingangsrotor gaat. De stekker aan het andere einde van de gekruiste kabel steekt in een andere letter, waardoor de verbinding tussen de twee letters gewisseld wordt.

Het stekkerbord van de Wehrmacht Enigma
© D. Rijmenants

Accessoires Top

Een handige toevoeging aan de M4 Enigma was de Schreibmax, een kleine printer die op een smalle papierstrook de 26 letters kon afdrukken, waardoor een tweede operator voor het aflezen van de lampjes overbodig was. De Schreibmax werd bovenop de Enigma-machine geplaatst en was aangesloten op het lampenpaneel. Hiervoor dienden het lampenpaneel en alle lampjes verwijderd te worden.

De taak van de tweede operator kon ook vereenvoudigd worden door een extern lampenpaneel of Fernlesegerät. Als de machine was voorzien van zo'n extern paneel was de behuizing van de Enigma breder om het extra paneel te kunnen bewaren. Er was ook een uitvoering die nadien kon aangesloten worden, maar daarvoor moest net als bij de Schreibmax het lampenpaneel en de lampjes verwijderd worden. Een ander voordeel van dit paneel was extra veiligheid. Een gemachtigd persoon kon het ontcijferde bericht lezen, terwijl dit voor de operator onzichtbaar was.

In 1944 werd op de Luftwaffe Enigma een extra mechanisme geïntroduceerd, de zogenaamde Uhr (klok). Dit was een los kastje met daarin een schakelaar met 40 standen. Hiermee kon men de kabels, ingesteld volgens de Tagesschlüssel op eenvoudige wijze op 40 verschillende manieren verbinden. De meeste van deze instellingen waren niet paarsgewijs, zoals gebruikelijk met de normale kabels.



De Uhr met zijn kabels die de normale stekkers vervangen.
© D. Rijmenants


Mathematische veiligheid Top

Om de mathematische veiligheid van de Enigma machine te berekenen moeten we alle mogelijke verschillende instellingen vinden. Daarvoor moeten we naar de volgende eigenschappen van de machine kijken: de selectie en volgorde van de rotors, hun bedrading, de ringinstelling op elk van de rotors, de startpositie van de rotors bij het begin van de vercijfering, de reflector en het stekkerbord. Nu zijn er verschillende manieren om het totaal aan combinaties te berekenen. In deze NSA publicatie werden alle mogelijke variaties van bedrading voor elk van de rotors en de reflector in acht genomen. Dit resulteert in een astronomische 3 x 10114. Hoewel correct, is dit getal misleidend en geeft het enkel het aantal theoretisch mogelijke variaties weer.

Helaas voor de Duitsers kenden de Geallieerden de machine, de rotors én de inwendige bedrading van die rotors. Daarom dienden ze enkel rekening te houden met het effectief aantal van mogelijke instellingen van de machine, de eigenlijke sleutelgrootte. Dit is wat we de praktische veiligheid noemen, die in het geval van de Enigma vele malen kleiner is dan de theoretische veiligheid. Voor de Duitse cryptologen kon de bedrading van één enkele rotor 4 x 1026 verschillende variaties hebben. Het combineren van drie rotors en een reflector geeft dan al gauw astronomische getallen.

Voor de Geallieerde codebrekers, die de inwendige bedrading al kenden, waren er slechts 26 variaties, zijnde elk van de 26 posities die de rotor kon aannemen in de machine. Zij hoefden het immense aantal variaties van de bedrading niet te doorzoeken. De Duitse cryptologen maakten een fatale fout door Auguste Kerckhoff's wet te negeren dat de veiligheid van een cryptografisch systeem nooit mag afhankelijk zijn van de geheimhouding van het systeem (o.a. rotor bedrading, ontwerp) dat sowieso zal gecompromitteerd worden, maar enkel mag steunen op de geheimhouding van de sleutelinstellingen (rotor selectie en instelling, stekkerbord). In het interessante R.A. Ratcliff document voor Cryptologia kunt u lezen hoe gevaarlijk het is om te vertrouwen op theoretische veiligheid.

Laat ons kijken naar alle dingen die we effectief kunnen instellen aan de Enigma en die onbekend zijn voor de codebrekers. In ons voorbeeld nemen we de 3-rotor Wehrmacht Enigma met standaard B reflector en een keuze uit vijf rotors. We gebruiken 10 kabeltjes op het stekkerbord, het standaard aantal dat geleverd werd bij de machine (vraag me niet waarom ze geen 11 kabels gebruikten wat de meeste combinaties zou opleveren).

Om 3 rotors uit een mogelijke 5 te selecteren zijn er 60 combinaties (5 x 4 x 3). Elke rotor, met ander woorden zijn inwendige bedrading, kon in 26 standen staan. Daarom zijn er met 3 rotors 17.576 mogelijke combinaties (26 x 26 x 26). De ring van elke rotor bevat de zichtbare letters/cijfers (hier niet van belang) en de nok die het stappen van de links-volgende rotor bepaald. Elke ring kan in één van de 26 posities ingesteld worden. Aangezien er links van de derde (meest linkse) rotor geen volgende rotors is hebben enkel de ringen van de uiterst rechtse en middelste rotor een effect op de berekening. Dit geeft 676 ring combinaties (26 x 26).

Het stekkerbord levert de grootste brok combinaties. De eerste stekker van een kabel kan elk van de 26 posities hebben en de tweede stekker 25 posities. Omdat elke combinatie en het omgekeerde daarvan identiek zijn (A-B is hetzelfde als B-A) moeten we alle dubbele combinaties eruit halen. We hebben dus (26 x 25) / (1! x 21) of 325 unieke manieren om één kabel te verbinden. Voor twee kabels hebben we (26 x 25) voor de eerste kabel en, aangezien er al twee stekkers gebruikt zijn, (24 x 23 ) voor de tweede kabel. We moeten nu rekening houden met de dubbele combinaties voor twee kabels, dus (26 x 25 x 24 x 23) / (2! x 22) = 44.850 unieke combinaties. Voor drie kabels hebben we dan (26 x 25 x 24 x 23 x 22 x 21) / (3! x 23) = 3.453.450 combinaties, enzovoort. Voor het standaard aantal van 10 kabels hebben we dus 150.738.274.937.250 verschillende manieren om de kabels te verbinden op het stekkerbord. De formule, met n als het aantal kabeltjes, is 26! / (26 - 2n)! · n! · 2n

In totaal geeft dit: 60 x 17.576 x 676 x 150,738,274,937,250 = 107.458.687.327.250.619.360.000 of 1,07 x 1023

In werkelijkheid kon de Wehrmacht machine dus ingesteld worden op 1,07 x 1023 verschillende manieren, vergelijkbaar met een hedendaagse 77 bit sleutel.

Er zijn enkele bemerkingen bij dit getal. In werkelijkheid is de periode - het aantal stappen alvorens de machine zich herhaalt - iets kleiner dan 17.576. Dit komt door de dubbel-stap eigenschap van het mechanisme. De effectieve periode hangt af van de gebruikte rotors. De drie dubbel-nok rotors van de Kriegsmarine hebben zelfs een nog kleinere periode dan de Wehrmacht rotors aangezien zij meer dubbele stappen van de middelste rotor veroorzaken. De maximum periode maakt echter geen deel uit van de variabele sleutelinstellingen en zal daarom de sleutelgrootte niet beïnvloeden.

De Wehrmacht machine kon uitgerust worden met de B of C reflector. Meestal gebruikte een radionet steeds dezelfde reflector aangezien het gebruik van verschillende reflectoren logistieke en praktische problemen veroorzaakte. Als we toch de keuze tussen B en C reflector meerekenen zal dit de sleutelgrootte slechts vermeerderen met een factor 2.

Het toevoegen van de vierde rotor aan de Kriegmarine M4 Enigma, om zijn veiligheid te verhogen, was een mooie maar nutteloze aanpassing. De niet bewegende vierde rotor compliceerde de machine enkel met een factor 26 en kon samen met zijn smalle reflector aanzien worden als een instelbare reflector met 26 posities, waarvan de Geallieerden al snel de bedrading vonden (na 10 maanden paniek). De introductie van de 8 Kriegmarine rotors was een veel betere aanpak. Zij verhoogden het aantal rotor combinaties van 60 naar 336 en brachten een bijkomende complexiteit met de drie dubbel-nok rotors VI, VII en VIII.

Laat ons de praktische sleutelgrootte berekenen van de Kriegsmarine Enigma M4. Deze machine gebruikt 3 gewone rotors, gekozen uit een mogelijke 8 (waarvan drie met dubbele nok). Dit geeft 336 verschillende combinaties (8 x 7 x 6). De M4 heeft ook een speciale vierde rotor, genaamde Beta of Gamma (zonder ring), wat ons twee mogelijkheden geeft. Deze zijn niet compatibel met de andere rotors en kunnen enkel gebruikt worden als vierde (uiterst linkse) rotor. De vier rotors kunnen in 456.976 verschillende posities ingesteld worden (26 x 26 x 26 x 26).

De M4 heeft een smallere B of C reflector om de plaatsing van de speciale vierde rotor toe te laten. We houden geen rekening met de keuze van reflector omdat die doorgaans nooit werd veranderd. Ook hier zijn slechts twee ringen van belang aangezien de derde rotor de vierde rotor nooit liep stappen. De M4 werd ook voorzien van 10 kabeltjes voor het stekkerbord.

In totaal geeft dit: 336 x 2 x 456.976 x 676 x 150.738.274.937.250 = 31.291.969.749.695.380.357.632.000 of 3,1 x 1025, vergelijkbaar met een 84 bit sleutel.

Dit is ongeveer 291 keer veiliger dan de Wehrmacht machine. Dit komt geheel op rekening van de verhoogde keuze van rotors (reeds beschikbaar op de M3 vóór de oorlog) en de mogelijke startposities voor 4 in plaats van 3 rotors. Hoewel de vierde rotor wél de mogelijke instellingen verhoogd zorgde hij echter niet voor meer complexiteit bij het vercijferen, aangezien de vierde rotor niet bewoog bij het vercijferingsprocces.

Een betere oplossing was wellicht het volledig her-bedraden zijn van sommige rotors op regelmatige basis. Eén enkel variabele rotorbedrading zou de sleutelgrootte verhogen met een factor 4 x 1026 wat veel meer is dan de programmeerbare reflector met zijn 7,8 x 1012 variaties. Eén enkele praktische, dagelijks veranderende rotor met zijn 4 x 1026 variaties zou veel effectiever geweest zijn dan het overschatte niet-bewegende stekkerbord met slechts 2 x 1014 variaties (het stekkerbord werkt met paren). Het gebruik van zo'n rotor, bijvoorbeeld samen met een dunne reflector zoals in de M4, en de twee andere rotors uit een keuze van vier, zou een echte ramp geweest zijn voor de codebrekers.

De introductie van zo'n programmeerbare rotor tijdens de oorlog zou echter zeer omslachtig geweest zijn en een logistieke en financiële nachtmerrie blijken, net zoals de programmeerbare D reflector dat bleek te zijn. Te weinig, te laat. De D reflector veroorzaakte aanvankelijk paniek bij de codebrekers, tot zij zich realiseerden dat de D reflector gelijktijdig met standaard reflectors gebruikt werd in dezelfde radionetten vanwege praktische overwegingen. Dit dubbel gebruik maakte het zelfs mogelijk hem met de hand te breken. Meer over de D reflector een andere pogingen op de Enigma geschiedenis pagina.

Elke crypto expert zou ook de 17.576 ring combinaties negeren. Zelfs met een volledig foute ringinstelling zal er initieel een correcte ontcijfering zijn. Zodra er onleesbare tekst opduikt dient de ring van de rechtse rotor aangepast te worden (een 1/26 kans op succes) en indien je geluk hebt zijn er geen problemen meer voor de volgende 676 letters. Bij minder geluk moest ook de ring van de middelste rotor reeds na 26 ontcijferde letters aangepast worden. Dit alles kon on-the-fly gebeuren. Helaas voor de Duitsers maakte het ontwerp van de ingenieuze Turing Bombe het overbodig om het immense aantal stekkerbord combinaties te doorzoeken, wat meteen een binnenweg van factor 2 x 1014 betekende om hun cribs (gekende stukjes klare en cijfertekst) te linken aan een bepaalde rotor instelling.

Niettegenstaande was het breken van de Enigma nog steeds een enorme uitdaging met een sleutelgrootte die onvoorstelbaar was voor het elektromechanische tijdperk van toen. Met een praktische sleutelgrootte van 1,07 x 1023 was het doorzoeken van alle instellingen onmogelijk in de jaren '40 en is zijn vergelijkbare 77 bit sleutel zelfs enorm naar hedendaagse computernormen. Om u een idee te geven van de grootte van dit getal kan je met 1,07 x 1023 vellen papier (0,1 mm per vel) zo'n 70.000.000 stapels papier maken die elk van de Aarde tot de zon reiken. 1,07 x 1023 millimeter is gelijk aan 11.358 lichtjaren. Een enorm getal!

De Duitsers gingen er begrijpelijkerwijs van uit dat de Enigma theoretisch onbreekbaar was, maar een bericht ontcijferen is meer dan sleutelgrootte, zoeken naar de juiste combinatie en theoretische veiligheid, en de Poolse en Geallieerde cryptologen bewezen het ongelijk van de Duitsers.

Meer over Enigma op deze website Top

Meer over de technische details van Enigma (off-site, opent in nieuwe tab) Top

Jared Owen Animations creëerde een uitstekende 3D video van de Enigma I, die in detail alle bewegende onderdelen toont, inclusief de mechanische en elektrische processen. Bezoek zeker ook Jared's YouTube channel met nog veel meer prachtige 3D animaties.

Web Analytics Made Easy -
StatCounter

© Dirk Rijmenants 2004. Last changes: 11 November 2024

Home Geschiedenis Procedures Technische Details Enigma Simulator