Stroj Enigma
Hlavní chybou kódu Enigma bylo, že písmeno nemohlo být nikdy zakódováno jako samo o sobě. Jinými slovy, písmeno „M“ by nikdy nebylo zakódováno jako „M“. To byla obrovská chyba kódu Enigma, protože poskytovala luštitelům kódů informaci, kterou mohli použít k dešifrování zpráv. Pokud by luštitelé kódů dokázali uhodnout slovo nebo frázi, které by se ve zprávě pravděpodobně objevily, mohli by tuto informaci použít k zahájení luštění kódu. Protože Němci na začátku zprávy vždy posílali zprávu o počasí a na konci zprávy obvykle uváděli frázi „Heil Hitler“, existovaly fráze, které dešifrátoři věděli, že mají hledat. Dekodéři mohli danou frázi porovnat s písmeny v kódu, a pokud se písmeno ve frázi shodovalo s písmenem v kódu, věděli, že tato část kódu danou frázi neobsahuje. Dekodéry pak mohly začít luštit kód vylučovací metodou.
Vyhledejte možné soupeře pro zakódování slova „RAIN“ v níže uvedeném zakódovaném řetězci. (Symbol % se používá k označení neznámých písmen).
Kódovaná zpráva E R W N I K .
O L K M M M M Výraz R A I N % % % % % % % % % % % % % RAIN nelze zakódovat jako ERWN, protože N ve slově RAIN a N ve slově ERWN se shodují. Protože N nelze zakódovat jako sebe sama, nejedná se o kódování.
Přesuneme naši zprávu o jeden slot doprava a podíváme se, zda je výsledek platným kódováním.
Kódovaná zpráva E R W N I K .
O L K M M M M Výraz % R A I N % % % % % % % % % % RAIN nelze zakódovat jako RWNI, protože R ve slově RAIN se shoduje s R ve slově RWNI. Posuňme se ještě jednou.
Kódovaná zpráva E R W N I K .
O L K M M M M Výraz % % R A I N % % % % % % % % % RAIN nelze zakódovat jako WNIK, protože I ve slově RAIN se shoduje s I ve WNIK.
Kódovaná zpráva E R W N I K .
O L K M M M M Výraz % % % R A I N % % % % % % RAIN lze zakódovat jako NIKO, protože obě věty nemají shodná písmena. NIKO je tedy možné zakódovat jako RAIN.
Pokud tento postup zopakujeme, zjistíme, že NIKO, IKOL, KOLK, OLKM, LKMM, KMMM a MMMM jsou všechna možná kódování RAIN, protože mezi RAIN a kódováním se neshodují žádná písmena. Je v pořádku, že MMMM by mohlo zakódovat RAIN, i když to znamená, že M by zakódovalo R, A, I a N, protože nezapomeňte, že při každém stisku klávesy se mapování písmen ve stroji Enigma mění.
Není však zaručeno, že RAIN je v tomto řetězci vůbec zakódováno, ale poskytlo to dekodérům dobrý výchozí bod pro dešifrování zpráv.
Alan Turing a Gordon Welchman navrhli stroj nazvaný Bombe machine, který pomocí elektrických obvodů vyřešil zprávu zakódovanou v Enigmě za méně než 20 minut. Stroj Bombe se snažil určit nastavení rotorů a zásuvné desky stroje Enigma, které se používaly k odeslání dané kódované zprávy.
Standardní britský stroj Bombe byl v podstatě 36 strojů Enigma zapojených dohromady, tímto způsobem by stroj Bombe simuloval několik strojů Enigma najednou. Většina strojů Enigma měla tři rotory, a aby to bylo v Bombe znázorněno, měl každý ze simulátorů Enigmy v Bombe tři bubny, jeden pro každý rotor.
Bubny stroje Bombe
Bubny stroje Bombe byly barevně označeny podle toho, který rotor simulovaly. Zatímco třírotorový stroj Enigma používal vždy jen tři rotory, na výběr jich bylo více. Bubny byly uspořádány tak, že horní ze tří simuloval levý rotor skrambleru Enigma, prostřední simuloval prostřední rotor a spodní simuloval pravý rotor. Bubny se otáčely, aby vyzkoušely novou konfiguraci. Při každém úplném otočení horních bubnů se prostřední bubny zvětšily o jednu pozici a podobně i prostřední a dolní bubny, což dávalo dohromady 26 × 26 × 26 = 17 576 pozic třírotorového skrambleru Enigma.
Pak by pro danou konfiguraci rotoru (při každém otočení bubnů) stroj Bombe provedl odhad nastavení zásuvné desky, například „A je připojeno k Z“. Poté procházel a určoval, na co musí být nastavena všechna ostatní písmena na zásuvné desce. Pokud by vznikly nějaké rozpory, řekněme odvodil, že „A je připojeno k W“, pak musí platit, že A není na zásuvné desce připojeno k Z, vzniká rozpor. Protože ostatní kombinace písmen, na které stroj právě přišel, byly určeny na základě nepravdivého předpokladu (konkrétně předpokladu, že A je připojeno k Z), jsou všechny tyto kombinace neplatné a stroj Bombe ví, že nemá ztrácet čas pozdější kontrolou některé z těchto kombinací. Řekněme tedy, že stroj uhodl, že A je připojeno k Z, a pak stroj odvodí, že pokud je A připojeno k Z, pak B musí být připojeno k E. Pokud později zjistí, že A není připojeno k Z, ví, že B není připojeno k E. Po vzniku takového rozporu stroj Bombe nebude znovu hádat, že A je připojeno k Z, a ví, že nemá hádat, že B je připojeno k E, a tak dále. Bombeho stroj posune polohy rotorů a zvolí nový odhad a tento proces opakuje, dokud se neobjeví vyhovující uspořádání nastavení. Protože elektrické obvody mohou provádět výpočty velmi rychle, může stroj Bombe projít všechny kombinace rotorů přibližně za 20 minut.
Při každé poloze bubnů by se testovalo, zda konfigurace nevede k logickému rozporu, čímž by se toto nastavení vyloučilo. Pokud by test nevedl k rozporu, stroj by se zastavil a dekodér by tuto konfiguraci zaznamenal jako kandidátské řešení. Poté se stroj znovu spustí a testují se další konfigurace. Tyto testy by zúžily seznam možných konfigurací a kandidátská řešení by se dále testovala, aby se vyloučila ta, která by nefungovala. Obvykle bylo mnoho neúspěšných kandidátních řešení, než bylo nalezeno to správné.