IN YNIERIA BEZPIECZE STWA LABORATORIUM NR 6 WYBRANE ZAGADNIENIA Z TEORII LICZB 1. Wybrane zagadnienia z teorii liczb Do konstruowania systemów kryptograficznych u ywa si cz sto wyrafinowanego aparatu matematycznego, którego opis mo na znale z zaawansowanych podr cznikach teorii liczb i algebry. Dla zrozumienia opisywanych tutaj algorytmów wystarczy znajomo podanych ni ej niektórych problemów teorii liczb. Du e znaczenie w kryptografii maj liczby pierwsze, czyli takie liczby, które dziel si bez reszty tylko przez 1 i przez siebie. Wa ne jest te poj cie liczb wzgl dnie pierwszych: dwie liczby a, b s wzgl dnie pierwsze, je li nie maj wspólnych dzielników >1, co zapisuje si jako nwd(a, b) = 1, gdzie nwd jest skrótem słów najwi kszy wspólny dzielnik. Ŝ ę ę Ŝ ź ć ę ś ć Ŝ Ŝ ą ą Ŝ ę ą ę ę Ŝ ś ę ą ę ę 1.1. Arytmetyka modularna Wyniki działa przy zastosowaniu tzw. arytmetyki modularnej mieszcz si zwykle w sko czonym zbiorze liczb, dlatego te ten sposób wykonywania oblicze nazywa si w USA w szkołach rednich arytmetyk zegarow , poniewa na tarczy zegara analogowego istnieje tylko 12 liczb. Notacja ń ą ń Ŝ ś ę ń ą ą ę Ŝ a≡b (mod n) (1.1) oznacza, e Ŝ a=b+k×n (1.2) dla pewnej liczby całkowitej k. Przykładowo, 7 ≡ 1 (mod 3); 6 ≡ 0 (mod 3). Zakłada si zwykle, e liczby a i b s dodatnie, oraz e b < n. Przy tych zało eniach liczba b jest reszt z dzielenia liczby a przez liczb n. Znak ≡ jest symbolem kongruencji, wobec tego, interpretuj c równanie (1.1) mówi si , e a jest kongruentne do b modulo n. Zbiór liczb całkowitych ę Ŝ ą Ŝ ą Ŝ ę ą ę Ŝ {0, 1, . . . , n-1} tworzy tzw. zupełny zbiór reszt modulo n, za operacja (1.3) ś a (mod n) (1.4) nazywa si redukcj modularn , w wyniku której otrzymuje si tak reszt z dzielenia a przez n, która jest mniejsza od n. ę ą ą ę -1- ą ę Do kongruencji odnosi si małe twierdzenie Fermata, które mówi, e je li p jest liczb pierwsz , to dla a całkowitych niepodzielnych przez p a p −1 (mod p ) ≡ 1 Z twierdzenia tego wynika, i a p (mod p ) ≡ a ę Ŝ ś ą ą Ŝ Podany tu opis arytmetyki modularnej mo e nie zgadza si z definicjami operacji modulo, przyj tymi w niektórych j zykach programowania. Np Pascal dopuszcza wykonywanie operacji modulo na liczbach dodatnich i ujemnych, z modułem równie dodatnim lub ujemnym, wobec czego wynik tych operacji mo e si zawiera w przedziale [–n + l, n – 1], a w j zyku C wyra enie a % b oznacza reszt z dzielenia a przez b. Działania arytmetyki modularnej spełniaj prawa przemienno ci, ł czno ci i rozdzielno ci mno enia wzgl dem dodawania: Ŝ ę ć ę ę Ŝ Ŝ ę Ŝ ę ć ę ą Ŝ ś ą ś ś ę a + b (mod n) = b + a (mod n), (1-5) a × b (mod n) = b × a (mod n), (1-6) a × (b + c) (mod n) = a × b + a × c (mod n). (1-7) Powa nym uproszczeniem arytmetyki modularnej jest mo liwo redukowania po rednich wyników oblicze modulo n. Zamiast wi c wykonywa najpierw wszystkie obliczenia w zwykły sposób, a wynik ostateczny zredukowa modulo n, ten sam wynik uzyskuje si łatwiej, stosuj c zale no ci: Ŝ Ŝ ń ę ś ć ś ć ć ą Ŝ ę ś a + b (mod n) = (a (mod n)) + (b (mod n)) (mod n), a × b (mod n) = (a (mod n)) × (b (mod n)) (mod n), a × (b + c) (mod n) = ((a (mod n)) × (b (mod n)) (mod n)+ + (a (mod n)) × (c (mod n)) (mod n))) (mod n). (1.8) (1.9) (1.10) Gdy moduł arytmetyki modularnej n jest liczb k-cyfrow , to stosuj c powy sze zasady redukcji, wyniki po rednie nie przekrocz liczby 2k-cyfrowej. Trzeba pami ta , e moduł ten w kryptografii jest przewa nie liczb ogromn , o kilkuset cyfrach dziesi tnych, co stwarza zapotrzebowanie na specjalne układy scalone dla arytmetyki modularnej i na specjalizowane systemy oprogramowania, pozwalaj ce na dowoln dokładno wykonywania działa w arytmetyce całkowitoliczbowej. ą ś ą ą Ŝ ą Ŝ ą ę ą ć Ŝ ę ą ą ś ć ń 1.2. Algorytm Euklidesa Bardzo wa n rol w kryptografii spełnia znany od ponad 2300 lat algorytm Euklidesa, pozwalaj cy w sko czonej liczbie kroków znale najwi kszy wspólny dzielnik dwóch liczb. Algorytm poszukiwania najwi kszego wspólnego dzielnika dwóch liczb naturalnych a0 i a1, spełniaj cych warunek a0 > a1, polega na wykonaniu serii operacji dzielenia całkowitoliczbowego zgodnie ze schematem: Ŝ ą ą ę ń ź ć ę ę ą a0 a1 = = ak-1 ak = = q1 × a1 + a2, q2 × a2 + a3, … qk × ak+1, qk+1 × ak+1 -2- a2 < a1 a3 < a2 ak+1 < ak Proces dzielenia ko czy si z chwil otrzymania reszty równej zeru. Ostatnia ró na od zera reszta jest poszukiwanym najwi kszym wspólnym dzielnikiem liczb a0 i a1. ń ę ą Ŝ ę Algorytm Euklidesa mo na opisa za pomoc bardzo prostej zale no ci rekurencyjnej: dla x = 0 y nwd ( x, y ) = nwd ( y (mod x ), x ) dla x ≠ 0 Ŝ ć ą Ŝ ś 1.3. Teorioliczbowa funkcja Eulera Ka da liczba naturalna n da si dodatnich liczb pierwszych: Ŝ przedstawi ę w postaci nast puj cego iloczynu pot g ć k n = ∏ pi ę ą ę di (1.12) i =1 Jest to tzw. rozkład kanoniczny liczby n. Funkcj Eulera φ(n) definiuje si dla ka dej liczby naturalnej (całkowitej dodatniej) n w sposób nast puj cy: φ (n) = {s : (1 ≤ s ≤ n ) ∧ (nwd (s, n )) = 1} Inaczej mówi c jest to moc zbioru liczb nie wi kszych od n i wzgl dnie pierwszych z n. Funkcja Eulera φ(n) okre la liczb liczb naturalnych w zbiorze {1, 2, …, n-1} wzgl dnie pierwszych z n. Na przykład, φ(8)= 4, poniewa w zbiorze liczb mniejszych od 8 tylko 1, 3, 5 i 7 s wzgl dnie pierwsze z 8. Liczby wzgl dnie pierwsze nie maj adnego wspólnego podzielnika wi kszego od 1. Funkcja Eulera dla liczby pierwszej p jest oczywi cie równa p-1. Aby znale warto funkcji Eulera dla liczby zło onej, rozkłada si j na iloczyn liczb pierwszych (1.12). Przykładowo, dla n = 2646 mo na napisa : n = 2646 = 2×33×72; zatem φ(2646) = 1×32×2×7×6 = 756. ę ę ę Ŝ ą ą ę ś ę ę ę Ŝ ą ę ę ą Ŝ ę ź ś ć ś ć Ŝ ę Ŝ ą ć Niektóre własno ci funkcji Eulera podane s ni ej: (a) φ(p) =p-l, (b) φ(pr) = pr-1(p-1), (c) φ(a, b) = φ(a)φ(b), gdy nwd(a, b) = 1, k (d) φ(n) = n ∏i =1 (1 − 1 / pi ) ś gdzie n, pi oraz pierwszych. ą k Ŝ jak we wzorze na rozkład liczby naturalnej na iloczyn pot g liczb ę 1.4. Pot gowanie modularne ę Redukcja modularna pozwala unikać duŜych wyników pośrednich przy operacji potęgowania modularnego, składającego się z wykonywania sekwencji moŜeń i dzieleń. Np. operację: a 8 (mod n ) = a × a × a × a × a × a × a × a (mod n ) moŜna wykonać następująco: (( ) ) a 8 (mod n) = a 2 (mod n ) (mod n ) (mod n ) 2 -3- 2 czyli zamiast mnoŜyć przez siebie 8 razy liczbę a i zredukować wynik modulo n wykonuje się 3 mnoŜenia i 3 redukcje modularne. Z powyŜszego przykładu wynika, Ŝe obliczenie xa (mod n) jest bardzo proste, jeśli wykładnik a jest potęgą dwójki. Jeśli wykładnik nie jest potęgą liczby 2, wówczas stosuje się następujący algorytm do obliczenia wyraŜenia xa (mod n), zwany szybkim algorytmem potęgowania modularnego: Algorytm wyznaczania wyra enia w = xa (mod n) 1. Zapisać wykładnik a w systemie dwójkowym: a = amam-1…a1a0, ai∈{0,1} 2. w := 1, i := m 3. w := w2 (mod n) 4. jeśli ai = 1, to w := w × x (mod n) 5. i := i-l 6. jeśli i > 0, to przejść do kroku 3, w przypadku przeciwnym otrzymuje się Ŝądany wynik w = xa (mod n) Ŝ ś 1.5. Odwrotno ć multyplikatywna modulo n Obliczenie odwrotności multyplikatywnej x = a-l modulo n liczby a polega na rozwiązaniu równania: (1.14) ax ≡ 1 (mod n) które odpowiada równaniu ax + nk = 1 (1.15) -1 gdzie k jest pewną liczbą całkowitą. Oczywiście zachodzi a×a (mod n) ≡ 1. W teorii liczb znany jest algorytm rozwiązania liniowego równania diofantycznego ax + by = nwd(a, b) (1.16) w dziedzinie liczb całkowitych. Jest to jedno równanie (juŜ w III wieku potrafił je rozwiązywać matematyk grecki Diofantos) z dwiema niewiadomymi x i y, które ma nieskończenie wiele rozwiązań. Jeśli liczby x0 i y0 spełniają to równanie, to wszystkie liczby x = x0 + b× k, y = y0 – a×k, gdzie k = 0, ±1, ±2, ... są równieŜ rozwiązaniami równania (1.16). Algorytm rozwiązania równania diofantycznego polega na wyznaczaniu elementów trzech sekwencji: q0 = 1 r0 = 0 s0 = a q1 = 0 r1 = 1 s1 = b Dla i > 1 elementy sekwencji oblicza się z wzorów: ni = si −2 div si −1 qi = qi −2 − ni qi −1 ri = ri −2 − ni ri −1 si = si −2 mod si −1 Dla pewnego m, takiego, Ŝe sm = 0, otrzyma się: x = q m−1 y = rm−1 nwd (a, b) = s m−1 -4- Odwrotność multyplikatywna liczby a modulo n istnieje tylko wówczas, gdy nwd(a,n) = 1. Jeśli więc liczby a i n są względnie pierwsze, to istnieje tylko jedna odwrotność multyplikatywna x = a-1 (mod n) mniejsza od modułu n, spełniająca warunek xa (mod n) ≡ 1. Uogólnione małe twierdzenie Fermata głosi, Ŝe jeśli nwd(a, n) = 1, to (1.17) a ϕ (n ) ≡ 1(mod n ) skąd, po podzieleniu obu stron równania (1.17) przez a otrzyma się (2.18) a ϕ (n )−1 ≡ a −1 (mod n ) co jest inną metodą obliczania odwrotności multyplikatywnej modulo n. ϕ(n) oznacza funkcję Eulera. Przykładowo, jeśli a = 4 i n = 11, to 4-1 = 49 (mod 11) = 3. 2. Szyfr Hilla Szyfr ten dokonuje przekształcenia liniowego d znaków tekstu jawnego m1, m2,…, md w d znaków kryptogramu c1, c2,…,cd. Kluczem jest macierz współczynników. Dla d = 2, wyraŜenie szyfrujące ma postać: c1 k11 c = k 2 21 k12 m1 mod n k 22 m2 Deszyfrowania dokonujemy, uŜywając macierzy odwrotnej K-1, przy czym K −1 K mod n = I , gdzie I jest macierzą jednostkową. Przykład. Niech klucz algorytmu Hilla będzie następującą macierzą: 3 7 5 12 Wtedy tekst jawny i kryptogram mają postać: m= c= K T R U Y V P O Np dla m1 = K (jest to 10. litera alfabetu licząc od 0), m2 = R (17. litera alfabetu licząc od 0): 3 7 10 19 5 12 17 mod 26 = 20 A zatem kryptogram ma postać: TU. Powtarzamy tę operację dla wszystkich par liter, otrzymując pełen kryptogram. -5- Obliczanie macierzy odwrotnej. Aby dokonać operacji deszyfrowania, naleŜy znaleźć macierz odwrotną, co oznacza rozwiązanie następującego równania: −1 a b a b 1 0 c d c d mod 26 ≡ 0 1 −1 3 7 3 7 Szukamy odwrotności macierzy , co mo Ŝ na zapisa ć : 5 12 i dalej: 5 12 d − b −1 ad − bc ad − bc a b . c d = − c a ad − bc ad − bc Stąd −b d −1 ad − bc ad − bc a b 1 0 a b a b = c d c d = − c a c d 0 1 ad − bc ad − bc Z zaleŜności tych wynika, Ŝe musi być moŜliwość dzielenia modulo przez ad-bc – zatem wynik tego działania musi być jedną z liczb 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 lub 25. Wartość ad-bc jest nazywana wyznacznikiem macierzy. Uogólniając, wyznacznik macierzy klucza musi być względnie pierwszy z n (w naszym przypadku równym 26). 3 7 Wyznacznik macierzy wynosi 3 × 12 − 5 × 7 = 1 ≡ 1 mod 26 . A zatem macierz 5 12 −1 3 7 12 − 7 12 19 odwrotna będzie miała postać = ≡ mod 26 5 12 − 5 3 21 3 Dla c1 = 19, c2 = 20: 12 19 19 10 21 3 20 mod 26 = 17 Inny przykład wyznaczenia macierzy odwrotnej. 3 7 Niech macierzą klucza będzie . 9 10 Najpierw obliczamy wyznacznik macierzy klucza: 3 7 det = (3 × 10 − 9 × 7 ) mod 26 = (30 − 63) mod 26 = (− 33 + 2 * 26) mod 26 = 19 9 10 -6- Wyznacznik macierzy jest względnie pierwszy z liczbą n (równą 26), a zatem istnieje macierz odwrotna. Korzystając ze wzorów podanych w materiałach, otrzymujemy: 10 − 7 −1 19 19 3 7 9 10 = − 9 3 mod 26 19 19 W arytmetyce modularnej operacja dzielenia oznacza mnoŜenie przez odwrotność, a zatem naleŜy znaleźć odwrotność multyplikatywną liczby 19, czyli liczbę spełniającą warunek: (19 × a )mod 26 = 1 gdzie a jest odwrotnością multyplikatywną liczby 19. UŜywając wzorów, podanych w pkt. 1.5, otrzymujemy szukaną liczbę – jest nią liczba 11, a zatem: −1 3 7 10 ×11 9 10 = (− 9 + 26) ×11 (− 7 + 26)×11 3 ×11 6 1 mod 26 = 5 7 6 1 MoŜna sprawdzić, Ŝe macierz jest macierzą odwrotną dla 5 7 3. Zadania 3.1. Zapoznać się z materiałami 3.2. Zaimplementować szyfr Hilla dla macierzy n×n. -7- 3 7 9 10 .