Rozdział 4 Macierze szyfrujące Opiszemy system kryptograficzny oparty o rachunek macierzowy. W dalszym ciągu przypuszczamy, że dany jest 26 literowy alfabet, w którym utożsamiamy litery i liczby tak, jak dotychczas. Jako jednostki tekstu wybieramy digramy, czyli bloki dwuliterowe. Nasze rozumowanie może być uogólnione na przypadek n gramów. Każdy digram przedstawiamy jako wektor o dwóch x współrzędnych. Dokładnie, blok liter xy przedstawiamy jako. Na przykład, digramowi ON odpowiada wektor. y 14 13 Jak wiadomo, każdemu wektorowi zaczepionemu w prostokątnym układzie współrzędnych odpowiada punkt końca tego wektora. Zatem możemy tu wprowadzić prostokątny układ współrzędnych, tyle że nie będzie to R 2, ale Z 2 26. Każdemu digramowi odpowiada więc punkt na (skończonej) płaszczyźnie afinicznej. 4.1 Algebra liniowa modulo 26 Teraz, gdy przedstawiliśmy już nasze digramy jako wektory bądź punkty na płaszczyźnie afinicznej, możemy wykorzystać przekształcenia różnowartościowe płaszczyzny jako funkcje szyfrujące. W szczególności możemy tu wykorzystać naszą wiedzę o macierzach, jako że dowolne przekształcenie liniowe f ma swoją reprezentację macierzową, czyli taką macierz A, że dla dowolnego wektora X mamy f(x) = AX. Jeśli f jest różnowartościowe, to odwzorowanie odwrotne do f jest reprezentowane przez macierz odwrotną do A. 1
Podamy teraz algorytm na obliczenie macierzy odwrotnej do A. Algorytm polega na tym, że układamy najpierw macierz (A I), gdzie I jest macierzą jednostkową, a następnie stosując elementarne przekształcenia wierszy (czyli mnożenie wiersza przez liczbę i dodawanie jednego wiersza do drugiego) przekształcamy macierz A tak aby dostać macierz jednostkową I. Gdy już to osiągniemy, macierzą po prawej stronie I będzie macierz odwrotna do A. Wykorzystamy teraz opisany algorytm, aby obliczyć macierz odwrotną do ( 9 15 19 2 ), gdzie współczynniki są z Z 26. 9 15 1 0 19 2 0 1 1 19 3 0 19 2 0 1 1 19 3 0 0 5 21 1 1 19 3 0 0 1 25 21 1 0 22 17 0 1 25 21 formujemy macierz (A I) mnożymy pierwszy wiersz przez 3 = 9 1 19 razy odejmujemy pierwszy wiersz od drugiego mnożymy drugi wiersz przez 5 1 = 21 19 razy odejmujemy drugi wiersz od pierwszego Opisany algorytm można też stosować dla macierzy nieodwracalnej. Wtedy nie będziemy jednak w stanie doprowadzić lewej strony do postaci macierzy jednostkowej. By nie robić nic,,na darmo warto jest więc wiedzieć, kiedy dana macierz jest odwracalna. Mówi o tym następujące twierdzenie. 4.1.Twierdzenie. Dla dowolnej macierzy A o współczynnikach w Z 26 następujące warunki są równoważne: (i) NWD(det A, 26) = 1; (ii) A ma macierz odwrotną; (iii) jeśli x i y nie są jednocześnie równe zeru, to A x y (iv) A określa odwzorowanie wzajemnie jednoznaczne. 0 ; 0 2
4.2 Szyfry Hill a System kryptograficzny, który rozważymy w tym podrozdziale został zaproponowany przez Lester a Hill a w 1929 roku. System ten, jak za chwilę zobaczymy stał się przełomem w kryptografii, ponieważ jest to historycznie pierwszy system, który szyfruje wieloliterowe jednostki tekstu i nie wymaga przy tym skomplikowanego klucza. Szyfrowanie wygląda następująco: 1. Wybieramy 2 2 macierz A o współczynnikach całkowitych odwracalną modulo 26. 2. Grupujemy tekst jawny w 2-gramy. Jeśli liczba liter w tekście nie jest podzielna przez 2, dodajemy na końcu tekstu cokolwiek. x 3. Każdy utworzony wektor p = tekstu jawnego mnożymy przez y macierz A i wektory Ap ustawiamy po kolei w tekst zaszyfrowany. 4.2.Przykład. Zaszyfrujemy tekst UKRYWAMY używając macierzy 1 2. 0 3 Grupujemy najpierw nasz tekst w jednostki dwuliterowe i otrzymujemy pięć wektorów 20 17 22 12,,,. (4.3) 10 24 0 24 Po pomnożeniu tych wektorów przez naszą macierz szyfrującą otrzymujemy 14 13 22 8,,, 4 20 0 20 co po podstawieniu odpowiedników literowych daje kryptotekst oenuwaiu. Ponieważ w opisanej powyżej metodzie szyfrowania wykorzystaliśmy digramy jako jednostki tekstu, powyższa metoda szyfrowania nazywa się 2 szyfrem Hill a. Jeśli nasz tekst podzielimy na jednostki n-literowe i do szyfrowania użyjemy macierzy n n, to otrzymamy n szyfr Hill a. 3
Uwagi. 1) Nasza macierz szyfrująca A wcale nie musi mieć współczynników z Z 26. Wystarczy, że po otrzymaniu wektorów zaszyfrowanego tekstu weźmiemy ich współczynniki modulo 26. Macierz A musi jednak być odwracalna modulo 26. 2) Zamiast mnożyć każdy wektor z (4.3) przez macierz A możemy od razu pomnożyć A przez macierz ( 20 17 22 ) 12 10 24 0 24,,złożoną z tych wektorów. Otrzymana macierz będzie macierzą, której kolumnami są wektory tekstu zaszyfrowanego. Deszyfrowanie. Żeby rozszyfrować szyfr Hill a, używamy macierzy odwrotnej do macierzy szyfrującej. Dokładnie, jeśli c = jest c1 digramem tekstu zaszyfrowanego, to A 1 c jest odpowiadającym mu digramem tekstu jawnego. 4.4.Przykład. Rozkodujemy 2 szyfr Hilla qilyfsnnpajguw zaszyfrowany za pomocą macierzy 9 15 A =. 19 2 Stosując opisany w 4.1 algorytm na znalezienie macierzy odwrotnej do A znajdujemy 22 17 A 1 =. 25 21 Następnie mnożąc A 1 przez macierz digramów zaszyfrowanego tekstu otrzymujemy 22 17 16 11 5 13 15 9 20 25 21 8 24 18 13 0 6 22 co daje nam tekst UWAZAJ NA SLONIA. = c 2 20 0 0 13 18 14 8, 22 25 9 0 11 13 0 4
Łamanie. Szyfru Hill a nie daje się złamać stosując metodę analizy częstości liter. Co najwyżej, możemy stosować analizę częstości występowania n gramów. Okazuje się jednak, że gdy znajdziemy n odpowiadających sobie n gramów, to będziemy też w stanie znaleźć i macierz deszyfrującą. By to zrobić można wykorzystać algorytm podobny do opisanego w 4.1 algorytmu znajdywania macierzy odwrotnej. Opiszemy go, trzymając się naszej dotychczasowej zasady, dla digramów. Dokładnie, jeśli mamy wektory tekstu jawnego ( p 1 oraz) p 2 oraz odpowiadające im wektory c 1 i c 2, to tworzymy c T macierz 1 p T 1 c T 2 p T, której wierszami są współrzędne wektorów tekstu zaszyfrowanego, po których następują współrzędne odpowiadających im wek- 2 torów tekstu jawnego. Następnie przekształcamy otrzymaną macierz stosując elementarne operacje na wierszach tak, aby po lewej stronie otrzymać macierz jednostkową. To co pojawi się po prawej stronie jest transponowaną macierzą deszyfrującą. 4.5.Przykład. Złamiemy szyfr hmrzsewcrnwfnncc wiedząc, że zaczyna się ona od słowa DEAR. 7 17 Wiemy więc, że wektorom tekstu zaszyfrowanego i odpowiadają wektory oraz. Zastosujemy teraz opisany algorytm do 12 25 3 0 4 17 znalezienia macierzy deszyfrującej A 1. 7 12 3 4 ( c T tworzymy macierz 1 p T 1 17 25 0 17 c T 2 p T 2 1 24 19 8 mnożymy pierwszy 17 25 0 17 wiersz przez 15 = 7 1, 1 24 19 8 9 razy dodajemy 0 7 15 11 pierwszy wiersz do drugiego, 1 24 19 8 mnożymy drugi 0 1 17 9 wiersz przez 7 1 = 15, 1 0 1 0 2 razy dodajemy 0 1 17 9 drugi wiersz do pierwszego. 1 17 Zatem A 1 =. Aby otrzymać tekst jawny, mnożymy otrzymaną 0 9 macierz deszyfrującą przez macierz złożoną z digramów tekstu zaszyfrowa- 5 ),
nego. Otrzymujemy ( 1 ) ( 17 7 17 18 22 17 22 13 ) 2 0 9 12 25 4 2 13 5 13 2 3 0 8 4 4 3 0 10 =, 4 17 10 18 13 19 13 18 co nam daje tekst DEAR IKE SEND TANKS. Aby metoda łamania szyfru podana w powyższym przykładzie zadziałała, macierz złożona z digramów tekstu zaszyfrowanego (lewa strona macierzy wyjściowej) musi być macierzą odwracalną. Jeśli tak nie jest, nasz algorytm się w pewnym momencie urywa i po lewej stronie nie możemy otrzymać macierzy jednostkowej. Co wtedy można zrobić? Możemy szukać innych odpowiadających sobie digramów. Jeśli takiej możliwości nie ma, staramy się uzyskać jak najwięcej informacji na temat macierzy A 1 i rozważyć kilka możliwości. 4.6.Przykład. Przypuśćmy, że przechwyciliśmy wiadomość wkncchssjh i wiemy, ( że pierwszym słowem ) jest GIVE. Naszą macierzą wyjściową jest 22 10 6 8 W =. Nie możemy wykonać już pierwszego kroku algorytmu, ponieważ ani 22 ani 13 nie są odwracalne modulo 26. Dlatego 13 2 21 4 musimy zrezygnować ze zwykłej drogi. By zebrać trochę informacji na temat A 1 stosujemy nasz algorytm modulo 13, czyli najpierw redukujemy wyrazy W modulo 13, a następnie znajdujemy macierz deszyfrującą modulo 13. Jest 2 4 nią. Zatem 3 2 2 4 A 1 = + 13A 3 2 1, gdzie macierz A 1 jest macierzą złożoną z zer i jedynek (16 możliwości). Wiemy jednak, że macierz A 1 jest odwracalna, więc jej wyznacznik musi być liczbą nieparzystą. To wyklucza 10 możliwości. Następnie wykorzystujemy informację, że 22 13 6 21 A 1 =, 10 2 8 4 1 0 1 1 co nam pozostawia dwie możliwości: oraz. Pierwsza macierz 1 1 1 1 daje nam wiadomość GIVE GHEMHP, co odrzucamy jako nieczytelną. Dru- 6
ga macierz daje nam wiadomość GIVE THEM UP, co zapewne jest tekstem jawnym. W naszych przykładach wykorzystaliśmy tylko macierze 2 2 i przy łamaniu szyfrów zakładaliśmy, że nasz przeciwnik używał takich właśnie macierzy i alfabetu dwudziesto sześcio literowego. Jeżeli użyte są macierze wyższych rozmiarów, łamanie szyfrów staje się trudniejsze, ale sama procedura łamania jest identyczna. Zauważmy, że zbyt duże rozmiary macierzy szyfrującej też nie są wskazane, ponieważ początek tekstu zaszyfrowanego staje się wtedy szyfrem permutacyjnym, który można złamać stosując analizę częstości występowania liter. 7