Jak grzebień wpłynął na historię Polski?

Historia, którą chcę dziś opowiedzieć, lepiej pasuje do obchodów Święta Narodowego 15 sierpnia, ale każda okazja jest dobra, aby wspominać polskich bohaterów. Człowiek, o którym chcę dziś opowiedzieć został odznaczony najwyższym polskim odznaczeniem – Virtuti Militari. I mimo, że jest nadawany za wybitne zasługi bojowe, to nasz dzisiejszy bohater nie poprowadził szturmu na nieprzyjacielskie pozycje, ani nie wyciągnął całego swojego oddziału spod wrogich nabojów. Zasłużył się bardziej cnotami umysłowymi, a jego bronią okazał się grzebień z powyłamywanymi zębami. Moim zdaniem historia tego właśnie grzebienia, jest bardzo niedoceniona w polskiej historiografii.

Zanim przejdziemy do historii grzebienia, chciałbym popełnić dygresję matematyczną.

Szyfr Cezara

Chciałbym żebyśmy cofnęli się o dwa tysiące lat. Gdzieś w okolicy początków naszej ery żył Juliusz Cezar. Samego człowieka nie trzeba chyba nikomu przedstawiać – najpierw zdolny wojskowy, następnie Cesarz Imperium Rzymskiego. Był człowiekiem oczytanym i inteligentnym. I to jemu przypisuje się autorstwo jednego z najstarszych opisanych szyfrów.

Wprowadźmy sobie trochę matematycznego formalizmu. Mamy alfabet łaciński, który składa się z 26 liter:

    \[\Sigma = \{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,y,z\}\]

Możemy zdefiniować teraz przestrzeń wszystkich możliwych słów, które będziemy chcieli zaszyfrować:

    \[P = \{ x ~|~ x \in\Sigma^*\}\]

Zbiór P będziemy nazywali przestrzenią tekstów jawnych. Bardzo podobnie możemy zdefiniować zbiór słów, które będą wynikiem szyfrowania:

    \[C = \{ x ~|~ x \in\Sigma^*\}\]

Zbiór C będziemy nazywali przestrzenią szyfrogramów (tekstów zaszyfrowanych). Przy takich oznaczeniach możemy zdefiniować funkcję:

    \[E~~:~~ P ~\rightarrow~C\]

którą nazwiemy funkcją szyfrującą. Funkcja ta będzie opisywała, jakiemu przekształceniu będziemy poddawać słowo jawne, aby ukryć jego znaczenie przed osobą niepożądaną. Bo zasadniczo właśnie do tego służy szyfrowanie – ukrywanie treści wiadomości, w taki sposób aby tylko wybrany adresat był w stanie ją poznać. Czyli potrzebujemy jeszcze jednej funkcji:

    \[D~~:~~ C \rightarrow P\]

takiej, że

    \[\forall t \in P~~D(E(t)) = t\]

Funkcję D będziemy nazywali funkcją deszyfrującą.

Historia mówi, że w czasie prowadzenia wojen, Juliusz Cezar szyfrował wiadomości wysyłane do swoich oddziałów – to miało zapobiec sytuacjom, w których wróg łapał gońca i przejmował wiadomość.

W szyfrze Cezara funkcja E jest zdefiniowana następująco:

  1. Weź kolejne słowo z tekstu jawnego
  2. Dla każdej litery w słowie:
    1. Jeżeli to litera A, to zastąp ją przez literę D
    2. Jeżeli to litera B, to zastąp ją przez literę E
    3. I tak dalej, każdą literę zastąp literą, która stoi trzy miejsca dalej w alfabecie
    4. Jeżeli skończył Ci się alfabet, to zacznij od początku, czyli literę Z zastąp przez literę C
  3. Dodaj zaszyfrowane słowo do szyfrogramu
  4. Jeżeli jest kolejne słowo w tekście jawnym wróć do kroku pierwszego.

Bardzo wyraźnie widać to na obrazku z Wikipedii:

Widać, że funkcję D jesteśmy w stanie skonstruować sami – ale potrafimy to, bo znamy szczegóły działania funkcji E.

Szyfr Cezara jest nazywany monoalfabetycznym szyfrem podstawieniowym.

  • Szyfr podstawieniowy oznacza, że w czasie szyfrowania, za każdą literę tekstu jawnego podstawiamy jakąś literę (potencjalnie inną) i w ten sposób otrzymujemy szyfrogram.
  • Monoalfabetyczny oznacza, że do wszystkich liter w tekście używamy jednego alfabetu (przeciwieństwem szyfrów monoalfabetycznych są szyfry polialfabetyczne – gdzie pierwszą literę szyfrujemy alfabetem A_1, drugą literę szyfrujemy alfabeterm A_2, itd).

Każdy podstawieniowy szyfr monoalfabetyczny możemy opisać za pomocą tabelki, w której w pierwszym wierszu zapisujemy alfabet, a w drugim wierszu zapisujemy, jaka litera szyfruje literę w tej samej kolumnie w wyższym wierszu. Dla Szyfru Cezara tabelka taka wyglądałaby następująco:

Litera w tekście jawnym a b c x y z
Litera w tekście zaszyfrowanym d e f a b c

Tak więc alfabet szyfrujący (ten pojedynczy) to jest po prostu ustawienie alfabetu w drugim wierszu tabelki. Znając ustawienie liter w alfabecie szyfrującym możemy bez problemów odszyfrować szyfrogram.

Łamanie szyfrów

