WST P DO KRYPTOGRAFII Grzegorz Szkibiel Jesie«2012/13
Spis tre±ci 1 Kryptograa a steganograa 5 1.1 Steganograa........................... 6 1.2 Szyfry przestawieniowe...................... 8 1.3 Systemy kryptograczne..................... 9 2 Klasyczne metody szyfrowania 12 2.1 Szyfry cykliczne.......................... 12 2.2 Monoalfabetyczny szyfr Beauforta................ 13 2.3 Kody aniczne jednowymiarowe................. 14 2.4 Permutacje alfabetu....................... 15 2.5 Analiza cz sto±ci wyst powania liter............... 16 2.6 Homofony i nulle......................... 17 2.7 Jednostki dwuliterowe czyli digramy............... 18 2.8 Szyfr Playfaira.......................... 20 2.9 Podwójny szyfr Playfaira..................... 21 2.10 szyfr Delastelle'a......................... 22 2.11 Jednostki wieloliterowe...................... 23 2.12 Szyfry polialfabetyczne...................... 23 2.13 Ša«cuch szyfrów i DES...................... 28 3 Maszyny szyfruj ce 32 3.1 Zasada dziaªania......................... 32 3.2 Jak zªamano szyfr ENIGMY................... 36 4 Macierze szyfruj ce 41 4.1 Algebra liniowa modulo N.................... 41 4.2 Szyfry Hill'a............................ 44 4.3 Aniczne przeksztaªcenia szyfruj ce............... 48 2
5 Pakowanie plecaka 50 5.1 Postawienie problemu....................... 50 5.2 Szybko rosn ce ci gi....................... 51 5.3 Kryptosystem oparty na problemie pakowania plecaka............. 53 6 Systemy z publicznym kluczem 56 6.1 Numeryczna funkcja jednokierunkowa.............. 57 6.2 Funkcje skrótu.......................... 58 6.3 poufno± i autentyczno±...................... 58 6.4 Wymiana kluczy......................... 60 6.5 2-1 funkcje jednokierunkowe................... 60 7 System RSA 62 7.1 Rozkªad liczb na czynniki.................... 62 7.2 Liczby wybrane losowo...................... 63 7.3 Zasada dziaªania systemu RSA................. 64 7.4 Wpadka systemowa wspólny moduª............... 65 7.5 Wpadka systemowa niski wykªadnik............... 65 8 Teorio-liczbowe podstawy RSA 67 8.1 Systemy pozycyjne........................ 67 8.2 Iterowane podnoszenie do kwadratu............... 69 8.3 Twierdzenie Eulera i Maªe Twierdzenie Fermata.................... 69 8.4 liczby pseudo-pierwsze...................... 71 8.5 Chi«skie twierdzenie o resztach................. 74 8.6 Kongruencje stopnia 2...................... 77 8.7 Gra w orªa i reszk przez telefon................. 80 9 Zastosowania arytmetyki modulo m do rozkªadu liczb 83 9.1 Wzory skróconego mno»enia................... 83 9.2 Metoda ρ rozkªadu na czynniki................. 85 9.3 Metoda faktoryzacji Fermata................... 87 9.4 Bazy rozkªadu........................... 88 3
10 Logarytm dyskretny 92 10.1 Poj cie logarytm dyskretny................... 92 10.2 System DiegoHellmana uzgadniania klucza........................ 93 10.3 System kryptograczny Masseya-Omury............ 95 10.4 System ElGamala......................... 96 11 Protokoªy o zerowej wiedzy i przekazy nierozró»nialne 97 11.1 Kolorowanie mapy........................ 97 11.2 Logarytm dyskretny....................... 99 11.3 Przekazy nierozró»nialne..................... 100 11.4 Dowód faktoryzacji........................ 102 4
Rozdziaª 4 Macierze szyfruj ce System kryptograczny, który rozwa»ymy w tym rozdziale zostaª zaproponowany przez Lester'a Hill'a w 1929 roku. System ten, jak za chwil zobaczymy staª si przeªomem w kryptograi, poniewa» jest to historycznie pierwszy system, który szyfruje wieloliterowe jednostki tekstu i nie wymaga przy tym skomplikowanego klucza. Podstawow ide jest tu algebra liniowa, a wªa±ciwie teoria moduªów nad Z N. 4.1 Algebra liniowa modulo N Przypuszczamy,»e dany jest 26-literowy (lub, ogólnie, N-literowy) alfabet, w którym uto»samiamy litery i liczby tak, jak dotychczas. Jako jednostki tekstu wybieramy n-gramy, czyli bloki n literowe. Poniewa» uogólnienie jest proste, wi c ograniczymy si do przypadków, gdy n = 2 lub n = 3. Ka»dy digram przedstawiamy jako wektor o dwóch wspóªrz dnych. Dokªadnie, blok x liter xy przedstawiamy jako. Na przykªad, digramowi ON odpowiada y 14 wektor. Podobnie uto»samiamy trigramy i wektory o trzech wspóª- 13 rz dnych, xyz, to ( x y z )T itd. 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 n, ale Z n 26 lub ogólnie Z n N. Ka»demu n-gramowi odpowiada wi c punkt na (sko«- czonej) pªaszczy¹nie anicznej. 41
Teraz, gdy przedstawili±my ju» nasze n-gramy jako wektory b d¹ punkty na pªaszczy¹nie anicznej, mo»emy wykorzysta przeksztaªcenia ró»nowarto±ciowe pªaszczyzny jako funkcje szyfruj ce. W szczególno±ci mo»emy tu wykorzysta wiadomo±ci z algebry liniowej i anicznej. Przypomnijmy wi c,»e dowolne przeksztaªcenie liniowe (homomorzm) f ma swoj reprezentacj macierzow, czyli tak macierz A,»e dla dowolnego wektora X mamy f(x) równe AX. Macierz A otrzymujemy ((w) przypadku, gdy n = 2) przeksztaªcaj c przez f generatory oraz a nast pnie ukªadaj c macierz z 1 0 0 1 obrazów. Je±li f jest ró»nowarto±ciowe (jest monomorzmem), to odwzorowanie odwrotne do f jest reprezentowane przez macierz odwrotn do A. Podamy teraz prosty algorytm na obliczenie macierzy odwrotnej do A. Jest to znany algorytm eliminacji Gaussa. Jest on te» podstaw kryptoanalizy systemów opartych na macierzach. W celu obliczenia macierzy odwrotnej do A, ukªadamy najpierw macierz (A I), gdzie I jest macierz jednostkow. Nast pnie stosujemy elementarne przeksztaªcenia wierszy: 1. pomno»enie wiersza przez liczb odwracaln modulo N, 2. zamiana dwóch wierszy, 3. dodanie do jednego wiersza kombinacji liniowej pozostaªych, Macierz A tak aby dosta macierz jednostkow I. Oczywi±cie, w tym samym czasie jest przeksztaªcana druga cz ± macierzy (A I). Gdy ju» to osi gniemy, macierz po prawej stronie I b dzie macierz odwrotna do A. Opisany algorytm mo»na te» stosowa dla macierzy nieodwracalnej. Wtedy nie b dziemy jednak w stanie doprowadzi lewej strony do postaci macierzy jednostkowej. Dla przykªadu, obliczymy macierz odwrotn do ), 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 ( 9 15 19 2 formujemy macierz (A I) mno»ymy pierwszy wiersz przez 3 = 9 1 19 razy odejmujemy pierwszy wiersz od drugiego 42
1 19 3 0 0 1 25 21 1 0 22 17 0 1 25 21 mno»ymy drugi wiersz przez 5 1 = 21 19 razy odejmujemy drugi wiersz od pierwszego 22 17 Zatem A 1 =. Zastosujemy teraz eliminacj Gaussa, aby znale¹ 25 21 2 4 5 macierz odwrotn do B = 1 3 23. Otrzymujemy 15 24 13 2 4 5 1 0 0 1 3 23 0 1 0 15 24 13 0 0 1 1 3 23 0 1 0 2 4 5 1 0 0 15 24 13 0 0 1 1 3 23 0 1 0 0 24 11 1 24 0 0 5 6 0 11 1 1 3 23 0 1 0 0 5 6 0 11 1 0 24 11 1 24 0 1 3 23 0 1 0 0 1 22 0 23 21 0 24 11 1 24 0 1 0 9 0 10 15 0 1 22 0 23 21 0 0 3 1 18 16 1 0 9 0 10 15 0 1 22 0 23 21 0 0 1 9 6 14 1 0 0 23 8 19 0 1 0 10 21 25. 0 0 1 9 6 14 43
23 8 19 Ostatecznie mamy B 1 = 10 21 25. 9 6 14 By nie robi nic,,na darmo warto jest wiedzie, kiedy dana macierz jest odwracalna. Mówi o tym nast puj ce twierdzenie. 4.2.Twierdzenie. Dla dowolnej macierzy A o wspóªczynnikach w Z N nast puj ce warunki s równowa»ne: (i) NWD(det A, N) = 1; (ii) A ma macierz odwrotn ; (iii) je±li x i y nie s jednocze±nie równe zeru, to A x y 0 ; 0 (iv) A okre±la odwzorowanie wzajemnie jednoznaczne. 4.2 Szyfry Hill'a Przedstawimy tu dokªadnie metod szyfrowania, deszyfrowania oraz kryptoanalizy systemu Hill'a dla macierzy 2 2. Szyfrowanie wygl da nast puj co: 1. Wybieramy macierz A o wspóªczynnikach caªkowitych odwracaln modulo 26. 2. Grupujemy tekst jawny w digramy. 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.3.Przykªad. Macierz szyfruj c jest WAMY. 44 1 2. Zaszyfrujemy tekst UKRY- 0 3
Grupujemy najpierw nasz tekst w jednostki dwuliterowe i otrzymujemy pi wektorów 20, 10 17, 24 22, 0 12. (4.1) 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 nszyfr Hill'a. 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.1) 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 2szyfr Hilla qilyfsnnpajguw zaszyfrowany za pomoc macierzy 9 15 A =. 19 2 45 c 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 20 0 0 13 18 14 8 =, 25 21 8 24 18 13 0 6 22 22 25 9 0 11 13 0 co daje nam tekst UWAZAJ NA SLONIA. Šamanie. Okazuje si,»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 podobny do opisanego w 4.1 algorytm 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 ) c T p 2 oraz odpowiadaj ce im wektory c 1 i c 2, to tworzymy macierz 1 p T 1 c T 2 p T, 2 której wierszami s wspóªrz dne wektorów tekstu zaszyfrowanego, po których nast puj wspóªrz dne odpowiadaj cych im wektoró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. Rozszyfrujemy wiadomo± hmrzsewcrnwfnncc wiedz c,»e zaczyna si ona od sªowa DEAR. 7 17 Wiemy,»e wektorom tekstu zaszyfrowanego i odpowiadaj 12 25 3 0 wektory oraz. Zastosujemy teraz opisany algorytm do znalezienia 4 17 macierzy deszyfruj cej A 1. 7 12 3 4 17 25 0 17 1 24 19 8 17 25 0 17 1 24 19 8 0 7 15 11 tworzymy macierz ( c T 1 p T 1 c T 2 p T 2 mno»ymy pierwszy wiersz przez 15 = 7 1, 9 razy dodajemy pierwszy wiersz do drugiego, ), 46
1 24 19 8 mno»ymy drugi 0 1 17 9 wiersz przez 7 1 = 15, 1 0 0 1 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 zaszyfrowanego. 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 =. 13 2 21 4 Nie mo»emy wykona ju» pierwszego kroku algorytmu, poniewa» ani 22 ani 13 nie s odwracalne modulo 26. Dlatego 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 2 4 znajdujemy macierz deszyfruj c modulo 13. Jest ni. Zatem 3 2 2 4 A 1 = + 13A 3 2 1, 47
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. Druga macierz daje nam wiadomo± GIVE THEM UP, co prawdopodobnie 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 dwudziestosze±cioliterowego. 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. 4.3 Aniczne przeksztaªcenia szyfruj ce Ogólniejsz form szyfrowania wektora digramu (ngramu) jest pomno»enie go najpierw przez pewn macierz A, a nast pnie dodanie staªego wektora b. Zatem, je±li przez c oznaczymy jednostk tekstu zaszyfrowanego, a przez p jednostk tekstu jawnego, to c = Ap + b. Przeksztaªcenie deszyfruj ce ma wtedy posta p = A 1 c b, gdzie b = A 1 b. Zauwa»my,»e macierz A musi by macierz odwracaln. eby zªama szyfr aniczny, wystarczy zna trzy odpowiadaj ce sobie digramy. Zaªó»my,»e digramom c 1, c 2 i c 3 tekstu zaszyfrowanego odpowiadaj digramy p 1, p 2 i p 3 tekstu jawnego. Mamy wtedy p 1 = A 1 c 1 + b p 2 = A 1 c 2 + b p 3 = A 1 c 3 + b. (4.2) 48
Odejmuj c trzecie równanie od pierwszego i drugiego. Otrzymujemy ukªad równa«(p 1 p 3 ) = A 1 (c 1 c 3 ) (p 2 p 3 ) = A 1 (c 2 c 3 ). Teraz traktujemy p 1 p 3 oraz p 2 p 3 jako digramy tekstu jawnego, a c 1 c 3 i c 2 c 3 jako digramy kryptogramu i stosuj c algorytm opisany w 4.2 znajdujemy A 1. Kiedy ju» znamy t macierz, z dowolnego równania ukªadu (4.2) obliczamy b. 49