Prelomenie kódu

Nestáva sa často, že by matematici zachraňovali životy miliónov ľudí. Aj preto je príbeh šifrovacieho stroja Enigma používaného nemeckými vojskami počas druhej svetovej vojny taký zaujímavý.

Historici odhadujú, že vďaka rozlúšteniu kódu a poznaniu tajnej komunikácie trvala vojna o tri roky kratšie a bolo tak zachránených 14 až 28 miliónov životov.
Zložitý proces kódovania správ sa podarilo rozlúštiť britskému matematikovi menom Alan Mathison Turing (1912 – 1954) spoločne s jeho tímom v panskom sídle Bletchley Park, ležiacom asi 80 kilometrov severozápadne od Londýna.
Ako presne Enigma fungovala a ako sa ju podarilo zlomiť?

Šifrovací písací stroj

Už jednoduché pravidlo, napríklad posun písmena o jedno v abecede – A sa mení na B; B na C; C na D atď., dokáže z textu spraviť na prvý pohľad nezrozumiteľnú šifru. Z textu Quark magazín o vede a technike vznikne Rvbsl nbhbajo p xfef b ufdiojlf. No aj keby sme zvolili zložitejšie pravidlo na zámenu písmen, pridali čísla alebo iné špeciálne zákonitosti, šikovný kryptograf odhalí náš kód v krátkom čase aj bez súčasných počítačov.

Alan Mathison Turing (1912 – 1954), foto wikipédia/K00t25

Enigma fungovala omnoho komplikovanejšie. Na prvý pohľad pripomínala písací stroj. Pri stlačení písmena sa vysvietilo iné písmeno. Túto sekvenciu si odosielateľ tajnej správy zapísal a posielal pomocou morzeovky svojim vojskám. Na druhej strane musel prijímateľ vlastniť rovnaký stroj, zadať sekvenciu, pričom sa mu postupne vysvietila požadovaná správa. To bola veľká výhoda stroja, keďže sa prenášal iba nezrozumiteľný kód. Šifrovanie sa dialo iba na koncoch konverzácie.
Z hľadiska elektroniky bola Enigma najjednoduchší elektrický obvod, batéria a žiarovka prepojené vodičom. Ktorá žiarovka konkrétne – to zabezpečoval zložitý mechanizmus vnútri.

Srdce Enigmy

Diagram zjednodušeného stroja Enigma. Párovanie písmen v prvom kroku a následne zmena párovania po otočení rotora o jednu polohu

Zostrojme si najprv jednoduchý model Enigmy, na ktorom si priblížime princíp jej fungovania. Použime iba šesť písmen A, B, C, D, E, F a na začiatok nič nešifrujme. Pri stlačení písmena A sa spojí daný elektrický obvod a vysvieti sa písmeno A. Tak isto pri ostatných písmenách.
Pohrajme sa teraz s káblami vedúcimi od písmen k žiarovkám. Nezabúdajme však, že šifrovanie musí fungovať oboma smermi – po zadaní slova sa vysvieti šifra a po zadaní šifry sa vysvieti slovo. Keby sme prepojili písmená so žiarovkou s písmenom posunutým o jedno v abecede, potom po zadaní slova ABECEDA dostaneme BCFDFEB, ale po zadaní tejto šifry dostaneme CDAEAFC, a nie slovo ABECEDA.
Riešením je pridanie rotora do cesty káblom. Rotor má v našom prípade šesť vstupov a šesť výstupov. Tie sú vnútri rôzne popárované, my spárujme A-B, C-E, D-F. To znamená, že po stlačení písmena C elektrický prúd prejde cez rotor a rozsvieti sa písmeno E a, naopak, po stlačení E sa rozsvieti C. Výhodou rotora je, že po každom stlačení písmena sa pootočí o jednu polohu. Vďaka tomu spáruje písmená inak, pričom pri každom písmene následne vznikne iné pravidlo nahradzovania.
Po zadaní slova dostaneme šifru. Pred šifrovaním si však musíme zapamätať začiatočnú polohu rotora. Keď potom rotor manuálne pretočíme na túto polohu a začneme postupne zadávať písmená, odhalí sa nám zašifrované slovo.

Diagram celého mechanizmu šifrovania. Signál vchádzajúci cez A sa vráti do D a signál vchádzajúci cez D sa vráti do A. Po zadaní písmena sa prvý rotor otočí o jednu polohu.

Párovanie písmen

Pridajme do cesty ďalšie dva rotory. Písmená na vstupe a na výstupe nemusia byť dokonca vo všetkých rotoroch popárované. To znamená, že ak A na vstupe bude spojené s B na výstupe, tak B na vstupe nemusí byť nutne spojené s A na výstupe. Vo výsledku však páry písmen ostávajú prepojené, pretože za rotormi použijeme tzv. odrážač (angl. reflector). Ten po prejdení elektrického signálu tromi rotormi tiež písmeno zmení na iné a pošle signál naspäť tými istými rotormi.
Šifrovanie tak funguje obojstranne. Keď signál pošleme na vstupe napríklad cez písmeno A, dostaneme na výstupe D. Keby sme v rovnakom nastavení rotorov počas rozšifrovávania poslali signál na vstupe cez písmenko D, na výstupe dostaneme A, pretože ide o jednoduchý elektrický obvod.
Každý z rotorov mal všetkých 26 písmen abecedy. To znamená 26 možných začiatočných polôh pre jednotlivý rotor. Ako sme už spomínali, po každom zadaní písmena sa prvý rotor posunul o jednu polohu. Po celom otočení prvého rotora sa o jednu polohu posunul druhý rotor a tak ďalej.

Pokračovanie článku si môžete prečítať v časopise Quark 5/2020. Ak chcete mať prístup k exkluzívnemu obsahu pre predplatiteľov, prihláste sa. Ak ešte nie ste naším predplatiteľom, objednajte si predplatné podľa vášho výberu tu.

Text a vizualizácie Stanislav Griguš
Fakulta matematiky, fyziky a informatiky
Univerzita Komenského v Bratislave
Videá autora nájdete na YouTube kanáli bit.ly/ToAkoPreco.