WSTP 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 N 4.1 Algebra liniowa modulo . . . . . . . . . . . . . . . . . . . . 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 oparty na problemie pakowania plecaka . . . . . . . . . . . . . 53 5.3 Kryptosystem 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 System RSA 60 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 8.6 Kongruencje stopnia 2 8.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 . . . . . . . . . . . . . . . . . . . . . . 77 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 . . . . . . . . . . . . . . . . . . . 9.2 Metoda . . . . . . . . . . . . . . . . . 85 9.3 Metoda faktoryzacji Fermata . . . . . . . . . . . . . . . . . . . 87 9.4 Bazy rozkªadu . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 ρ rozkªadu na czynniki 3 83 10 Logarytm dyskretny 92 10.1 Poj¦cie logarytm dyskretny . . . . . . . . . . . . . . . . . . . 92 10.2 System DiegoHellmana uzgadniania klucza . . . . . . . . . . . . . . . . . . . . . . . . 10.3 System kryptograczny Masseya-Omury 93 . . . . . . . . . . . . 95 10.4 System ElGamala . . . . . . . . . . . . . . . . . . . . . . . . . 96 11 Protokoªy o zerowej wiedzy i przekazy nierozró»nialne 11.1 Kolorowanie mapy 11.2 Logarytm dyskretny 97 . . . . . . . . . . . . . . . . . . . . . . . . 97 . . . . . . . . . . . . . . . . . . . . . . . 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 −1 zastosowania. Z drugiej strony chcemy mie¢ pewno±¢, »e znalezienie f 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 dodat- n = pq , gdzie p oraz q s¡ ϕ(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- nich wzgl¦dnie pierwszych z n. Zauwa»my, »e je±li liczbami pierwszymi, to znajomo±¢ warto±ci funkcji Eulera 62 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 czynem dwóch liczb pierwszych, a szyfrowania ani do deszyfrowania, wi¦c lepiej o nich zapomnie¢. Najpopularniejsz¡ metod¡ ªamania RSA jest wªa±nie znajdywanie rozkªadu liczby 7.2 n. Liczby wybrane losowo Nast¦pnym krokiem jest tu wygenerowanie klucza. losowe liczby pierwsze p oraz q Potrzebna do tego s¡ 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¡ 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., przez a» znajdziemy w ko«cu liczb¦ pierwsz¡. Poniewa» prawdopodobie«stwo zna- m wynosi 1/ ln m, ln m liczb tramy na lezienia liczby pierwszej w pobli»u losowo wybranej liczby mo»emy si¦ spodziewa¢, »e po przetestowaniu okoªo liczb¦ pierwsz¡. pierwsza z Podobnie szukamy liczby losowej e, która jest wzgl¦dnie φ(n). Wspomniane testy pierwszo±ci opieraj¡ si¦ najcz¦±ciej na dzeniu Fermata oraz na 7.1 Twierdzenie. oraz a - p, to a p−1 liczbach pseudopierwszych. (Maªe Twierdzenie Fermata) ≡ 1 (mod p). Maªym Twier- Je±li p jest liczb¡ pierwsz¡ Liczb¡ pseudopierwsz¡ o podstawie a nazywamy tak¡ liczb¦ zªo»on¡ n, an−1 ≡ 1 (mod n). W przeciwie«stwie do liczb pierwszych, liczby dla której 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 p oraz q , oraz liczb¦ losow¡ e, ϕ(pq). Niech n = pq , e < φ(n) (mo»na wzi¡¢ d = e−1 (mod ϕ(n)). Kluczem szyfruj¡cym jest Ka»dy u»ytkownik wybiera dwie liczby pierwsze która jest wzgl¦dnie pierwsza z liczb¦ e modulo φ(n)) oraz KE = (n, e). Mo»na go poda¢ do publicznej wiadomo±ci. Natomiast kluczem rozszyfrowuj¡cym jest KD = (n, d). Ten klucz lepiej jest zachowa¢ w tajemnicy tak jak liczby p, q oraz ϕ(n). Przeksztaªceniem szyfruj¡cym jest e funkcja f : Zn → Zn okre±lona wzorem f (P ) ≡ P (mod n). Przeksztaª−1 ceniem deszyfruj¡cym jest funkcja f odwrotna do f i okre±lona wzorem −1 d f (C) ≡ C (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¡ za- pisane za pomoc¡ tego samego alfabetu licz¡cego N symboli. Wybieramy k l liczby k i l tak, aby N < n < N . Jako jednostki tekstu jawnego we¹miemy bloki po k liter, które b¦dziemy traktowali jako liczby o podstawie N. k cyfrowe w systemie Podobnie, jednostkami zaszyfrowanymi b¦d¡ bloki po l liter. Zatem ka»dy blok tekstu zaszyfrowanego ma przypisan¡ warto±¢ liczbow¡ l mi¦dzy 0 i N − 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 klucz szyfruj¡cy A, który ma (46927, 39423). W tym celu szukamy najpierw odpowied2 nika liczbowego sªowa TAK. Jest to 19 · 26 + 0 · 26 + 10 = 12854. Na39423 st¦pnie obliczamy 12854 mod 46927 otrzymuj¡c w wyniku 14251 = 3 2 0 · 26 + 21 · 26 + 2 · 26 + 3, a to daje nam kryptotekst Tym samym kluczem zaszyfrowano inny tekst uzyskuj¡c kryptogram avbc. bc. Czy jeste± w stanie odtworzy¢ tekst jawny? Adresat ma swój klucz rozszyfrowuj¡cy (46927, 26767), który pozwala mu 26767 obliczy¢ 14251 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¡ k tak dobrane, aby N miaªo nie mniej ni» 200 cyfr dziesi¦tnych. eby podnie±¢ du»¡ liczb¦ do du»ej pot¦gi stosujemy algorytm iterowanego podnoszenia do 3 kwadratu. Zajmuje on, O(log 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 maj¡ oni klucze (publiczne) postaci (n, e1 ) oraz (n, e2 ). n, tzn. Je±li ta sama wia- domo±¢ jest wysªana do obu u»ytkowników, to mo»na j¡ rozszyfrowa¢ bez znajomo±ci klucza rozszyfruj¡cego pod warunkiem, »e e1 oraz e2 s¡ wzgl¦de e nie pierwsze. Dokªadnie, je±li znamy m 1 modn oraz m 2 modn oraz zachodzi NWD (e1 , e2 ) = 1, to istniej¡ liczby caªkowite x, y takie, »e e1 x + e2 y = 1. Zatem (me1 )x (me2 )y = me1 x+e2 y modn = m. Dla przykªadu przypu±¢my, »e n = 5038301, e1 = 787, e2 = 6785. jawny dzielimy tu na trigramy, które przechodz¡ w 5gramy. Tekst Zaªó»my, »e przechwycili±my teksty HOTIT oraz EOXNS. U»ywaj¡c algorytmu Euklidesa dostajemy 888e1 − 103e2 = 1. przechwycone 5gramy odpowiadaj¡ liczbom 3457967 oraz 2089872. Obliczamy zatem 3457967888 · 2089872−103 mod 5038301 = 4458054 · 999321 mod 5038301 = 11502, a to daje wiadomo±¢ jawn¡ 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 gdzie rak. e < k. k, tj. ich klucze publiczne to Przypu±¢my, »e do wszystkich k (n1 , e), n2 , e), . . . , (nk , e), u»ytkowników zostaªa wysªana ta sama wiadomo±¢ m. Zatem do itego u»ytkownika dociera wiadomo±¢ yi = me mod ni . Poniewa» m < ni oraz e < k , wi¦c me < n1 n2 . . . nk . U»ywaj¡c chi«skiego twierdzenia o resztach rozwi¡zujemy ukªad kongruencji Y ≡ yi (mod ni ) gdzie 1 ≤ i ≤ k. Na podstawie tego» twierdzenia istnieje dokªadnie jedno rozwi¡zanie modulo n1 n2 . . . nk takiego ukªadu kongruencji je±li liczby n1 , n2 , . . . , nk s¡ wzgl¦dnie e pierwsze. W tym wypadku mamy m = Y i »eby obliczy¢ m wystarczy wzi¡¢ zwykªy pierwiastek stopnia e z Y. 65 Rozwa»my dla przykªadu e=3 oraz n1 = 2881, n2 = 2867, n3 = 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, ro- zwi¡zujemy ukªad kongruencji Y ≡ 1332 (mod 2881) Y ≡ 855 otrzymuj¡c Y = m3 = 211708736. (mod 2867) Y ≡ 1455 (mod 3127) Pierwiastek sze±cienny z tej ostatniej liczby wynosi 596, czyli tekstem jawnym jest 66 wy.