Wykład IV Kierunek Informatyka - semestr V Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik
Systemy z kluczem publicznym
Klasyczne systemy kryptograficzne W klasycznych systemach znając odwzorowanie szyfrujące: f : P C oraz klucz szyfrujący, można łatwo obliczyć klucz deszyfrujący oraz funkcję odwrotną f 1 : C P. Zatem zarówno klucz szyfrujący jak i deszyfrujący muszą być tajne.
Funkcja progowa Istnieją metody, które mają tę własność, że jeśli ktoś zna klucz szyfrujący, to może łatwo obliczyć wartość przekształcenia szyfrującego f : P C jednakże bardzo trudno jest mu obliczyć na podstawie tej wiedzy wartości funkcji odwrotnej f 1 : C P. Zatem z punktu widzenia obliczalności praktycznej f nie jest funkcją odwracalną (bez dodatkowej informacji - klucza rozszyfrowującego). Takie funkcje nazywamy funkcjami progowymi lub funkcjami jednokierunkowymi z kluczem (trapdoor functions).
Uwaga Pojęcie praktycznej obliczalności nie jest precyzyjne z matematycznego punktu widzenia. Jest to pojęcie czysto empiryczne, zależne od postępów technologii komputerowej oraz odkryć nowych algorytmów.
Systemy z kluczem publicznym Osoba A tworzy poufnie dwa klucze (matematycznie powiązane). Jeden z nich nazywany jest kluczem publicznym, a drugi kluczem prywatnym. Obliczenie klucza prywatnego na podstawie klucza publicznego jest praktycznie niewykonalne. Klucz publiczny może być swobodnie rozpowszechniany (np. publikowany w książce telefonicznej), natomiast odpowiadający mu klucz prywatny musi zostać zachowany w sekrecie. Osoba B chcąc wysłać do A wiadomość używa do jej zaszyfrowania ogólnego algorytmu szyfrującego wykorzystującego klucz publiczny jako parametr. Osoba A otrzymany od B szyfrogram odszyfrowuje przy użyciu klucza tajnego.
Elementy teorii liczb
Funkcja Eulera Definicja Niech n będzie liczbą naturalną. Funkcja Eulera jest określona jako liczba ϕ(n) = {0 a < n ; NWD(a, n) = 1}. Zatem ilość elementów odwracalnych pierścienia Z n możemy wyrazić jako ϕ(n).
Właśności n 1 2 3 4 5 6 7 8 9 10 ϕ(n) 1 1 2 2 4 2 6 4 6 4
Właśności n 1 2 3 4 5 6 7 8 9 10 ϕ(n) 1 1 2 2 4 2 6 4 6 4 Ogólnie: ϕ(1) = 1 ϕ(p) = p 1 ϕ(p α ) = p α ( 1 1 p )
Właśności Lemat Funkcja Eulera jest multyplikatywna, tzn. jeśli tylko NWD(m, n) = 1, to ϕ(mn) = ϕ(m)ϕ(n).
Właśności Lemat Funkcja Eulera jest multyplikatywna, tzn. jeśli tylko NWD(m, n) = 1, to ϕ(mn) = ϕ(m)ϕ(n). Wniosek Niech n = p α 1 1 pα 2 2 pαs s ϕ(n) = wtedy s i=1 p α i i (1 1 pi ).
Własności Twierdzenie Przypuśćmy, że o liczbie naturalnej n wiadomo, że jest ona iloczynem dwóch różnych liczb pierwszych. Wtedy znajomość oby czynników pierwszych p i q jest równoważna znajomości ϕ(n).
Własności Twierdzenie Przypuśćmy, że o liczbie naturalnej n wiadomo, że jest ona iloczynem dwóch różnych liczb pierwszych. Wtedy znajomość oby czynników pierwszych p i q jest równoważna znajomości ϕ(n). Dowód. Jeżeli znam p i q, to ϕ(n) = (p 1)(q 1).
Własności Twierdzenie Przypuśćmy, że o liczbie naturalnej n wiadomo, że jest ona iloczynem dwóch różnych liczb pierwszych. Wtedy znajomość oby czynników pierwszych p i q jest równoważna znajomości ϕ(n). Dowód. Jeżeli znam p i q, to ϕ(n) = (p 1)(q 1). W drugą stronę: jeśli znam n i ϕ(n) to rozwiązujemy układ równań { ϕ(n) = (p 1)(q 1) = n + 1 (p + q) n = pq
Twierdzenie Eulera Twierdzenie Jeśli NWD(a, n) = 1, to a ϕ(n) 1 (mod n).
Twierdzenie Eulera Twierdzenie Jeśli NWD(a, n) = 1, to a ϕ(n) 1 (mod n). Wniosek Jeśli NWD(a, n) = 1 i jeśli b b (mod ϕ(n)) to a b a b (mod n).
Małe twierdzenie Fermata Twierdzenie Eulera jest uogólnieniem małego twierdzenie Fermata. Małe twierdzenie Fermata jest szczególnym przypadkiem twierdzenia Eulera. Jeśli NWD(a, n) = 1, to a ϕ(n) 1 (mod n). Jeśli p a, to a p 1 1 (mod p).
Przykład Znajdź ostatnią cyfrę liczby 2 1000000 w systemie o podstawie 7.
Przykład Znajdź ostatnią cyfrę liczby w systemie o podstawie 7. 2 1000000 Niech p = 7. Wtedy z małego twierdzenia Fermata otrzymujemy, że jeśli 7 a, to a 7 1 1 (mod 7). Zatem 2 1000000 = 2 166666 6+4 = (2 166666 ) 6 2 4 1 16 2 (mod 7).
Podstawowe twierdzenie dla RSA Twierdzenie Jeśli n = pq, p q oraz de 1 (mod ϕ(n)), to dla dowolnego a N mamy a de a (mod n).
Kryptosystem RSA
Podstawy matematyczne istnieją efektywne algorytmy testowania pierwszości liczb efektywne znajdowanie dzielników pierwszych danej liczby jest zadaniem trudnym
Algorytm RSA RSA - zaprojektowany w 1977 przez Rona Rivesta, Adi Shamira oraz Leonarda Adlemana W latach 1983-2000 obowiązywał na niego patent na terenie Stanów Zjednoczonych. Opublikowany w: Rivest R.L., Shamir A., Adleman L., A method for obtaining digital signatures and public-key cryptosystems, Comm. ACM, Feb. 1978, vol. 2(1), s. 62-65.
Kryptosystem RSA Osoba A - konstrukcja kluczy: - losuje dwie duże liczby pierwsze p i q, - oblicza n A = p q, oraz ϕ(n A ) = (p 1)(q 1), - losuje liczbę e A taką, że - oblicza d A = e 1 A 1 < e A < ϕ(n A ) i NWD(e A, ϕ(n A )) = 1, Klucz publiczny: (n A, e A ) Klucz prywatny: (n A, d A ) (mod ϕ(n A))
Kryptosystem RSA Szyfrowanie: Osoba B chce wysłać wiadomość do osoby A. Oblicza reprezentację liczbową P swojej wiadomości. Wykorzystując klucz publiczny oblicza C = P e A (mod n A ). Deszyfrowanie: Osoba A oblicza C d A (mod n A ) = P.
Szczegóły Szyfrowanie i deszyfrowanie RSA odbywa się zgodnie ze schematem P α Z na Z na β C gdzie P to blok tekstu jawnego, C to blok szyfrogramu, α przekształcenie tekstu na element pierścienia Z na, β przekształcenie elementy pierścienia Z na na tekst.
Szczegóły Jeżeli alfabet ma N liter, a jednostkami tekstu jawnego są k-gramy, to wobec różnowartościowości α mamy N k < n A. Podobnie, jeśli jednostkami kryptogramu są l-gramy, to wobec różnowartościowości β mamy n A < N l. W praktyce zakłada się, że wartości k i l są takie same dla wszystkich użytkowników systemu. Zatem każdy użytkownik musi wybrać liczby pierwsze p A i q A tak, by liczba n A = p A q A spełniała nierówności N k < n A < N l.
Przykład Przyjmijmy alfabet angielski N = 26, oraz k = 3, l = 4. Zatem jednostkami tekstu jawnego są trigramy, a jednostkami tekstu zaszyfrowanego są bloki czteroliterowe. Niech A będzie użytkownikiem systemu, którego kluczem szyfrującym podanym do publicznej wiadomości jest K E,A = (n A, e A ) = (46927, 39423). Tylko użytkownik A zna swój klucz deszyfrujący K D,A = (n A, d A ) = (46927, 26786).
Przesyłanie wiadomości YES do użytkownika A. Znajdujemy najpierw odpowiednik liczbowy trigramu YES: Następnie obliczamy YES 24 26 2 + 4 26 + 18 = 16346 (16346) 39423 (mod 46927) = 21166 Wynik konwertujemy na tekst długości 4: 21166 = 1 26 3 + 5 26 2 + 8 26 + 2 Przesłanym kryptogramem będzie BFIC.
Przykład c.d. Odszyfrowanie kryptogramu. Użytkownik A znajduje najpierw jego odpowiednik liczbowy dla kryptogramu BFIC: BFIC 1 26 3 + 5 26 2 + 8 26 + 2 Następnie korzysta ze swojego tajnego klucza deszyfrującego i oblicza 21166 26786 (mod 46927) = 16346. Wynik zapisuje jako trigram: 16346 = 24 26 2 + 4 26 + 18 YES.
Założenie dotyczące klucza RSA 1 p i q powinny mieć co najmniej 512 bitów 2 p i q nie mogą być bliskie siebie, jedna powinna mieć kilka cyfr dziesiętnych więcej niż druga 3 p 1 i q 1 powinny mieć mały największy wspólny dzielnik 4 p i q powinny być silnymi liczbami pierwszymi
Metoda faktoryzacji Fermata Twierdzenie Niech n będzie dodatnią liczbą nieparzystą. Istnieje wzajemnie jednoznaczna odpowiedniość między rozkładami liczby n na iloczyn postaci n = ab, gdzie a b > 0, a rozkładami n na różnicę kwadratów postaci n = t 2 s 2, gdzie t i s są liczbami całkowitymi nieujemnymi. Tę odpowiedniość określają równości: t = a + b 2, s = a b, a = t + s, b = t s. 2
Metoda faktoryzacji Fermata Twierdzenie Niech n będzie dodatnią liczbą nieparzystą. Istnieje wzajemnie jednoznaczna odpowiedniość między rozkładami liczby n na iloczyn postaci n = ab, gdzie a b > 0, a rozkładami n na różnicę kwadratów postaci n = t 2 s 2, gdzie t i s są liczbami całkowitymi nieujemnymi. Tę odpowiedniość określają równości: t = a + b 2, s = a b, a = t + s, b = t s. 2 Dowód. ( ) 2 ( a + b a b n = ab = 2 2 n = t 2 s 2 = (t + s)(t s). ) 2
Metoda faktoryzacji Fermata Algorytm Jeżeli n = ab i liczby a i b są bliskie siebie, to liczba s = (a b)/2 jest mała, a więc t jest niewiele większa od n. W takim przypadku możemy znaleźć liczby a i b, próbując kolejnych t, począwszy od [ n] + 1, aż znajdziemy taką wartość, dla której t 2 n jest kwadratem.
Przykład Rozłóżmy liczbę 200819 na czynniki pierwsze.
Przykład Rozłóżmy liczbę 200819 na czynniki pierwsze. Mamy t = [ 200819] + 1 = 449. Liczba 449 2 200819 = 782 nie jest pełnym kwadratem.
Przykład Rozłóżmy liczbę 200819 na czynniki pierwsze. Mamy t = [ 200819] + 1 = 449. Liczba 449 2 200819 = 782 nie jest pełnym kwadratem. Weźmy zatem t = 450. Wtedy 450 2 200819 = 1681 = 41 2.
Przykład Rozłóżmy liczbę 200819 na czynniki pierwsze. Mamy t = [ 200819] + 1 = 449. Liczba 449 2 200819 = 782 nie jest pełnym kwadratem. Weźmy zatem t = 450. Wtedy 450 2 200819 = 1681 = 41 2. Stąd 200819 = 450 2 41 2 = (450 + 41)(450 41) = 491 409.
Obecne klucze RSA Klucz RSA-768 o 232 cyfrach dziesiętnych (768 bitach) został złamany 12.12.2009 przez: Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen K. Lenstra, Emmanuel Thome, Pierrick Gaudry, Alexander Kruppa, Peter Montgomery, Joppe W. Bos, Dag Arne Osvik, Herman te Riele, Andrey Timofeev, oraz Paul Zimmermann. (źródło Wikipedia) RSA-768 = 12301866845301177551304949583849627207728535695953347921 97322452151726400507263657518745202199786469389956474942 77406384592519255732630345373154826850791702612214291346 16704292143116022212404792747377940806653514195974598569 02143413 RSA-768 = 33478071698956898786044169848212690817704794983713768568 91243138898288379387800228761471165253174308773781446799 9489 * 36746043666799590428244633799627952632279158164343087642 67603228381573966651127923337341714339681027009279873630 8917
RSA-1024 Klucz RSA-1024 posiada 309 cyfr dziesiętnych i 1024 bity. Klucze tego rozmiaru są obecnie stosowane w wielu algorytmach. RSA-1024 = 1350664108659952233496032162788059699388814756056670275 2448514385152651060485953383394028715057190944179820728 2164471551373680419703964191743046496589274256239341020 8643832021103729587257623585096431105640735015081875106 7659462920556368552947521350085287941637732853390610975 0544334999811150056977236890927563
Ryzyko ataku na RSA (1) Zbiór możliwych wiadomości nie może być mały i znany. Atak brute-force : Dla małego zbioru wiadomości, np: { ATAK, CZEKAJ, WYCOFAJ } możemy obliczyć wszystkie możliwe szyfrogramy i je porównać z przechwyconym.
Ryzyko ataku na RSA (2) Przypuśćmy, że dwóch użytkowników pewnego systemu używa kluczy publicznych (n, e 1 ) i (n, e 2 ). Niedoskonałość generatora kluczy spowodowała, że pary te mają ten sam moduł. Jeśli ta sama wiadomość zostanie wysłana do obu użytkowników to Cezary może ją odszyfrować pod warunkiem, że e 1 i e 2 są względnie pierwsze. Z tego, że NWD(e 1, e 2 ) = 1 wynika, że istnieją liczby całkowite x i y takie, że e 1 x + e 2 y = 1. Zatem jeśli Cezary zna m e 1 (mod n) i m e 2 (mod n), to obliczy (m e 1 ) x (m e 2 ) y (mod n) = m e 1x+e 2 y (mod n) = m.
Ryzyko ataku na RSA (3) Posiadamy nasz klucz publiczny (n, e). Opublikowaliśmy go na liście kluczy publicznych wraz z milionem innych kluczy publicznych innych osób. Istnieje hipotetyczne ryzyko, że nasze n nie będzie względnie pierwsze z jakimś innym n. Wtedy możemy ustalić rozkład n. Teoretycznie jest to możliwe, w praktyce przy starannej implementacji procedur losowych jest to niemożliwe.
Szyfr Pohliga - Hellmana W roku 1978 Pohlig i Hellman opublikowali (niemal w tym samym czasie co Rivest, Shamir i Adleman) sposób szyfrowania oparty na potęgowaniu w ciele skończonym. Wybieramy dużą liczbę pierwszą p. Obliczenia prowadzone są w ciele Z p. Funkcje szyfrująca i deszyfrująca są określone wzorami: C = P e (mod p) P = C d (mod p) gdzie d e 1 (mod ϕ(p)).
Szyfr Pohliga - Hellmana W roku 1978 Pohlig i Hellman opublikowali (niemal w tym samym czasie co Rivest, Shamir i Adleman) sposób szyfrowania oparty na potęgowaniu w ciele skończonym. Wybieramy dużą liczbę pierwszą p. Obliczenia prowadzone są w ciele Z p. Funkcje szyfrująca i deszyfrująca są określone wzorami: C = P e (mod p) P = C d (mod p) gdzie d e 1 (mod ϕ(p)). Dlaczego ten system nie jest systemem z kluczem publicznym?
Szyfr Pohliga - Hellmana W roku 1978 Pohlig i Hellman opublikowali (niemal w tym samym czasie co Rivest, Shamir i Adleman) sposób szyfrowania oparty na potęgowaniu w ciele skończonym. Wybieramy dużą liczbę pierwszą p. Obliczenia prowadzone są w ciele Z p. Funkcje szyfrująca i deszyfrująca są określone wzorami: C = P e (mod p) P = C d (mod p) gdzie d e 1 (mod ϕ(p)). Dlaczego ten system nie jest systemem z kluczem publicznym? Znajomość klucza szyfrującego (p, e), pozwala wyznaczyć ϕ(p) = p 1, a więc i wartość d. Zatem jest to klasyczny system szyfrowania z tajnymi kluczami: szyfrującym (p, e) i deszyfrującym (p, d).
Pytania i zadania 1. Za pomocą algorytmu faktoryzacji Fermata dokonaj rozkładu liczby 236851 na iloczyn liczb pierwszych. 2. Złam szyfr RSA, którego kluczem publicznym jest (n A, e A ) = (536813567, 3602561). Wykorzystaj komputer do wyznaczenia rozkładu liczby n A dowolną metodą. Rozszyfruj wiadomość BNBPPKZAVQZLBJ przy założeniu, że tekst jawny składa się 6-gramów, a szyfrogram z 7-gramów nad 26-literowym alfabetem angielskim. To zadanie pokazuje, że 29-bitowa liczba n A jest o wiele za mała.
Ciekawostka: szyfr cmentarny Szyfr cmentarny wygrawerowano na płycie grobowca na cmentarzu kościoła Świętej Trójcy w Nowym Jorku w 1794 roku. Klucz tego szyfru zadany jest za pomocą rysunków:
Koniec