Maszyna Lorenz'a
Maszyna rotorowa Lorenz'a została opracowana w roku 1940 w niemieckiej firmie Lorenz, będącą wówczas jedną z najważniejszych firm telekomunikacyjnych w Niemczech.
W latach czterdziestych opracowano w sumie trzy wersje maszyny Lorenz'a: SZ40 (weszła do użycia w 1941), SZ42A (1943) oraz SZ42B (1944). Litery SZ znajdujące się w nazwach modeli, wywodzą się od niemieckiego słowa Schlüsselzusatz, które oznacza dodatek szyfrujący. Rzeczywiście, maszyny te były produkowane jako dodatkowe wyposażenie do zwykłych dalekopisów firmy Lorenz. Tak więc, kryptograficzne rozszerzenie można było zamontować do dalekopisu, dodając nową funkcjonalność.
Zastosowanie
Maszyny szyfrujące Lorenz'a były używane przez Niemców podczas Drugiej Wojny Światowej do komunikacji na szczeblu strategicznym pomiędzy najważniejszymi miastami w okupowanej Europie.
Algorytm
Maszyna szyfrująca Lorenz'a operowała na zasadzie szyfrowania OTP. Elektromagnetyczny mechanizm maszyny był odpowiedzialny za generowanie losowej sekwencji znaków sekretnego klucza szyfrującego, zwalniając komunikujące się strony z konieczności zorganizowania dystrybucji olbrzymich losowych kluczy szyfrujących. Sprawna dystrybucja długich ciągów znaków tajnego klucza byłaby wyjątkowo trudna w warunkach wojennych. Identyczna sekwencja znaków klucza jest możliwa do wygenerowana przez odbiorcę, jeśli do odszyfrowania wiadomości użył on takich samych ruchomych wirników i takich samych ustawień początkowych maszyny, jakie zostały użyte do zakodowania wiadomości.
Wszystkie znaki w dalekopisie Lorenz'a były kodowane przy użyciu 5-bitowego kodowania Baudot'a. Zarówno wejście jak i wyjście z maszyny zapisywane były na papierowej taśmie. Każda litera wiadomości była sumowana XOR ze znakiem sekretnego klucza, również zakodowanego za pomocą 5 bitów. Pseudolosowy strumień znaków klucza był generowany litera-po-literze przez wewnętrzny mechanizm ruchomych rotorów.
Pięć bitów każdego znaku klucza było generowanych przez 10 rotorów. Pierwsze pięć rotorów obracało się po każdym uderzeniu klawisza, podczas kiedy pozostałe pięć wirników obracało się co pewną ilość znaków, w zależności od aktualnego położenia dwóch dodatkowych rotorów silnikowych.
Główne 10 rotorów było połączonych w pary. Każdy z pięciu bitów znaku tekstu jawnego przechodził najpierw przez zawsze-obracający się wirnik, a potem przez połączony z nim czasami-obracający się wirnik. Wartość bitu mogła być zmieniona przez każdy z nich, w zależności od ich pozycji.
Dwa rotory silnikowe były połączone jeden za drugim. Obrót drugiego wirnika był powodowany przez pierwszy wirnik, który z kolei obracał się przy każdym wciśniętym klawiszu. Pięć czasami-obracających się rotorów obracało się równocześnie, w zależności od położenia drugiego wirnika silnikowego.
Każdy wirnik posiadał inną liczbę krzywek (ang. cams), co powodowało, że wszystkie rotory obracały się z różnymi prędkościami. Dodatkowo, liczby krzywek na wszystkich rotorach były względnie pierwsze wobec siebie, w celu zapewnienia najdłuższego możliwego ciągu unikalnych kombinacji.
Sekwencja znaków klucza generowane przez maszynę rotorową Lorenz'a zależała od jej początkowej konfiguracji:
- układu krzywek na wirnikach.
- początkowych pozycji rotorów.
Układ krzywek był zmieniany codziennie począwszy od drugiej połowy 1944 roku (i dużo rzadziej przedtem). Ich ustawienia były rozprowadzane w sekretnych księgach kodowych.
Początkowe pozycje rotorów (oznaczane w postaci 12-sto znakowych ciągów) były wybierane przez operatora przed każdą transmisją i wysyłane otwartym tekstem na początku wiadomości. Z biegiem czasu, procedura uległa zmianie i drogą radiową wysyłano dwu-cyfrowe kody, które można było znaleźć w księdze kodowej nazywanej Księgą QEP. Kody te odpowiadały określonym początkowym pozycjom wirników.
Siła maszyny rotorowej Lorenz'a
Alianci byli w stanie stosunkowo szybko całkowicie złamać szyfr Lorenz'a.
Jednym z typowych niebezpieczeństw związanych z używaniem szyfrowania OTP przez radiooperatorów było błędne przesłanie tej samej wiadomości dwukrotnie, zaszyfrowanej przy użyciu tego samego sekretnego klucza (czyli tych samych ustawień początkowych maszyny). Taka sytuacja mogła mieć miejsce, jeśli operator miał problemy z odbiorem wiadomości.
Jeśli nadawca użyłby dokładnie tego samego klucza do zaszyfrowania dokładnie takiej samej wiadomości, to przechwycenie całej komunikacji nie dostarczyłoby podsłuchującym żadnej informacji. Niestety, podczas wysyłania drugiej wiadomości, nadawca może niechcący lekko zmodyfikować tekst wiadomości, podmieniając pojedyncze słowa lub używając powszechnie przyjętych skrótów.
Alianci mieli szczęście przechwycić wiadomość, która pozwoliła im złamać szyfr Lorenz'a w połowie 1941 roku. Została ona nadana dwukrotnie, przy użyciu tego samego sekretnego klucza. Kilka wyrazów na początku drugiej wiadomości zostało zastąpionych skrótami. Wiadomość była na tyle długa, że umożliwiła Brytyjczykom złamanie kodu i poznanie zarówno teksty jawnego wiadomości, jak i znaków sekretnego klucza.
Po poznaniu znaków sekretnego klucza, Alianci zdołali ustalić wewnętrzną strukturę maszyny, pomimo tego, że prawie do końca wojny nie mieli dostępu do żadnej istniejącej maszyny Lorenz'a. Mechanizm rotorowy nie został zaprojektowany w sposób optymalny i okazało się, że rzeczywiste zabezpieczenie zapewniane przez maszynę jest dużo słabsze niż było to przewidywane przez Niemców.
Według niemieckich inżynierów, ilość możliwych kombinacji pozycji wewnętrznych rotorów była tak olbrzymia, że nie było możliwe złamanie szyfru przy użyciu ataków siłowych. Jednak z racji tego, że każdy bit każdej litery tekstu jawnego był szyfrowany oddzielnie (każdy bit przechodził jedynie przez dwa rotory), rzeczywista liczba możliwych kombinacji okazała się dużo mniejsza.
Ponadto, ponieważ wszystkie czasami-obracające się koła poruszały się w tym samym momencie, maszyna produkowała relatywnie długie fragmenty szyfrogramu, które nie były afektowane przez zmieniające się pozycje tych wirników (pomiędzy ich obrotami). Ta cecha okazała się decydującą wadą tego szyfru.
W rezultacie, zespół brytyjskich kryptologów zdołał zbudować swoją własną maszynę, którą wykorzystywano do łamania przechwyconych wiadomości. Alianci byli w stanie czytać całą niemiecką komunikację zaszyfrowaną za pomocą maszyny Lorenz'a.