Cum functioneaza masina Enigma

iNoob | Stefanescu Mihai | 2022-12-04

Enigma sau faimoasa masina de criptat mesaje folosita de Germania in timpul celui de al II-lea razboi mondial. Aceasta masina pune la dispozitie milioane si milioane de moduri de a cripta un mesaj, facandul incredibil de dificil de decriptat, ba chiar, pentru o perioada de de timp parea imposibil de spart.

Alan Turing, alaturi de alti cercetatori au gasit o "slabiciune" in implementarea codului Enigma si au obtinut access la codul german, astfel reusind sa creeze o masina numita Bombe Machine ce a ajutat la codului encriptat de Enigma. Unii istorici cred ca spargerea codului Enigma a fost cea mai importanta victorie a aliatilor in timpul celui de al diulea razboi mondial pentru ca folosind informatia decodata au reusit sa previna mai multe atacuri.

Masina enigma militara, model "Enigma I" folosita in jurul anului 1930:

Criptarea


Enigma foloseste cifrul substitution.

Acest tip de criptare este un mod destul de usor de a cripta mesajele si la fel de usor de decriptat. Un simplu exemplu de criptare cu acest cifru ar fi un cifru de tip caesar.
Daca nu ai citit articolul am sa povestesc aici pe scurt cum functioneaza.
Fiecare litera a alfabetului este mutata de un numar de ori in dreapta, astfel incat daca shiftez cu 1 A devine B, M devine N, Z devine A si asa mai departe.

Mai jos am pus o imagine cu un cifru de tip Caesar cu un shift de 3:

 

a b c d e f g h i j k l m n o p q r s t u v w x y z
f g h i j k l m n o p q r s t u v w x y z a b c d e

Totul bun si frumos pana acum, dar Enigma era mult mai puternica de atat, pentru ca un asemenea cifru nu este chiar greu de spart.

Imagineaza-ti ca de fiecare data cand o litera era folosita, toata schema de litere era schimbata. Dupa fiecare apasare de buton rotoarele se mutau si chiar daca apasai aceasi litera ca mai devreme ajungea sa fie alta litera in mesajul final.

Deci, pentru prima apasare a unei taste va fi generata o combinatie ca in tabelul de mai sus, apoi, la a doua apasare va fi generata alta combinatie (alt tabel ca cel de mai sus) si tot asa. Acest lucru creste in mod substantial numarul de confirgurari ale encodari. La fiecare apasare a unei taste rotoarele se invart si codul se va schimba. Asta inseamna ca daca scrii mesajul "AA" posibil sa fie encodat de genul "IP", desi aceasi tasta a fost apasata de 2 ori la rand.

Cum functioneaza?

Masina enigma contine mai multe parti precum tastatura, rotoarem lampboard, plugboard, etc.

Cand o tasta este apasata, unul sau mai multe rotoare se invart pentru a genera o noua configuratie ce va encoda o litera ca alta. Curentul va trece prin circuit si va aprinde pe lampboard litera generata. Deci, daca apasam tasta "K" si masina enigma o va encoda ca si litera "P", pe lampboard va fi luminata litera "P".

In fiecare luna, operatorii de masini Enigma primeau noi configurari pentru masini pe care sa le foloseasca, astfel ca in fiecare zi configurarea se schimba.

De exem, intr-o zi operatorii puteau avea urmatoarele setari:

1.1.1. Plugboard settings: A/L – P/R – T/D – B/W – K/F – O/Y


Plugboard, este de fapt o parte care seamana cu o veche centrala telefonica, ce contine zeci de fire, fiecare conectat intr-un anumit mod. Fiecare fir poate conecta 2 litere ce devin pereche, astfel incat daca avem perechea "A" si "Z" conectate, "A" devine "Z" si invers. Acest aspect adauga un extra nivel de securitate.

Pentru a implementa setarile de mai sus trebuia sa conecteze literele A si L, P si R si tot asa. In esenta, aceast schimb de litere era primul lucru care se intampla, inainte ca rotoarele sa intre in actiune. Astfel incat, daca voiam sa encodam cuvantul APPLE folosind doar setarile acestea ajungeam sa avem rezultatul LPPAE.

Asa arata plugboard-ul masinii:

2.Rotor (or scrambler) arrangement: 2 — 3 —1



Masina enigma se folosea de mai multe rotore, fiecare avand o schema de criptare diferita. Pentru a encoda un mesaj, Enigma rotea 3 rotoare in acelasi timp, cate 1 in fiecare slot. Fiecare combinatie diferita a rotoarelor producea o alta schema de encodare.

Nota: Masinile Enigma militare aveau in mod normal 3 rotoare, desi au fost si masini care aveau mai multe.

Pentru a ajunge la confirguratia de mai sus, rotorul numarul 2 era plasat in primul slot, rotorul numarul 3 in al doilea slot si rotorul numarul 1 in slotul 3.


3.3.3. Rotor orientations: D – K –P



Fiecare rotor avea alfabetul scris pe margine, astfel incat operatorul sa il poata seta cu o anumita orientare. De exemplu, operatorul intorcea rotorul din slotul 1 astfel incat litera D sa fie afisata,  al doilea roto era intors sa fie afisata litera K, iar al treilea rotor era intors s fie afisata litera P.

Criptarea Enigma

Dupa cum spuneam mai sus, Enigma foloseste un tip de cipfru substitution.

