Alan Turing i Banburismus


Tematy pokrewne Podrozdziały

 

Banburismus

Przyglądając się po raz pierwszy Enigmie Kriegsmarine w 1938 roku, Alan Turing zdał sobie sprawę, że można byłoby wykorzystać niemiecką pomyłkę kryptograficzną, która polegała na umieszczeniu karbów przenoszących obrót w różnych pozycjach na każdym bębnie szyfrującym. Rozumował on, iż jeśli będzie można pokazać dla wiadomości z określonych dni, że przeniesienie obrotu NIE pojawiło się w pewnych zakresach wejściowego alfabetu, to WYKLUCZYŁOBY to niektóre bębny z pierwszej pozycji po prawej stronie.

Czy to byłoby możliwe zależało od procedury Niemieckiej Marynarki Wojennej, która wymagała, aby wszystkie Enigmy w danej sieci dla określonego dnia szyfrowały ustawienia wiadomości od tej samej startowej pozycji literowej bębnów, czyli od ustawienia Grund.

Następnie, pod warunkiem, że Tablice Dwuznaków zostaną przechwycone lub odtworzone, łamacze szyfrów posiadali zaszyfrowane ustawienia wiadomości (trójznaki). Nie znali oryginalnych ustawień wiadomości, lecz mieli ich szyfr rozpoczynający się od pozycji Grund. Ponieważ wszystkie szyfry zaczynały się od Grund, te same litery w tych samych miejscach w parze zaszyfrowanych ustawień wiadomości oznaczały, że nieznane litery ustawień wiadomości również musiały być takie same.

Jeśli trójznaki różniły się tylko ostatnią literą, to początki wiadomości również różniły się tą ostatnią literą. Jeśli posiadało się dwa zaszyfrowane teksty, a z trójznaków można było wywnioskować, że zostały one zaszyfrowane z prawie takich samych ustawień startowych bębnów, to Branderismus pozwalał znaleźć różnice w pozycjach startowych dla obu tekstów. Działało to tylko dlatego, że rozkład literowy tekstu językowego nie jest płasko równomierny.

Można to zademonstrować na przykładzie dwóch wiadomości z niemieckich łodzi podwodnych przechwyconych 28 lipca 1941. Kliknij tutaj, aby przebadać te dwie wiadomości. Użyj opcji "Zaszyfruj niemieckie teksty", a następnie przewiń w dół prawy panel, aby dostać się do opcji "Histogram szyfru" i "Histogram źródła". Gdy klikniesz je myszką, histogramy pokażą całkiem jasno prawie płaski rozkład liter szyfru oraz bardzo zróżnicowany rozkład liter w niemieckim tekście.

Banburismus opiera się na nierównomiernym rozkładzie liter alfabetu w tekście. Oznacza istnieje prawdopodobieństwa, że jeśli dwie wiadomości rozpoczynają się od różnych punktów szyfrowania, to w pewnym oddalonym miejscu w wiadomościach ta sama litera pojawi się w obu tekstach i ta sama litera po wpisaniu do maszyny Enigma da w rezultacie tę samą literę szyfru, lecz jedynie wtedy, gdy jedna z wiadomości "sczepiła się" z drugą. W podanym przykładzie początki mają postać CGC i CGG. Stąd po wprowadzeniu pierwszych czterech znaków z pierwszej wiadomości jej maszyna Enigma przechodzi do CGG, co jest punktem, od którego druga wiadomość rozpoczyna swoje szyfrowanie. Od tego punktu obie Enigmy pracują synchronicznie jedna z drugą, zatem jeśli przypadkiem pojawi się taka sama litera w obu wiadomościach, to zaszyfrowane teksty będą pasowały do siebie w tym punkcie.

Zatem, czy przypadkowo pojawia się w dwóch niemieckich tekstach wystarczająco "takich samych liter" przy zmiennej odległości od początku? Kliknij tutaj, aby porównać dwa niemieckie teksty i ich szyfry. Najpierw kliknij w "Zaszyfruj niemieckie teksty", a następnie przewiń w dół do "Porównaj tylko dwa źródła" i kliknij tę opcję.

