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


Op deze pagina vind 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. All afbeeldingen copyright D Rijmenants

Inhoud

Image © D Rijmenants 2008

Wehrmacht Enigma

Image © D Rijmenants 2008

Enigma M4

Stroomdiagram van het toestel 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 vertaald 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.

Enigma bedrading, © Dirk Rijmenants

Image © D Rijmenants 2008

Een Wehrmacht Enigma met open deksel. Van links naar rechts: de B reflector, de drie rotors, de ingangsrotor (zwart) en het batterijcompartiment. Onder het batterijcompartiment zien we de contacten van de schakelaar. Onder de rotors ligt het lampenpaneel. Op de tweede rij van het lamppaneel links zit een reserevelampje en rechts een uitsparing om lampjes te testen.

We beschrijven de werking aan de hand van het stroomdiagram hierboven. Om het geheel te vereenvoudigen zijn er telkens slechts vier van elk van de componenten getekend. In werkelijkheid zijn er dus 26 lampjes, toetsen, pluggen en doorverbindingen in de rotors. Van de batterij [1] vloeit de stroom door de wisselschakelaar [2], die bediend wordt door de ingedrukte letter-toets, naar het stekkerbord [3] (Steckerbrett). Dit stekkerbord maakt het mogelijk de bedrading tussen toetsenbord [2] en vaste ingangsrotor [4] (Eintrittwalze) te wijzigen met kabeltjes [8]. De stroom gaat vervolgens van de - ongebruikte en dus gesloten - stekker 'A' [3] door de ingangsrotor [4] en door de drie beweegbare rotors [5] (Walzen), om vervolgens door de reflector [6] (Umkehrwalze) via een andere weg teruggestuurd te worden door de rotors [5], langs het stekkerbord [7], door twee - in ons voorbeeld plug 'S' en 'D' - met een kabeltje doorverbonden stekkers [8], langs een niet ingedrukte toets [9], naar een gloeilamp. Opgelet: Bij vercijfering zal het indrukken van de toets eerst de rotors voortbewegen en daarna de stroom door rotors en lamp sturen. Als de letter-toest wordt losgelaten gaat de lamp uit. Als er geen toets is ingedrukt, is dus de rotorpositie van de vorige vercijferde letter zichtbaar in de venstertjes!

De tekening hieronder toont het inwendige van de Enigma, gezien van rechts, met ongeveer hetzelfde stroomdiagram als hierboven.

Enigma inwendig, © Dirk Rijmenants

De Rotors Top

Bron: Wikipedia Commons - Enigma rotor exploded view. Getekend door Eric PiercingDe 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.

Image © D Rijmenants 2008

De drie rotors op hun as

Image © D Rijmenants 2008

Linkerzijde rotor met de nok (links)

Image © D Rijmenants 2008

Rechterzijde rotor met tanden


Image © D Rijmenants 2008

Kriegsmarine rotor met twee nokken
(klik om te vergroten)

Image © D Rijmenants 2008

Wehrmacht
ring met pin

Image © D Rijmenants 2008

Kriegsmarine
ring met bogen


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 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 Gamme 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 geintruduceerd 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 van de rotors voert de eigenlijke encryptie uit. Als voorbeeld voor de werking van de inwendige bedrading als substitutiecijfer nemen we de rotor type I met ringsetting A-01. De input is aan de rechterkant van de rotor! U kan in de tabel zien dat een 'A' vercijferd wordt als een 'E', een 'B' als 'K', en een 'K' als 'N'. Merk op dat elke letter is vercijferd in een andere.

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


Image © D Rijmenants 2008

De B reflector van de Wehrmacht Enigma


Image © D Rijmenants 2008

Kriegmarine Beta rotor met smalle B reflector

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.

In de onderstaande tekeningen gebruiken we de Enigma rotor type I (Romeinse 1). De verstelbare ring is het vertikaal grijze gedeelte. De bedradingskern, met het duimwiel eraan vast, is wit (in werkelijkheid staan er geen letters op het witte 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 rings vast te zetten, en geeft de ringinstelling aan.

Hieronder een voorbeeld van hoe Rotor I (met ringinstelling A-01) twee opeenvolgende ingedrukte A toetsen vercijferd. Links ziet u rotor I in de A positie (zichtbaar in het kleine venstertje). Het signaal, komende van de ingedrukte A toets, gaat via het A contact door de inwendige bedrading naar het E contact dat zich op de E positie bevind.

Rechts ziet u dat de rotor één stap werd voortbewogen naar de B positie. Het signaal komt weer toe op de A positie en gaat via het B contact 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!

Image © D Rijmenants 2011

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.

Hieronder twee voorbeelden om de werking van de ringinstelling te verduidelijken. 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, komende van de ingedrukte A toets, komt toe op de A positie en gaat via het Z contact door de bedrading naar het J contact. Vanwege de ringinstelling is de bedradingskern één positie opgeschoven en de uitgangscontacten zijn dus ook opgeschoven. Daarom bevind het J contact zich nu in de K positie en verlaat het signaal de rotor dus in de K positie naar de volgende rotor.

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

Image © D Rijmenants 2011

Denk er aan dat, wanneer men een toets indruk, de rotors voortbewegen alvorens het electrische 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 toest 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.

Er is een uitstekende on-line Flash Enigma simulation op de enigmaco website die duidelijk de route van het signael door de rotors toont.


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 één maal per 26 stappen van de rechtse rotor (wanneer de rechtse rotor één nok heeft). De linkse rotor beweegt één maal 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 voorbewegen. 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


Image © D Rijmenants 2008

De drie pallen op hun as, rustend op de bodem-pads. De as is bevestigt aan het stappenframe (zilveren L-vorm). Rechts van de pallen zien we de vaste ingangsrotor.


Image © D Rijmenants 2008

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

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 word 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.

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.



Image © D Rijmenants 2008

Het stekkerbord van de Wehrmacht Enigma


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 paargewijs, zoals gebruikelijk met de normale kabels.



Image © D Rijmenants 2008

De Uhr met zijn kabels die de normale stekkers vervangen.

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 ringsinstelling 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 kabelstjes 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 initiëel 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 dus! De Duitse cryptologen waren correct in hun veronderstelling dat de Enigma theoretisch onbreekbaar was. Het breken van codes is echter meer dan getallen, theoretische veiligheid en zoeken naar de juiste combinatie. Meer over hoe de Geallieerden Enigma ontcijferden vind u op deze pagina.

Referenties

© Copyright 2004 - 2016 Dirk Rijmenants

Home Menu Geschiedenis Procedures Technische details Enigma Simulator