Fiecare rotor afiseaza un numar de litere, iar cand rotorul se invarte, un nou set de litere este generat. Stiind configuratia initiala si setul initial de litere, un operator putea decoda mesajul. Fiecare rotor are 26 litere pe el. O masina Enigma foloseste 3 rotoare in acelasi timp, iar rotoarele puteau fi schimbate intre ele, rezultand un numar de mii de configuratii. De exemplu, rotoarele ar fi putut fi configurate astfel: rotor 5 in slot 1, rotor 2 in slot 2 si rotor 1 in slot 3.

Cate configuratii sunt posibile pentru o masina Enigma?

In primul slot putem pune unul din cele 5 rotoare, in al doilea unul din cele 4 ramase, iar in al 3-lea slot putem pune unul din cele ramase.

Deci, avem  5x4x3=60 moduri de a configura rotoarele.

Fiecare rotor are 26 de pozitii, deci 26x26x26=17576 de configurari ale rotoarelor.

Ce am povestit mai sus am povestit despre masinile Enigma comerciale, dar cele militare aveau mai multe modificari, precum un plugboard, ce permitea o configurare si mai buna.

Avand in vedere ca sunt 26 de litere in alfabet, inseamna ca avem 26! (adica 4.032914611×10²?) de moduri de a le aranja, dar plugboard-ul mai adauga 10 perechi de litere schimbate, ceea ce inseamna ca se pot schimba 20 de litere intre ele, ramanand cu 6 litere care stau in locul lor.
Daca incercam sa calculam numarul de combinatii posibile pentru plugboard avem urmatorul rezultat:
26!/(6!x10!x2^10) = 150738274937250

 Urmand sa punem cap la cap toate combinatiile, atat de la rotoare cat si de la plugboard si avem 60×17576×150,738,274,937,250=158,962,555,217,826,360,000 moduri de a seta o Enigma de grad militar.

Spargerea cifrului

O mare problema la Enigma a fost ca o litera nu putea fi encodata ca si ea insasi. Adica, daca scriu litera M nu va fi niciodata encodata ca litera M. Acest lucru le-a dat de inteles celor care incercau sa sparga cifrul o informatie foarte pretioasa.  Daca cei ce incercau sa sparca codul puteau ghici un cuvand din propozitie puteau sparge tot codul.  Pentru ca germanii trimiteau mereu informatii referitoare la vreme la inceputul mesajelor si de asemenea si "Heil Hitler" la sfarsitul mesajelor, cei ce incercau sa sparga codul stiau dupa ce sa se uite. Puteau compara o fraza data cu literele din cod si daca literele si daca o litera din cod era aceasi cu una din fraza stiau ca acel cod nu contine de fapt fraza respectiva, apoi puteau incepe in a lua prin eliminarea cuvinte sau fraze ce nu puteau fi encodate acolo.

Alan Turing si Gordon Welchman au creat o masina numita Bombe ce folosea circuite electrice pentru a decoda mesaje encodate cu Enigma in mai putin de 20 de minute.

Masina Bombe incerca sa determine setarile folosite de Enigma pentru rotoare si plugboard pentru a encoda un mesaj.

Masina Bombe standard era, in esenta, compusa de fapt din 36 de masini enigma legate una la cealalta, astfel incat simula mai mai multe masini Enigma in acelasi timp.
Cum majoritatea masinilor Enigma se foloseau doar de 3 rotoare, Bombe folosea tot 3 rotoare pentru a simula masinile enigma..

Masina Bombe se folosea de o codare pe culori a simulatoarelor de rotoare. Cum majoritatea masinilor Enigma foloseau doar 3 rotoare, "tobele" folosite in masina Bombe pentru a simula rotoarele erau asezate de sus in jos.
Aceste asa zice tobe se roteau pentru a simula noi setari, astfel incat la fiecare rotire intreaga a tobei de sus, toba de la mijloc se incrementa cu o pozitie si tot asa pentru fie trecere completa a fiecareia, rezultand in final la un numar de  26x26x26=17576 de pozitii.

Apoi, pentru fiecare configurare a rotoarelor, masina Bombe incerca sa ghiceasca si setarile plugboard-ului. Apoi, incerca sa isi dea seama daca plugboard-ul a fost setat corect, iar daca aparea vre-o deductie cum ca A este conectat la W si nu la Z, le schimba, facand la fel si pentru resul literelor din plugboard. De la prima presupunere ca plugboard-ul este setat gresit, masina facea schimbarea pentru a nu mai pierde timpul incercand sa se asigure ca intradevar este gresit.
Deci, daca masina considera ca A este legat la Z, atunci considera adevarate si urmatoarele legaturi, de exemplu ca B este legat la E, iar daca ulterior decidea ca A nu este conectat Z, insemna ca nici B nu este conectat la E si nici restul combinatiilor din plugboard nu sunt bune.

pentru fiecare pozitie a tobelor, configuratia era testata pentru contradictii logice, astfel urmand sa decida daca aceasta configuratie este gresita. Daca testul nu aducea contradictii masina nota acea configuratie ca fiind posibila si se oprea. Poi, masina era repornita si incerca alte configuratii, astfel explucand un nuamr foarte mare de posibile configuratii.


Imi place ce faci aici
Daca iti place ce fac aici imi poti cumpara o cafea Buy Me a Coffee at ko-fi.com

Stefanescu Mihai
Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.
       

Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum.

Posteaza un comentariu

Comentarii

ovi_cluj
ovi_cluj | 2023-03-26 05:51
fain asta cu Bombe :) Nu stiam... am vazut atatea filme pe Youtube ( yt) cu Enigma...

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.

🗝ïļ Login 🌟 Register

🔖 Bookmarks ⊞
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord ⊞

Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.

⮆ïļ