Sam się przekonasz, że występuje duża liczba zgodnych liter pokazanych przez ich liczbę przy różnych przesunięciach. Dlatego istnieje PRAWDOPODOBIEŃSTWO dużej liczby tych samych liter szyfru, gdy dwa zaszyfrowane teksty zostaną wyrównane zgodnie z przesunięciem odpowiadającym różnicy w startowych literach prawego bębna szyfrującego. Tutaj rozpoczynają działanie Arkusze Banbury. Wymaga to wydziurkowania tych dwóch szyfrów na różnych arkuszach, a następnie arkusze te są przesuwane względem siebie i zlicza się nachodzące na siebie otwory. Jak dobrze pójdzie, maksymalny wynik będzie odpowiadał przesunięciu początków pierwotnych szyfrowań. Aby zobaczyć to na własne oczy, kliknij tutaj i po wybraniu "Zaszyfruj niemieckie teksty" przewiń w dół i kliknij "Ustaw Arkusze Banbury). Możesz kliknąć "Przesuń w prawo", aby przesunąć drugi arkusz (górny) na prawo (kilka chwil zajmuje przeliczenie nakładania się obu arkuszy). Przesuwając ciągle w prawo, liczba nakładających się dziurek pozostaje niska, aż wzrasta do 11 przy przesunięciu równym 4, które jest różnicą pomiędzy początkami CGC i CGG. Dla sprawdzenia przesuń jeszcze raz w prawo, a liczba dziurek spadnie do 6.

Jeśli przewiniesz w dół i klikniesz na "Porównaj tylko dwa szyfry", zobaczysz wyniki zliczeń przy kolejnych przesunięciach Arkusza Banbury w prawo. Potwierdzi to maksymalną wartość przy przesunięciu 4 (litera "e" u góry) (a=0). To wyrównanie początków zaszyfrowanych tekstów jest znane jako "głębokość".

Niemiecki tekst obu wiadomości jest pokazany w prawym panelu i można go wydrukować, klikając najpierw na ten panel, a następnie wybierając opcję Drukuj z menu Plik przeglądarki.

Jest jeszcze bardziej widowiskowe porównanie dwóch ciągłych szyfrów tej samej litery E z pozycji startowych CGD i CGH. Kliknij tutaj, a następnie kliknij w "Zaszyfruj niemieckie teksty", przewiń prawy panel w dół do okienek "Teksty szyfrów" i zmień w nich 01 na 03 i 02 na 04. Teraz przewiń w dół do histogramów i spójrz na histogram zaszyfrowanego tekstu wiadomości nr 3. Wygląda na dosyć normalny rozkład szyfrowy, lecz zobacz teraz na histogram dla źródła 3. Tylko E!

Przejdź do góry do Teksty zaszyfrowane i kliknij opcję "Ustaw Arkusze Banbury". Teraz gdy górny arkusz jest przesuwany w prawo, przy przesunięciu 4 pojawia się olbrzymi wynik. Nagle wszystkie otwory nachodzą na siebie. Tego można się było spodziewać, ponieważ w tym punkcie pierwsza Enigma zsynchronizowała się z drugą Enigmą i dokładnie te same litery szyfrowe zostają wyprodukowane w obu szyfrach począwszy od tego punktu.

Możesz przypuszczać, że dziurkowanie arkuszy było zbyt pracochłonną metodą zliczania zgodności liter wzdłuż dwóch łańcuchów tekstowych. Wcale nie, gdyż w przeciwnym wypadku bardzo trudno jest wyłowić takie zgodności w dwóch tekstach, szczególnie robiąc to przez długie okresy z dużą prędkością i w stresie. Metoda "dziurek", chociaż bardziej czasochłonna, była o wiele dokładniejsza, co stanowiło istotną konieczność przy zajmowaniu się bardzo małymi wynikami statystycznymi.

 

