Mașina Enigma
Un defect major al codului Enigma era faptul că o literă nu putea fi niciodată codificată ca atare. Cu alte cuvinte, un „M” nu putea fi niciodată codificat ca un „M”. Acesta a fost un defect uriaș al codului Enigma, deoarece le oferea spărgătorilor de coduri o informație pe care o puteau folosi pentru a decripta mesajele. Dacă spărgătorii de coduri puteau ghici un cuvânt sau o frază care ar fi apărut probabil în mesaj, puteau folosi această informație pentru a începe să descifreze codul. Deoarece germanii trimiteau întotdeauna un buletin meteo la începutul mesajului și, de obicei, includeau fraza „Heil Hitler” la sfârșitul mesajului, existau fraze pe care decriptatorii știau să le caute. Decodificatorii puteau compara o anumită frază cu literele din cod, iar dacă o literă din frază se potrivea cu o literă din cod, știau că acea parte a codului nu conținea fraza respectivă. Apoi, decodificatorii puteau începe să descifreze codul printr-un proces de eliminare.
Căutați posibilii concurenți pentru codificarea cuvântului „RAIN” în șirul codificat de mai jos. (Simbolul % este utilizat pentru a indica literele necunoscute).
Mesaj codificat E R W N I K .
O L K M M M M M Fraza R R .
A I N % % % % % % % % % % % % .
% % RAIN nu poate fi codificat ca ERWN deoarece N din RAIN și N din ERWN se potrivesc. Deoarece N nu poate fi codificat ca el însuși, aceasta nu este codificarea.
Să deplasăm mesajul nostru cu un slot spre dreapta și să vedem dacă rezultatul este o codificare validă.
Mesaj codificat E R W N I K .
O L K M M M M M Fraza % .
R A I N % % % % % % % % % % .
% % RAIN nu poate fi codificat ca RWNI deoarece R din RAIN se potrivește cu R din RWNI. Să schimbăm din nou.
Mesaj codificat E R W N I K .
O L K M M M M M Fraza % .
% R A I N % % % % % % % % % .
% % RAIN nu poate fi codificat ca WNIK deoarece I din RAIN se potrivește cu I din WNIK.
Mesaj codificat E R W N I K .
O L K M M M M M Fraza % .
% % R A I N % % % % % % % .
% % RAIN poate fi codificat ca NIKO, deoarece cele două fraze nu au litere care să se potrivească. Așadar, NIKO este o posibilă codificare a lui RAIN.
Dacă repetăm acest proces, vom descoperi că NIKO, IKOL, KOLK, OLKM, LKMM, KMMM și MMMMM sunt toate codificări posibile ale lui RAIN, deoarece nicio literă nu se potrivește între RAIN și codificare. Este în regulă că MMMMMM ar putea codifica RAIN, chiar dacă acest lucru înseamnă că M ar codifica R, A, I și N, deoarece nu uitați că la fiecare apăsare de tastă, maparea literelor într-o mașină Enigma se schimbă.
Nu este garantat că RAIN este codificat deloc în acest șir, totuși, dar a oferit decodificatorilor un bun punct de plecare pentru decriptarea mesajelor.
Alan Turing și Gordon Welchman au proiectat o mașină numită mașina Bombe care folosea circuite electrice pentru a rezolva un mesaj codificat Enigma în mai puțin de 20 de minute. Mașina Bombe încerca să determine setările rotoarelor și ale plăcii de conectare a mașinii Enigma folosite pentru a trimite un anumit mesaj codat.
Mașina Bombe britanică standard era formată, în esență, din 36 de mașini Enigma cablate împreună, în acest fel, mașina Bombe ar fi simulat mai multe mașini Enigma în același timp. Majoritatea mașinilor Enigma aveau trei rotoare și, pentru a reprezenta acest lucru în Bombe, fiecare dintre simulatoarele Enigma din Bombe avea trei tamburi, câte unul pentru fiecare rotor.
Tamburele mașinii Bombe
Tamburele mașinii Bombe aveau un cod de culori pentru a corespunde cu rotorul pe care îl simulau. În timp ce o mașină Enigma cu 3 rotoare folosea doar trei rotoare în același timp, există mai multe din care se poate alege. Tamburii au fost aranjați astfel încât cel de sus dintre cele trei să simuleze rotorul din stânga al aparatului de bruiaj Enigma, cel din mijloc să simuleze rotorul din mijloc, iar cel de jos să simuleze rotorul din dreapta. Tamburii se întorceau pentru a încerca o nouă configurație. Pentru fiecare rotație completă a tobelor de sus, tobele din mijloc erau incrementate cu o poziție, și la fel pentru tobele din mijloc și de jos, ceea ce dădea un total de 26 × 26 × 26 × 26 = 17.576 de poziții pentru scramblerul Enigma cu 3 rotoare.
Apoi, pentru o anumită configurație a rotorului (la fiecare rotație a tobelor), mașina Bombe făcea o presupunere cu privire la o setare a plăcii de conectare, de exemplu „A este conectat la Z”. Apoi parcurgea și determina la ce trebuie să fie setate toate celelalte litere de pe placa de conectare. Dacă apărea vreo contradicție, să zicem, a dedus că „A a fost conectat la W”, atunci trebuie să fie că A nu este conectat la Z pe placa de conectare, apare o contradicție. Deoarece celelalte corespondențe de litere pe care mașina tocmai le-a dedus au fost determinate pe baza unei presupuneri false (și anume presupunerea că A este conectat la Z), toate aceste combinații sunt invalide, iar mașina Bombe știe că nu trebuie să piardă timpul verificând mai târziu niciuna dintre aceste combinații. Așadar, să spunem că mașina a ghicit că A este conectat la Z, iar apoi mașina deduce că dacă A este conectat la Z, atunci B trebuie să fie conectat la E. Dacă mai târziu determină că A nu este conectat la Z, știe că B nu este conectat la E. După ce apare o astfel de contradicție, mașina Bombe nu va mai ghici că A este conectat la Z și știe că nu trebuie să ghicească că B este conectat la E, și așa mai departe. Mașina Bombe schimbă pozițiile rotorului, alege o nouă presupunere și repetă acest proces până când apare un aranjament satisfăcător de setări. Deoarece circuitele electrice pot efectua calcule foarte rapid, mașina Bombe poate parcurge toate combinațiile de rotoare în aproximativ 20 de minute.
La fiecare poziție a tobelor, configurația ar fi testată pentru a vedea dacă aceasta duce la o contradicție logică, excluzând acea setare. Dacă testul nu ducea la o contradicție, mașina se oprea și decodorul nota acea configurație ca fiind o soluție candidată. Apoi, mașina este repornită și sunt testate mai multe configurații. Aceste teste ar restrânge lista de configurații posibile, iar soluțiile candidate ar fi testate în continuare pentru a le elimina pe cele care nu ar funcționa. De obicei, existau multe soluții candidate nereușite înainte de a fi găsită cea corectă.
.