Część zadań z ćwiczeń #4 (pt 13 marca) Matematyka Dyskretna Enigma była maszyną do szyfrowania, używaną od lat 20. między innymi w Niemczech. Podstawowa wersja ma: 26 klawiszy, 26 lampek, 3 rotory połączone w ciąg zakończony reflektorem. Każdy rotor ma po 26 styków z obu stron, jedne połączone jakoś z drugimi. Reflektor ma 26 styków z jednej strony, które łączy parami (bez żadnych pętli czy jednokierunkowych diod). Wciśnięcie klawisza, np. z literą a, powodowało połączenie od baterii, przez wejście a po prawej stronie prawego rotora do jego wyjścia po lewej stronie, podobnie przez środkowy rotor, i lewy, do reflektora, po czym z powrotem przez lewy, środkowy i prawy rotor, aż do lampki połączonej z odpowiednim wyjściem prawego rotora (np. g). Lampka połączona z wciśniętym klawiszem była rozłączana, więc zapalała sie tylko lampka na drugim końcu połączenia (patrz rysunek). Po wciśnięciu każdego klawisza prawy rotor się obraca o jedną literkę. Co 26 wciśnięć obraca się środkowy rotor, co 26 2 lewy (więc dopiero po 26 3 wciśnięciach maszyna wraca do początkowej konfiguracji). Polacy zakupili (w 1928) komercyjną wersję Enigmy, więc wiedzieli jak działa, ale nie znali połączeń w rotorach w wariantach używanych przez armię niemiecką. Niech A, B, C, D, E, F oznaczają permutacje (zbioru n = 26-elementowego), którym ulegają kolejne litery tekstu. Tzn. jeśli na początku wciśnięcie a zapala g, to A(a) = g; jeśli wciśnięcie potem znowu a zapala c, to B(a) = c, itd. Zatem tekst a 1 a 2 a 3 a 4 a 5 a 6 jest kodowany na szyfrogram A(a 1 )B(a 2 )C(a 3 )D(a 4 )E(a 5 )F (a 6 ). Q1. Jaki typ (sygnaturę) może mieć A? Przypomnienie: typ permutacji mówi ile jest cykli każdej długości, np.: ( 12345 45132 ) ma typ 21 3 1, bo jej cykle to [1, 4, 3] oraz [2, 5] (1 4 3 1 oraz 2 5 2). i i ma typ 1 n, bo każdy punkt jest cyklem jedno-elementowym; i i + 1(mod n) ma typ n 1, bo tworzy jeden cykl [1234... n]. Q2. Ile jest permutacji o takim typie? Ogólniej (ale niewiele trudniej), dla ustalonego typu 1 λ 1 2 λ 2... n λn permutacji o tym typie? ( i iλ i = n) ile jest
Szyfogramy były wysyłane radiem, więc łatwo je podsłuchać. Niemcy każdorazowo wysyłali najpierw 6 liter, dalsze dopiero po przerwie. Pewnego dnia podsłuchano np.: fowvat wrtyuo qvtnmo kophau evprmu qmlnxz wvqymk dgybhj orcdua mijwce abocrh coeiaw ntplbu zugmcf lhmqzp... Q3. Znajdź jakąś powtarzającą się wiele razy zależność. Q4. Co ta zależność mówi nam o permutacjach A, B, C, D, E, F? (danego dnia one się nie zmieniają, ale szyfrują różne szóstki, o których wiemy tylko tyle co z poprzedniego zadania). Q5. Z odpowiedzi do poprzedniego pytania wiemy już, że Polacy każdego dnia mogli wywnioskować dokładnie jaką permutacją jest złożenie A D. Pokaż, że każda permutacja jest złożeniem dwóch inwolucji. Dla chętnych: pokaż, że A D (złożenie dwóch inwolucji bez punktów stałych) musi mieć typ 1 λ 1 2 λ 2... n λn, w którym każde λ i jest parzyste. Komentarz: to ostatnie twierdzonko niektórzy ponoć nazywają twierdzeniem, które wygrało WWII. Ściślej rzecz biorąc ważny jest jego dowód (niżej), w którym widzimy, że czerwono-niebieskie cykle tworzone przez (nieznane nam) parowania A, D implikują dwa cykle permutacji A D tej samej długości. Jeśli więc znamy A D i widzimy, że ma mało cykli, to możemy odgadnąć jak je połączyć w te pary powstałe z tych samych czerwono-niebieskich cykli i dla każdej takiej pary cykli odgadnąć jakies jedno czerwone parowanie można pokazać, że będzie ono implikować wszystkie pozostałe parowania w A i w D. Na przykład jeśli znamy A D = [a][d][bifg][hjce], to cykle można sparować tylko na jeden sposób: a, d musiały należeć do jednego czerwono-niebieskiego cyklu, zaś b, i, f, g, h, j, c, e musiały należeć do drugiego. Rozważając cztery możliwości dla A(b) {h, j, c, e} dostajemy wszystkie cztery możliwe rozkłady: A = [a, d][b, h][i, e][f, c][g, j] D = [a, d][h, i][e, f][c, g][j, b], A = [a, d][b, j][i, h][f, e][g, c] A = [a, d][b, c][i, j][f, h][g, e] A = [a, d][b, e][i, c][f, j][g, h] D = [a, d][j, i][h, f][e, g][c, b], D = [a, d][c, i][j, f][h, g][e, b], D = [a, d][e, i][c, f][j, g][h, b]. To sprowadza pytania o A, B, C, D, E, F do małej liczby wyborów, o ile nie będzie za wiele cykli. (Dalej łamanie jest dość chałupnicze, więcej napisałem na końcu.) Q6. Jaka jest oczekiwana liczba cykli długości k, dla ustalonego k? Dla uproszczenia rozważmy zupełnie losową permutację (dowolną, losujemy każdą z jednakowym prawdopodobieństwem 1 n! ). (Wartość oczekiwana X to suma po wszystkich możliwych zdarzeniach z (prawdopodobieństwa zdarzenia) (wartość X w tym zdarzeniu).) Q7. Jaka jest oczekiwana liczba wszystkich cykli w losowej permutacji? Wyraź za pomocą liczb Stirlinga pierwszego rodzaju i użyj faktu z wykładu: x n = k [ n k ] x k. Przypomnienie: [ n k ] to liczba permutacji na n elementach, które mają dokładnie k cykli (dowolnej długości). Ostatnie, niezwiązane z Enigmą: Q8. Pokazać (najprościej przez IK, dla x N), że x n = k { n k } x k. Przypomnienie: { n k } to liczba podziału n elementów na k niepustych bloków.
Podpowiedzi P1. Typ permutacji A Z opisu wynika, że jeśli a jest kodowane na g, to g byłoby kodowane na a po prostu te dwie literki są połączone kablem, przy ustalonej chwilowej pozycji rotorów. Wynika też, że a nigdy nie jest kodowane na a: reflektor jest bez pętli, po prostu paruje, zaś w rotorach różne litery przechodzą na różne (bo to permutacje=bijekcje), więc każda litera tekstu (wciśnięta klawiszem) była różna od odpowiadającej jej litery szyfrogramu (zapalonej lampki). Więc A ma dwie własności: A jest inwolucją, tzn. A = A 1, równoważnie A 2 = A A = id (tzn. A(A(x)) = x) A nie ma punktów stałych, tzn. A(x) x dla każdego x. P2. Liczba permutacji o danym typie Żeby policzyć permutacje o danym typie (np. 2 3 3 1 ), pomysł jest taki, żeby zliczyć na dwa sposoby ich wszystkie zapisy. Inaczej mówiąc można: napisać dowolną permutację elementów (np. 745319268), dopisać do niej nawiasy od najmniejszych tak, żeby otrzymać zapis cyklowy permutacji o tym typie (np. [74][53][19][268]) i policzyć ile razy otrzymamy tę samą permutację w ten sposób (np. [74][53][19][682], [35][74][19][682],...). P3. Zależność w szóstkach Enigma nic nie dodaje ani nie mnoży, generalnie tylko zamienia symbole w dowolnych kolejnościach, więc możemy oczekiwać raczej tylko znalezienia zależności w tym gdzie występują te same litery, a gdzie różne. Gdzie występują te same? P4. Co zależność mówi o A, B, C, D, E, F D(A 1 (w)) =? P5. Złożenie inwolucji Najpierw pokaż, że każdy cykl można otrzymać jako złożenie dwóch inwolucji. Dla dwóch inwolucji bez punktów stałych (czyli parować zamieniających elementy każdej pary), spójrz na graf otrzymany przez dorysowanie krawędzi dla każdej pary w każdej inwolucji. P6. Oczekiwana liczba cykli długości k Chcemy policzyć każdą permutację tyle razy, ile jest w niej cykli długości k (i pomnożyć 1 przez prawdopodobieństwo uzyskania tej permutacji n! ). Możemy to zrobić zliczając pary (permutacja, cykl długości k w tej permutacji). P7. Oczekiwana liczba wszystkich cykli Prawdopodobieństwo uzyskania k-elementowego cyklu to po prostu [ n k ] /n!. Pochodna x k to kx k 1. P8. Liczby Stirlinga drugiego rodzaju x n to liczba kolorowań n-elementowego zbioru na x kolorów (tu nie musimy użyć wszystkich kolorów).
Odpowiedzi A1. Typ permutacji A Po pierwsze, A jest inwolucją, czyli A(A(x)) = x dla każdego x. Gdybyśmy mieli cykl długości ponad 2, np. x y z... x, to A(A(x)) = z x, sprzeczność. Cykle długości 1 i 2 możemy mieć dowolne, czyli A jest inwolucją wtedy i tylko wtedy gdy ma typ 1 λ 1 2λ 2 dla jakichś λ 1, λ 2. Po drugie, A nie ma punktów stałych, czyli A(x) x dla każdego x. To znaczy dokładnie tyle, że nie ma cykli długości 1. Zatem jedyny możliwy typ A to 2 n/2 (np. A = [ax][bc][dz][eg]... ). A2. Liczba permutacji o danym typie Zapisujemy dowolną permutację elementów (na n! sposobów) i dopisujemy nawiasy od najmniejszych (na 1 sposób), by otrzymać zapis cyklowy permutacji o typie 1 λ 1 2 λ 2... n λn. Takie zapisy możemy alternatywnie wypisać wybierając najpierw permutację o tym typie (na X sposobów), wybierając (na λ i! sposobów) kolejność cykli długości i w zapisie, i dla każdego cyklu wybrać od którego elementu go wypisać (na i sposobów dla każdego z λ i cykli długości i). Czyli n! = X λ 1!λ 2! λ n! 1 λ 1 2 λ 2... n λn, X = n! λ 1!λ 2! λ n! 1 λ 1 2 λ 2...n λn. W szczególności inwolucji bez punktów stałych (czyli sposobów na to, żeby wszystkie elementy zbioru {1,..., n} poparować) jest (dla n parzystego, inaczej nie istnieją) n! n 2!2. n 2 Dla n = 26 to jest ponad 10 12 (podczas gdy 26! jest rzędu 10 26 ). A3. Zależność w szóstkach Zależność jest taka: jeśli w jakichś dwóch szóstkach powtarza się i-ta litera, to powtarza się też i + 3-cia. Np. wrtyuo oraz wvqymk, albo wrtyuo oraz orcdua. Inaczej mówiąc, pierwsze litera szyfrogramu determinuje czwartą, druga piątą i trzecia szóstą. Z budowy maszyny wiemy, że gdyby czwarta litera tekstu była dowolna, to czwarta w szyfrogramie też by była dowolna. Zatem pierwsza litera tekstu determinuje czwartą literę tekstu, itd. Można więc podejrzewać, że po prostu pierwsza litera tekstu jest równa czwartej, czyli wysyłano zawsze a 1 a 2 a 3 a 1 a 2 a 3. I rzeczywiście, Niemcy mieli ustalone w książce kodowej początkowe ustawienia maszyny każdego dnia (podzbiór 3 z 5 i kolejność rotorów, początkowy obrót rotorów, od 1930 kabelki), od których każdy operator Enigmy zaczynał. Operator wybierał potem jako swój klucz trzy literki określające nowe położenie rotorów (okienka uwidaczniają po jednej literce na każdym rotorze) i wysyłał klucz dwa razy (bo transmisja radiowa była dość kiepska), zaszyfrowany ustawieniem z książki. Potem ustawiał rotory zgodnie z kluczem, resztę zostawiając jak w książce. A4. Co zależność mówi o A, B, C, D, E, F Patrząc na np. wrtyuo wiemy, że jeśli jakąś nieznaną nam pierwszą literę x kodowano na A(x) = w, to tę samą literkę kodowano w czwartej pozycji na D(x) = y. Zatem D(A 1 (w)) = D(x) = y. Podobnie D(A 1 (r)) = u, D(A 1 (t)) = o i tak dalej, dla każdej szóstki poznajemy do trzech wartości permutacji A 1 D = A D (A jest inwolucją). W ten sposób Marian Rejewski w 1932 nie wiedząc nic o permutacjach wewnątrz Enigmy, mając około 80 podsłuchanych szyfrogramów z jednego dnia (o co było dość łatwo), mógł wywnioskować całą permutację A D.
A5. Złożenie inwolucji Cykl [1, 2, 3, 4, 5,..., n] można złożyć z dwóch inwolucji jako A D zaczynając np. od założenia, że A zamienia 1 z n. Wtedy D musi zamienic n z 2 (bo D(n) = D(A(1)) = 2), a 1 musi zostawić na miejscu (bo D(1) = D(A(n)) = 1). Z tego wynika, że A musi zamienić 2 z n 1 (bo D(2) = n = D(A(n 1))) i tak dalej. Dostajemy A = [1, n][2, n 1][3, n 2] [ n ] 2, n 2, D = [2, n][3, n 1] [ n ] 2, n 2 + 1 i rzeczywiście A D = [1, 2, 3, 4, 5,..., n]. Jeśli mamy inną permutację, np. chcemy rozłożyć permutację o zapisie cyklowym zawierającym cykl [a, b, c,..., z], to powyższym możemy otrzymać ten cykl jako złożenie dwóch inwolucji ruszających tylko elementy tego cyklu [a, b, c,..., z] = [a, z][b, y]... [n, m] [b, z][c, y]... [n, o][m] i wystarczy rozłożyć te cykle pożądanej permutacji niezależnie od siebie, np. jeśli A D = [a, b, c,..., z][a, b, c, d, e ], to jedną z możliwości jest A = [a, z][b, y]... [n, m][a, e ][b, d ][c ], D = [b, z][c, y]... [n, o][m][b, e ][c, d ]. Dla inwolucji A, D bez punktów stałych, ich parowania układają się w cykle parzystej długości, tzn. jeśli A zamienia a z jakimś b, to D zamienia b z jakimś c, A zamienia c z jakimś d i tak dalej, aż się zapętlimy i np. D zamienia z z a. Wtedy złożenie tych A z D permutuje a na c, c na e,..., w na y, w końcu y na a, zaś b permutuje na z, z na x,..., w końcu d na b. Czyli dla każdego cyklu w grafie tych krawędzi tworzą się dwa cykle permutacji A D tej samej długości. Zatem cykle w A D występują parami i typ tej permutacji musi mieć wszystkie λ i parzyste. 4 5 4 5 9 3 9 3 7 1 7 1 0 8 0 8 6 2 6 2 Przykład: A na czerwono, D na niebiesko, A D po prawej. A6. Oczekiwana liczba cykli długości k Wartość oczekiwaną liczby cykli długości k otrzymamy z definicji sumując po wszystkich permutacjach: liczbę cykli w danej permutacji razy prawdopodobieństwo jej uzyskania (równe 1 n! ). Tę sumę można przedstawić jako suma po wszystkich permutacjach, suma po wszystkich cyklach długości k tej permutacji z 1 n! (stała). Zamieniając teraz kolejność sumowania mamy: suma po wszystkich cyklach długości k w n-elementowym zbiorze, suma po wszystkich permutacjach zawierających ten cykl z 1 n!. (Inaczej mówiąc zliczamy pary (permutacja, cykl długości k w tej permutacji) na dwa sposoby). Dla ustalonego cyklu długości k, permutacji go zawierających jest (n k)! (po prostu musimy wybrać permutację na pozostałych elementach). Możliwych cykli długości k w n-elementowym zbiorze jest ( n k) (k 1)! (wybieramy elementy cyklu i wybieramy w jakiej kolejności cykl odwiedza te elementy*). Zatem szukana wartość oczekiwana to ( n ) k (k 1)! (n k)! 1 n! = 1 k.
*Jeśli chcemy wybrać kolejność elementów cyklu na danych k elementach, to możemy to zrobić ustalając np. najmniejszy na początek, jego następnik na (k 1) sposobów, następny na (k 2) i tak dalej, aż do ostatniego, który musi wrócić na początek. Inaczej mówiąc możemy wybrać zapis cyklowy na k! sposobów i każdy cykl otrzymamy na k sposobów (np. [afhc] = [fhca] = [hcaf] = [cafh]). A7. Oczekiwana liczba wszystkich cykli Z poprzedniego zadania i z liniowości wartości oczekiwanej (wartość oczekiwana sumy zmiennych to suma wartości oczekiwanych poszczególnych zmiennych) wychodzi H n. Ale zrobimy to inną metodą (która często działa dość automatycznie). Prawdopodobieństwo uzyskania permutacji o dokładnie k cyklach jest dokładnie [ n k ] /n! i mamy w takiej sytuacji k cykli oczywiście. Zatem z definicji wartość oczekiwana to k [ n k ] n! k. Stałą n! możemy wyjąć przed sumę. Teraz widzimy, że k [ n k ] potrafimy policzyć (to n!), ale chcemy każdy składnik domnożyć przez k, po którym sumujemy. Metoda, która się bardzo często sprawdza w takiej sytuacji, to policzyć k [ n k ] x k i zróżniczkować po k. Rzeczywiście: z wykładu wiemy, że k [ n k ] x k = x n. Różniczkując lewą stronę po x dostajemy k [ n k ] kx k 1, więc jak wstawimy x = 1 mamy szukaną sumę. Żeby zróżniczkować prawą stronę, równą x(x + 1)(x + 2)... (x + n 1), korzystamy ze wzoru Leibniza (fg) = f g + fg, z którego łatwo wynika, że (f 1 f 2... f n ) = f 1 f 2... f n + f 1 f 2... f n + +f 1 f 2... f n. Czyli dostajemy sumę w której każdy składnik to x(x+1)(x+ 2)... (x+n 1) z jednym nawiasem zróżniczkowanym (a każdy z nich po zróżniczkowaniu daje 1, czyli znika z iloczynu). Wstawiając x = 1 dostajemy więc (1 + 1)(1 + 2)(1 + 3)... (1 + n 1) + 1(1 + 2)(1 + 3)... (1 + n 1) + 1(1 + 1)(1 + 3)... (1 + n 1) + + 1(1 + 1)(1 + 3)... (1 + n 2) = n!( 1 1 + 1 1+1 + + 1 1+n 1 ) = n!h n. Zatem szukana wartość oczekiwana to [ n k ] k n! k = 1 n! d dx (xn ) x=0 = H n H n jest z grubsza logarytmiczne w n, więc oczekiwana liczba cykli jest rzeczywiście mała (dla n = 26 wynosi H 26 3.9). Próbując rozłożyć nasze A D dostaniemy dzięki temu niewiele możliwości do rozpatrzenia. A8. Liczby Stirlinga drugiego rodzaju Policzmy ile jest kolorowań n-elementowego zbioru na dane k kolorów, tak, żeby każdy był użyty. Trzeba wybrać podział na k niepustych bloków i przypisać blokom kolory w jakiejś kolejności, czyli: { n k } k!. Liczba kolorowań n-elementowego zbioru na (dowolny pozdbiór) x kolorów to x n, a z drugiej strony to też ( x ) k k { n k } k!, bo możemy najpierw wybrać podzbiór dowolnej liczby kolorów i kolorowanie na dokładnie te kolory, tak żeby każdego użyć. Stąd x n = ( x ) k k { n k } k! = k { n k } x k. Uwaga na boku: mówiliśmy, że sumę po x dowolnego wielomianu od x można policzyć przedstawiając go w bazie x k. Ten wzorek mówi, że liczby Stirling drugiego rodzaju opisują transformację bazy ze zwykłej x k w tą gdzie się łatwo sumuje, np.: Sax b n = Sa b { n k } x k = k k { n k } xk+1 k + 1 b a S b ax 3 = S b a(x 3 + 3x 2 + x) = ( x4 4 + 3x3 3 + x2 2 ) b a
Dodatek: trochę więcej o łamaniu Enigmy Znamy już powiedzmy A, B, C, D, E, F. Jak stąd wywnioskowano połączenia w rotorach? Niech X, Y, Z oznaczają permutacje odpowiadające prawemu, środkowemu i lewemu rotorowi w początkowej pozycji. Niech W oznacza permutację odpowiadającą reflektorowi (jest to inwolucja bez punktów stałych). Wtedy A = XY ZW Z 1 Y 1 X 1 (pomijam już znak złożenia ). Obrót prawego rotora odpowiada zamianie X na ρxρ 1, gdzie ρ = [abc... z] po prostu przechodzi na kolejną literkę. Dla pierwszych 26 znaków fragment Y ZW Z 1 Y 1 się nie zmienia, więc nazwijmy go W. Wtedy A = XW X 1 B = ρxρ 1 W ρx 1 ρ 1 C = ρ 2 Xρ 2 W ρ 2 X 1 ρ 2... F = ρ 5 Xρ 5 W ρ 5 X 1 ρ 5 Znamy A,..., F, ρ, nie znamy X, W. Zatem znamy np. B := ρ 1 F ρ = Xρ 1 W ρ 1 X 1 i podobnie C, D, E aż do F = Xρ 5 W ρ 5 X 1. Mnożąc dwa kolejne mamy np. B C = Xρ 1 W ρ 1 X 1 Xρ 2 W ρ 2 X 1 = Xρ 1 (W ρ 1 W ρ)ρx 1 C D = Xρ 2 (W ρ 1 W ρ)ρ 2 X 1 Oznaczmy ten wspólny nawias jako W. Wtedy A B = XW X 1 B C = Xρ 1 W ρ 1 X 1 C D = Xρ 2 W ρ 2 X 1 Wstawiając W = X 1 A B X z pierwszego równania dostajemy w drugim Podobnie... B C = Xρ 1 X 1 A B Xρ 1 X 1 C D = Xρ 1 X 1 B C Xρ 1 X 1 No to oznaczmy X := Xρ 1 X 1 jako jedyną niewiadomą, tzn.... B C = X A B X, C D = X B C X, D E = X C D X, E F = X D E X Łatwo zauważyć, że X jest cyklem (bo ρ 1 jest cyklem) i w zależności od typów A B, B C itd. dostajemy niewiele możliwości na X z każdego równania. Stosując wszystkie 4 równania zostanie nam z 1-2 rozwiązania. Znajomość X = Xρ 1 X 1 daje 26 możliwości na X. I tak poznajemy połączenia w prawym rotorze. W różnych dniach różne rotory były po prawej, więc w końcu Polacy poznali wszystkie. Mieli pewną komplikację przez to, że Enigma w wersjach armii miała dodatkowy panel zamieniający parami wybrane danego dnia elementy; ale w końcu od Francuzów dostali starą książkę kodów, w której te pary były wypisane. Znając połączenia w rotorach pozostaje danego dnia sprawdzić jakie jest początkowe ustawienie rotorów (jedno z 3!26 3 możliwych). Jedną z kilku metod wymyślonych przez Polaków było pokatalogowanie wszystkich za pomocą mechanicznego
tzw. cyklometru w zależności od tego jakie były cykle dobrze znanej permutacji A D zazwyczaj jednoznacznie identyfikowało to początkowe ustawienie. Tak to działało od końca 1932 do końca 1938. Potem Niemcy dodali dwa rotory i odtąd z pięciu wybierało się trzy niewiele więcej do pokatalogowania, ale jednak na granicy polskich możliwości. W sierpniu 1939 Polacy w spotkaniu ze służbami francuskimi i brytyjskimi przekazują wszystko co wiedzą o połączeniach w Enigmie i metodach łamania. Niemcy w trakcie wojny dodawali rotory, kabelki, a w końcu przestali wysyłać klucze w sposób, który pozwalał poznać A D i potrzebne były zupełnie nowe metody, opracowane przez Turinga i Welchmana. Więcej: np. http://en.wikipedia.org/wiki/cryptanalysis_of_the_enigma, https: //cryptocellar.web.cern.ch/cryptocellar/enigma/rew80.pdf oraz Facts and Myths of Enigma: Breaking Stereotypes.