ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15
Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych 17 5 Maªe Twierdzenie Fermata 20 6 Twierdzenie Eulera 23 7 Twierdzenie Lagrange'a 27 8 Chi«skie Twierdzenie o Resztach 30 9 RSA i gra w orªa i reszk przez telefon 36 10 Kongruencje wy»szych stopni 38 11 Liczby pseudopierwsze 44 12 Pierwiastki pierwotne 49 13 Istnienie pierwiastków pierwotnych 53 14 Logarytm dyskretny 58 15 Pewne zastosowania pierwiastków pierwotnych 61 2
Wykªad 9 RSA i gra w orªa i reszk przez telefon W rozdziale tym poka»emy kilka zastosowa«rozkªadu liczb na czynniki. System kryptograczny RSA (od nazwisk twórców: Rivest Shamir Adleman), który tu przedstawimy, oparty jest na problemie znalezienia rozkªadu liczby zªo»onej na czynniki pierwsze. Niejako efektem ubocznym jest tu zwi zana z rozwi zywaniem kongruencji kwadratowych gra w orªa i reszk przez telefon. Na pocz tek, zauwa»my»e, 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 raczej trudne. 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 oraz q. Istotnie, je±li znamy n, p oraz q, bez problemu mo»emy obliczy φ(n) = 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 szyfruj cym (jawnym) jest (n, e), gdzie n jest iloczynem dwóch liczb pierwszych, a e jest liczb wzgl dnie pierwsz z φ(n). Kluczem deszyfruj cym (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 tym zapomnie. Najpopularniejsz metod ªamania RSA jest wªa±nie znajdywanie rozkªadu liczby n. Je±li n jest liczb 300 bitow, lub krótsz (tj. ma co najwy»ej 300 bitów w rozwini ciu dwójkowym - okoªo 100 cyfr 36
dziesi tnych), to mo»na j rozªo»y w kilka godzin u»ywaj c domowego komputera z powszechnie dost pnym (darmowym) oprogramowaniem. O kluczach 512 bitowych wiadomo od roku 1999,»e s one ªamalne przy u»yciu klastra zªo»onego z kilkuset komputerów pracuj cych nieprzerwanie kilka tygodni. Teoretyczny komputer TWIRL opisany przez A. Shamira i E. Tromera w 2003 roku zakwestionowaª bezpiecze«stwo kluczy 1024 bitowych. Obecnie rekomendowan dªugo±ci klucza jest przynajmniej 2048 bitów. Istotnym zagro»eniem bezpiecze«stwa szyfrów RSA s obecnie komputery kwantowe. Wracaj c szczegóªów zwi zanych z RSA, 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. Teksty jawne i zaszyfrowane s 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 bierzemy bloki po k liter, które traktujemy 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. 9.1 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. eby podnie± du» liczb do (cz sto jeszcze wi kszej) pot gi stosujemy algorytm iterowanego podnoszenia do kwadratu. Dla przykªadu obliczymy 348 171 mod 1019. 37
W tym celu zapisujemy 348 171 = 348 27 +2 5 +2 3 +2+1 ) 2 (((348 = ( ) ) ) 2 2 2 2 348 348 348 348. 2 2 Nasze pot gowanie sprowadza si zatem do podnoszenia do kwadratu lub mno»enia przez 348, przy czym za ka»dym razem wynik dziaªania jest redukowany modulo 1019. Po wykonaniu oblicze«otrzymujemy 127. Funkcja szyfruj ca w systemie RSA jest typowym przykªadem funkcji jednokierunkowej, tj. takiej której warto±ci mo»na bez problemu obliczy, ale znaj c warto±, nie mo»na obliczy argumentu, dla którego ta warto± jest przyjmowana. Dodatkowo funkcja ta jest ró»nowarto±ciowa (1-1). Podobn funkcj, tyle»e 2-1 mo»na wykorzysta przy grze w orªa i reszk przez telefon. Zaªó»my,»e Alicja i Stefan s krótko po rozwodzie i zdecydowali si rzuci monet by zdecydowa, do kogo ma nale»e samochód. Jedno nie chce widzie drugiego, wi c spotkanie w celu dokonania rzutu nie wchodzi w rachub. Aby im pomóc, wykorzystamy stosunkowo maªe liczby,»eby caªy czas kontrolowa przebieg gry. Niech wi c n = 341 = 11 31. Liczby 11 oraz 31 s znane Alicji, a Stefan zna tylko ich iloczyn, tj. 341. 1. Stefan wybiera losowo liczb 0 < x 340 i oblicza warto± x 2. Zaªó»my,»e x = 134, wi c x 2 = 224. Alicja otrzymuje tylko liczb 224. 2. Alicja po otrzymaniu y = 224 oraz wiedz c,»e 341 = 11 31, oblicza cztery pierwiastki równania x 2 = 224 modulo 341. Robi to w nast puj cy sposób. Poniewa» x 2 224 (mod 341), wi c x 2 224 4 (mod 11) x 2 224 7 (mod 31) st d mamy jedn z czterech mo»liwo±ci x ± 2 (mod 11) x ± 10 (mod 31) Stosuj c oznaczenia z dowodu chi«skiego twierdzenia o resztach rozwi zujemy powy»szy ukªad nast puj co: a 1 = 2, m 1 = 11, a 2 = 10, m 2 = 31, M = 341. Obliczamy teraz M 1 = 31 oraz M 2 = 11. Stosuj c 38
algorytm Euklidesa lub w inny sposób obliczamy N 1 = 6 i N 2 = 17. Teraz ju» bez trudu otrzymujemy x = 2 31 6 + 10 11 17 = 2242, co modulo 341 daje 196. Alicja mo»e t liczb potraktowa jako swoj szcz ±liw i wysªa j Stefanowi, lub te» obliczy trzy pozostaªe liczby rozwi zuj c nast puj ce ukªady kongruencji x 2 (mod 11); x 2 (mod 11); x 2 (mod 11); x 10 (mod 31); x 10 (mod 31); x 10 (mod 31). Wówczas do dyspozycji b dzie miaªa liczby 196 oraz 134 (tak»e 196 i 134, ale to si nie liczy) i b dzie w prawdziwej rozterce decyduj c, czy ma wysªa x 2 = 196, czy te» x 1 = 134. 3. Je±li wysªaªa x 1 = 134 Stefan ma pecha, poniewa» nie zna on liczby 196, której Alicja natychmiast za» da. 4. Je»eli jednak Alicja wysªaªa x 2 = 196, wygrywa Stefan i na dowód wygranej przesyªa Alicji liczb 134. Zauwa»my,»e mo»emy tu zastosowa ka»d liczb n, która jest iloczynem dwóch liczb pierwszych p i q, przy czym je±li gramy faktycznie o samochód to liczby te musz by na tyle du»e i tak dobrane,»eby nie mo»na byªo zbyt szybko znale¹ rozkªadu liczby n. Liczby p = 11 oraz q = 31 z powy»szego przykªadu mog co najwy»ej sªu»y do gry o rozbite lusterko boczne. Zauwa»my te»,»e w punkcie 4, Stefan mo»e udowodni swoj wygran znajduj c bez problemu rozkªad liczby n, poniewa» NWD(x 1 x 2, n) jest wi kszy od 1, czyli stanowi nietrywialny dzielnik liczby n. 39