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ª 7 System RSA Przy poszukiwaniu funkcji jednokierunkowej f, któr chcemy zastosowa w systemie o kluczu publicznym, chcemy u»y pomysªu wzgl dnie prostego do zastosowania. Z drugiej strony chcemy mie pewno±,»e znalezienie f 1 nie b dzie ªatwe. Potrzebujemy wi c silnych dowodów empirycznych, których mo»e dostarczy nam historia poszukiwa«takiej funkcji. 7.1 Rozkªad liczb na czynniki System RSA (Rivest Shamir Adleman), który tu przedstawimy, oparty jest na problemie znalezienia rozkªadu liczby zªo»onej na czynniki pierwsze. Funkcj jednokierunkow jest tu funkcja okre±lona w zbiorze par liczb pierwszych o warto±ciach w zbiorze liczb naturalnych. Na przykªad, pomno-»enie dwóch dwu-cyfrowych liczb pierwszych, powiedzmy 23 i 47 nie powinno sprawi nam wi kszego problemu. Natomiast pytanie o rozkªad liczby 2047 (wiemy,»e jest ona iloczynem dwóch dwu-cyfrowych liczb pierwszych) jest trudne. Przypomnijmy,»e funkcj Eulera ϕ(n) nazywamy moc zbioru liczb dodatnich wzgl dnie pierwszych z n. Zauwa»my,»e je±li n = pq, gdzie p oraz q s liczbami pierwszymi, to znajomo± warto±ci funkcji Eulera ϕ(n) = n+1 p q jest równowa»na znajomo±ci liczb p i q. Istotnie, je±li znamy n, p oraz q, bez problemu mo»emy obliczy n + 1 p q. Je»eli natomiast znamy n oraz ϕ(n), to znamy te» n = pq oraz n + 1 ϕ(n) = p + q i»eby obliczy p oraz q, rozwi zujemy w miar prosty ukªad równa«stopnia drugiego. W przypadku systemu RSA, kluczem jawnym jest (n, e), gdzie n jest ilo- 62
czynem dwóch liczb pierwszych, a e jest liczb wzgl dnie pierwsz z ϕ(n). Kluczem tajnym jest natomiast (n, d), gdzie d jest liczb odwrotn do e modulo ϕ(n). Znajomo± rozkªadu liczby n oraz liczba ϕ(n) nie s potrzebne do szyfrowania ani do deszyfrowania, wi c lepiej o nich zapomnie. Najpopularniejsz metod ªamania RSA jest wªa±nie znajdywanie rozkªadu liczby n. 7.2 Liczby wybrane losowo Nast pnym krokiem jest tu wygenerowanie klucza. Potrzebna do tego s losowe liczby pierwsze p oraz q i liczba losowa spomi dzy 1 i φ(pq). Gdy mówimy o liczbie losowej, mamy na my±li liczb wybran przez pewien generator liczb losowych b d¹ pseudolosowych. Tym generatorem jest maszyna, która generuje ci g liczb tak, aby nikt nie mógª przewidzie jaka jest nast pna liczba w ci gu, ani sam generator nie byª w stanie powtórzy wygenerowanego wcze±niej ci gu. Nie zale»y nam tutaj, aby wykorzysta najwi ksze znane liczby pierwsze, poniewa» te s szybko znalezione przez postronnego intruza. Aby otrzyma losow liczb pierwsz, najpierw generujemy liczb m (im wi ksz tym lepiej). Je±li oka»e si ona liczb parzyst zast pimy j przez m + 1. Nast pnie zastosujemy odpowiednie testy pierwszo±ci, aby zobaczy, czy m jest pierwsza. Je±li nie, zast pujemy j przez m+2, m+4 itd., a» znajdziemy w ko«cu liczb pierwsz. Poniewa» prawdopodobie«stwo znalezienia liczby pierwszej w pobli»u losowo wybranej liczby m wynosi 1/ ln m, mo»emy si spodziewa,»e po przetestowaniu okoªo ln m liczb tramy na liczb pierwsz. Podobnie szukamy liczby losowej e, która jest wzgl dnie pierwsza z φ(n). Wspomniane testy pierwszo±ci opieraj si najcz ±ciej na Maªym Twierdzeniu Fermata oraz na liczbach pseudopierwszych. 7.1 Twierdzenie. (Maªe Twierdzenie Fermata) Je±li p jest liczb pierwsz oraz a p, to a p 1 1 (mod p). Liczb pseudopierwsz o podstawie a nazywamy tak liczb zªo»on n, dla której a n 1 1 (mod n). W przeciwie«stwie do liczb pierwszych, liczby pseudopierwsze s znacznie trudniejsze do znalezienia. Najmniejsz liczb pseudopierwsz o podstawie 2 jest 341, a o podstawie 3, 91. 63
7.3 Zasada dziaªania systemu RSA Ka»dy u»ytkownik wybiera dwie liczby pierwsze p oraz q, oraz liczb losow e, która jest wzgl dnie pierwsza z ϕ(pq). Niech n = pq, e < φ(n) (mo»na wzi liczb e modulo φ(n)) oraz d = e 1 (mod ϕ(n)). Kluczem szyfruj cym jest K E = (n, e). Mo»na go poda do publicznej wiadomo±ci. Natomiast kluczem rozszyfrowuj cym jest K D = (n, d). Ten klucz lepiej jest zachowa w tajemnicy tak jak liczby p, q oraz ϕ(n). Przeksztaªceniem szyfruj cym jest funkcja f : Z n Z n okre±lona wzorem f(p ) P e (mod n). Przeksztaªceniem deszyfruj cym jest funkcja f 1 odwrotna do f i okre±lona wzorem f 1 (C) C d (mod n). Pozostaje jeszcze wyja±ni, jakie jednostki tekstu b dziemy u»ywa. Chodzi tu przede wszystkim o to, aby ka»dy u»ytkownik systemu u»ywaª tych samych jednostek. Zaªó»my wi c,»e teksty jawne i zaszyfrowane b d zapisane za pomoc tego samego alfabetu licz cego N symboli. Wybieramy liczby k i l tak, aby N k < n < N l. Jako jednostki tekstu jawnego we¹miemy bloki po k liter, które b dziemy traktowali jako liczby kcyfrowe w systemie o podstawie N. Podobnie, jednostkami zaszyfrowanymi b d bloki po l liter. Zatem ka»dy blok tekstu zaszyfrowanego ma przypisan warto± liczbow mi dzy 0 i N l 1. 7.2 Przykªad. Przyjmiemy N = 26, k = 3 i l = 4. Zatem jednostki tekstu jawnego s trigramami, a jednostki tekstu zaszyfrowanego tetragramami. Chcemy przesªa wiadomo± TAK do u»ytkownika A, który ma klucz szyfruj cy (46927, 39423). W tym celu szukamy najpierw odpowiednika liczbowego sªowa TAK. Jest to 19 26 2 + 0 26 + 10 = 12854. Nast pnie obliczamy 12854 39423 mod 46927 otrzymuj c w wyniku 14251 = 0 26 3 + 21 26 2 + 2 26 + 3, a to daje nam kryptotekst avbc. Tym samym kluczem zaszyfrowano inny tekst uzyskuj c kryptogram bc. Czy jeste± w stanie odtworzy tekst jawny? Adresat ma swój klucz rozszyfrowuj cy (46927, 26767), który pozwala mu obliczy 14251 26767 mod 46927 = 12854, a to mu daje sªowo TAK. U»ytkownik systemu RSA z powy»szego przykªadu wygenerowaª swoje klucze u»ywaj c liczb pierwszych 281 i 167. Oczywi±cie u»yli±my tutaj bardziej,,wyobra»alne liczby ni» to si zwykle stosuje. Normalnie, liczby k i l s tak dobrane, aby N k miaªo nie mniej ni» 200 cyfr dziesi tnych. eby podnie± du» liczb do du»ej pot gi stosujemy algorytm iterowanego podnoszenia do kwadratu. Zajmuje on, O(log 3 n) operacji na bitach. 64
7.4 Wpadka systemowa wspólny moduª Przypu± my,»e dwóch u»ytkowników u»ywa tego samego moduªu n, tzn. maj oni klucze (publiczne) postaci (n, e 1 ) oraz (n, e 2 ). Je±li ta sama wiadomo± jest wysªana do obu u»ytkowników, to mo»na j rozszyfrowa bez znajomo±ci klucza rozszyfruj cego pod warunkiem,»e e 1 oraz e 2 s wzgl dnie pierwsze. Dokªadnie, je±li znamy m e 1 modn oraz m e 2 modn oraz zachodzi NWD(e 1, e 2 ) = 1, to istniej liczby caªkowite x, y takie,»e e 1 x + e 2 y = 1. Zatem (m e 1 ) x (m e 2 ) y = m e 1x+e 2 y modn = m. Dla przykªadu przypu± my,»e n = 5038301, e 1 = 787, e 2 = 6785. Tekst jawny dzielimy tu na trigramy, które przechodz w 5gramy. Zaªó»my,»e przechwycili±my teksty HOTIT oraz EOXNS. U»ywaj c algorytmu Euklidesa dostajemy 888e 1 103e 2 = 1. przechwycone 5gramy odpowiadaj liczbom 3457967 oraz 2089872. Obliczamy zatem 3457967 888 2089872 103 mod 5038301 = 4458054 999321 mod 5038301 = 11502, a to daje wiadomo± jawn rak. 7.5 Wpadka systemowa niski wykªadnik Zaªó»my,»e k u»ytkowników posiada w kluczu ten sam wykªadnik, który jest mniejszy od k, tj. ich klucze publiczne to (n 1, e), n 2, e),..., (n k, e), gdzie e < k. Przypu± my,»e do wszystkich k u»ytkowników zostaªa wysªana ta sama wiadomo± m. Zatem do itego u»ytkownika dociera wiadomo± y i = m e mod n i. Poniewa» m < n i oraz e < k, wi c m e < n 1 n 2... n k. U»ywaj c chi«skiego twierdzenia o resztach rozwi zujemy ukªad kongruencji Y y i (mod n i ) gdzie 1 i k. Na podstawie tego» twierdzenia istnieje dokªadnie jedno rozwi zanie modulo n 1 n 2... n k takiego ukªadu kongruencji je±li liczby n 1, n 2,..., n k s wzgl dnie pierwsze. W tym wypadku mamy m e = Y i»eby obliczy m wystarczy wzi zwykªy pierwiastek stopnia e z Y. 65
Rozwa»my dla przykªadu e = 3 oraz n 1 = 2881, n 2 = 2867, n 3 = 3127. Szyfrujemy tu digramy tekstu, a tekst zaszyfrowany skªada si z trigramów. Przypu± my,»e przechwycili±my wiadomo±ci BZG, BGX oraz CDZ wysªane do naszych trzech u»ytkowników. Wiadomo±ciom tym odpowiadaj liczby 1332, 855 oraz 1455. Wiemy te»,»e wszystkie trzy kryptogramy to jest ta sama wiadomo± jawna. U»ywaj c chi«skiego twierdzenia o resztach, rozwi zujemy ukªad kongruencji Y 1332 (mod 2881) Y 855 (mod 2867) Y 1455 (mod 3127) otrzymuj c Y = m 3 = 211708736. Pierwiastek sze±cienny z tej ostatniej liczby wynosi 596, czyli tekstem jawnym jest wy. 66