Procedura Banburismus.

Banburismus polega na tablicach dwuznaków, które zostały utworzone lub skradzione przeciwnikowi. Najpierw zbierano 24 godzinne nasłuchy i wykorzystywano tablice dwuznaków do dekodowania par trójznaków w dwóch czteroliterowych grupach nagłówka. Druga z tych grup, indykator, była tym, co niemiecki operator odbiorczy wpisywał do swojej maszyny Enigma, ustawionej na Grundstellung dla tego dnia, w celu otrzymania właściwych pozycji startowych bębnów do rozszyfrowania wiadomości.

Łamacze kodu nie znali tego ustawienia Grund i dlatego nie mogli otrzymać prawdziwej pozycji startowej, lecz posiadali indykator.

Procedura Banburismus może teraz zostać zademonstrowana dla sygnałów z niemieckiej łodzi podwodnej przechwyconych 29 lipca 1941 roku. Sam znalazłem kompletny zbiór rozkodowanych wiadomości w Amerykańskim Archiwum Narodowym w czasie mojej wizyty w USA w 2000 roku. Są to niemieckie teksty wiadomości. Udało mi się również odkryć Grundstellung dla tego dnia, a ponieważ każda wiadomość posiada zapisaną czerwonym ołówkiem pozycję startową bębnów, było możliwe ich ponowne zaszyfrowanie w celu uzyskania tekstów szyfrowych w takiej postaci, jak je przechwycono. Stąd mamy teraz do dyspozycji 36 tekstów szyfrowych, na których możemy wypróbować Banburismus.

Wydrukuj tę stronę, aby mieć instrukcję w czasie uruchamiania symulacji.

Możesz wydrukować niemieckie teksty i teksty szyfrów pochodzące z lipca 1941, otwierając podaną stronę i uruchamiając opcję "Zaszyfruj niemieckie teksty przy oryginalnych początkach szyfrowania". Jeśli następnie klikniesz na prawy panel i wybierzesz opcję "Drukuj" w swojej przeglądarce, wydrukujesz niemieckie teksty. Jeśli klikniesz na lewy panek i wybierzesz "Drukuj", to otrzymasz wydruk szyfrów.

Możesz również "wypisać oryginalne początki", wybierając tę opcję. Gdy lista się pojawi w lewym panelu, również ją możesz wydrukować za pomocą polecenia "Drukuj" w swojej przeglądarce. Lista ta zawiera dodatkowo indykatory oraz długości wiadomości. Niektóre z indykatorów były wpisane ołówkiem na dokumentach archiwalnych, inne otrzymano za pomocą szyfrowania początkowego trójznaku przy ustawieniu Grund.

Pamiętaj, że łamacze szyfrów posiadali tylko indykatory, nie posiadali początkowych ustawień bębnów szyfrujących. Następnie posortuj indykatory w kolejności. Przewiń w dół prawy panel aż do napotkania opcji "Posortuj oryginalne indykatory" i kliknij w nią. Posortowaną listę indykatorów też powinieneś sobie wydrukować.

Istnieją tylko dwa indykatory z takimi samymi początkowymi dwoma literami: EJK i EJP. Odnoszą się one do wiadomości o numerach 25 i 17. Na tym etapie nie ma sposobu, aby dowiedzieć się, która z nich szyfruje się start tej drugiej. Zatem przesuwanie Arkuszy Banbury powinno być wykonane najpierw z jednym arkuszem na górze, a później z drugim. Jednakże możemy sobie oszczędzić wysiłku i trochę oszukać, wykorzystując wiedzę, że wiadomość nr 17 posiada niższy start.

Teraz kliknij tutaj, aby ponownie uruchomić "lipiec 1941". Kliknij "Zaszyfruj niemieckie teksty" i przewiń prawy panel w dół, a następnie kliknij w "Utwórz Arkusze Banbury" (standardowo numerami wiadomości są 17 i 25).