W odpowiedzi na powstawanie szyfrów, są definiowane metody ich łamania. Czyli tak naprawdę poznawanie funkcji D na podstawie znajomości tekstów zaszyfrowanych (tak jest najtrudniej)

Napisałem, że szyfr podstawieniowy możemy opisać permutacją alfabetu (czyli konkretnym uporządkowaniem liter). Gdy używamy alfabetu łacińskiego, to liczba możliwości wszystkich uporządkowań alfabetu wynosi:

    \[26! = 403291461126605635584000000\]

Sprawdzenie wszystkich możliwości nie wchodzi w grę. Ale przecież nikt już nie używa żadnego szyfru podstawieniowego (nawet polialfabetycznego) w rzeczywistych zastosowaniach. Czemu? Bo złamanie takiego szyfru jest banalnie proste.

Autorstwo kryptoanalizy szyfru podstawieniowego przypisuje się Al-Kindiemu – arabskiemu uczonemu, który żył w IX wieku. Kryptoanaliza oznacza badanie szyfru w celu złamania go. Al-Kindi zauważył wielką słabość szyfrów podstawieniowych. Chodzi o to, że wiele cech tekstu obecnych w tekście jawnym, przenosi się do tekstu zaszyfrowanego. Taką cechą jest częstotliwość występowania konkretnych liter w tekście jawnym. Jeżeli jakaś litera stanowi 20% tekstu jawnego, to jakaś litera będzie stanowiła 20% tekstu zaszyfrowanego. Czyli łatwo możemy zauważyć odkryć, jaką literę szyfruje litera, która stanowi 20% tekstu zaszyfrowanego. W każdym języku, częstotliwość występowania liter jest dobrze zbadana. W języku polskim prezentuje się ona następująco:

Diagram pochodzi z Wikipedii. Widzimy, że najczęściej występującymi literami w słowach języka polskiego są:

  • a
  • e
  • i
  • o

Więc dość łatwo jesteśmy w stanie dowiedzieć się, które litery w tekście zaszyfrowanym odpowiadają literom a, e, i oraz o. Podobna analiza jest wykonana dla dwuznaków. Znając kilka początkowych liter, jesteśmy w stanie odszyfrować kolejne.

Metoda kryptoanalizy szyfrów podstawieniowych została spopularyzowana przez Edgara Allana Poe w opowiadaniu Złoty żuk. Nie miałem przyjemności przeczytać tego opowiadania. Ale jego treść bardzo wpłynęła na historię Polski.

Grzebień, wesele i Złoty żuk

Teraz możemy wrócić do polskiego bohatera narodowego, o którym wspomniałem na samym początku tego wpisu. Mowa o Janie Kowalewskim. Był to człowiek wielu talentów. Studiował chemię w Belgii i jako inżynier dostał pracę w ukraińskiej Białej Cerkwi. Wybuch pierwszej wojny światowej zastał go właśnie na Ukrainie. Jako obywatel Imperium Rosyjskiego został zmobilizowany do carskiej armii. Na front trafił jako chorąży po kijowskiej szkole oficerskiej. Po odzyskaniu przez Polskę niepodległości wrócił do Ojczyzny i służył jej jako żołnierz.

Był sierpień roku 1919. Porucznik Bronisław Sroka chciał pojechać na wesele swojej siostry, gdy wypadał mu nocny dyżur. Znalazł zastępstwo – porucznika Jana Kowalewskiego. Kowalewski był miłośnikiem historii o Sherlocku Holmesie i opowiadań Edgara Allana Poe. Z nudów w czasie długiego nocnego dyżuru, zaczął łamać rosyjski szyfr. Założył, że w wiadomości wojskowej musi się pojawić słowo dywizja, po rosyjsku jest to:

дивизия

Zwróć uwagę na to, że słowo to zawiera 3 litery и. Zgodnie z tym, co pisałem w dygresji, można założyć, że w tekście zaszyfrowanym pojawi się słowo, w którym jedna litera powtórzy się trzy razy. Żeby szybciej szukać liter w zadanej sekwencji, Kowalewski wyłamał zęby w swoim grzebieniu i przykładał grzebień do kolejnych słów w tekście zaszyfrowanym. Dodatkowo wykorzystał fakt, że wiadomość została wysłana z Odessy (więc szukał słów, w których długość pasowała na słowa Odessa i w których pojawiała się zduplikowana litera). Do rana złamał szyfr. Od tamtej pory, polski wywiad łamał rosyjskie szyfry. Nie wszystkie były tak proste, że metoda ze Złotego żuka była wystarczająca. Kowalewski zajął się organizacją Biura Szyfrów i do łamania trudniejszych szyfrów zatrudnił genialnych polskich matematyków, między innymi Wacława Sierpińskiego. Dzięki pracy Kowalewskiego i jego Biura Szyfrów, naczelne dowództwo polskiej armii w czasie wojny z bolszewikami znało ruchy przeciwnika. W dużej mierze dzięki znajomości treści tajnych wiadomości wymienianych po drugiej stronie frontu, Cud nad Wisłą w ogóle mógł się wydarzyć.

Kowalewski dostał order Virtuti Militari za wkład w zwycięstwo wojny roku 1920.

Warto tutaj nadmienić, że zatrudnianie matematyków do łamania szyfrów było innowacyjnym pomysłem. Warto też odnotować, że Biuro Szyfrów stworzone przez Kowalewskiego odkryło panów Rejewskiego, Zygalskiego i Różyckiego, którzy złamali szyfr Enigmy. Ale to jest historia na inną okazję.

Aspirujący twórca internetowy, który zna się na programowaniu i chce się dzielić wiedzą

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Scroll to top