Teraz klikaj w "Przesuń w prawo", notując sobie liczbę pasujących otworów w miarę przesuwania arkusza przy rosnących odstępach. Liczba ta osiąga wartość 8 przy przesunięciu 9 i jest mniejsza przy dalszym przesuwaniu. Przesunięcie 9 odpowiada (jak wiemy) różnicy w pozycjach startowych pomiędzy ICN i ICW. (Uwaga: przesunięcie 9 oznacza, że prawy walec szyfrowy Enigmy obraca się o 9 pozycji, aby przejść z N do W). Lecz łamacze szyfrów wiedzieli z tego tylko, że wiadomości z indykatorami EJK i EJP zostały prawdopodobnie ustawione na głębokości z przesunięciem 9 liter. Nie znali jeszcze bezwzględnych wartości liter na każdym końcu tego przesunięcia.

Potrzeba więcej informacji z nasłuchów, lecz teraz pozostaje jedynie kilka wiadomości do rozważenia z indykatorami o takiej samej pierwszej literze. Patrząc na posortowaną listę indykatorów, możesz zauważyć problemy z tym związane. Na przykład, możesz zauważyć, że przy trzeciej literze nie istnieje żaden bezpośredni związek pomiędzy odległością środkowych liter dwóch indykatorów a środkową literą pozycji startowej wynikowej wiadomości. Teraz również skupiamy się na długości wiadomości. Przy różnicach w środkowej literze mówimy o możliwych różnicach wielokrotności 26 w pozycjach głębokości. Maksymalna długość wiadomości wynosi 369 znaków (nie powinna nigdy być dłuższa od 250 znaków), a te rzeczywiste wiadomości posiadają średnią długość 153, co daje maksymalnie 5 alfabetów ciągle pozwalających się pokrywać w celu otrzymania pasujących do siebie otworów na arkuszach Banbury. Stąd środkowe litery mogą różnić się maksymalnie o 5 znaków. Lecz nie ma możliwości dowiedzenia się o tym ze środkowych liter w indykatorach.

Łamacze kodów musieli po prostu liczyć na łut szczęścia, a dzienny nasłuch dostarczał ponad 200 wiadomości.

Tak wyglądało to w rzeczywistości, lecz my możemy wykorzystać nieco poufnych informacji, aby posunąć się do przodu. Znając rzeczywiste starty, pary wiadomości 13,22 23,21 23,08 11,15 wyglądają na warte wypróbowania. Kliknij tutaj, aby uruchomić "lipiec 1941". Kliknij na "Zaszyfruj niemieckie teksty", przewiń w dół prawy panel, wprowadź numery wiadomości 13 i 22 do okienek "Porównaj od wiadomości". Teraz kliknij w opcję "Porównaj tylko dwa szyfry". Lewy panel będzie pokazywał liczbę pasujących otworów przy rosnących przesunięciach. Możesz wykonać to samo za pomocą Arkuszy Banbury, lecz tak jest szybciej.

Dostajemy wszystkie wyniki pasujących otworów poniżej 7 a powodem jest krótka długość wiadomości 13, jedynie 49 znaków. Dotyczy to również wiadomości 32 i 23, zatem wypróbuj parę 11,15, która jest trochę dłuższa. Zmień zawartość okienek w "Porównaj od wiadomości" i kliknij ponownie "Porównaj tylko dwa szyfry".

Ani 11,15, ani 15,11 nie pokazuje czystego maksimum.

Więc tak to jest, po prostu nie jest możliwe znalezienie dosyć wiadomości z właściwymi charakterystykami w tak małej próbce, aby Banburismus zadziałał. Powiedziano mi, że potrzebne było przynajmniej 200 przechwyconych depesz, aby w ogóle warto było próbować Banbarismus.

 

Wszystkie zamieszczone w tym opracowaniu materiały zostały umieszczone na serwerze edukacyjnym I LO w Tarnowie za zgodą profesora Tony'ego Sale'a, kustosza muzeum w Bletchley Park.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe