Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Grzegorz Bobiński Uniwersytet Mikołaja Kopernika Toruń, 22.05.2010
Kodowanie a szyfrowanie kodowanie sposoby przesyłania danych tak, aby móc je odczytać mimo zakłóceń. szyfrowanie sposoby przesyłania danych tak, aby osoby postronne nie mogły ich odczytać, nawet w przypadku podsłuchania transmisji.
Kodowanie (teoria kodowania) nadawca dane odbiorca Cele: zakłócenia możliwość rozpoznania, że wystąpiły zakłócenia, możliwość odczytania błędnie przesłanych danych, bez konieczności ponownej transmisji.
Przykłady kodów bit kontroli parzystości PESEL ISBN IBAN kody Reeda Solomona stosowane w dyskach CD
Szyfrowanie (kryptografia) nadawca wiadomość odbiorca Cele: wróg podsłuchanie/zmiana wiadomości uniemożliwienie odczytania wiadomości mimo jej podsłuchania uniemożliwienie zmiany treści wiadomości weryfikacja tożsamości nadawcy
Konwencje dany jest zbiór P znaków używanych do zapisu tekstu jawnego (np. litery, pary liter,... ) dany jest zbiór C znaków używanych do zapisu tekstu zaszyfrowanego zwykle zakładamy, że dla pewnej liczby N w zbiorze P = {0, 1,..., N 1} = C Z N := {0, 1,..., N 1} mamy określone działania + i (modulo N)
Szyfr Cezara Ustalmy liczbę e Z N klucz szyfrujący. Rozważmy funkcję jest to funkcja szyfrująca. Funkcją deszyfrującą jest funkcja Z N k k + e Z N Z N k k e Z N liczba e jest też kluczem deszyfrującym.
Szyfr Cezara (c.d.) Szyfr Cezara jest szyfrem symetrycznym znajomość klucza szyfrującego pozwala odszyfrować wiadomość. Pojawia się problem dystrybucji kluczy. Rozwiązanie: szyfry asymetryczne znajmość funkcji szyfrującej nie wystarcza do efektywnego wyliczenia funkcji deszyfrującej.
Funkcja i twierdzenie Eulera ϕ(n) := #{k Z n : NWD(k, n) = 1}. Wiadomo, że jeśli p i q są różnymi liczbami pierwszymi, to ϕ(p) = p 1 i ϕ(q) = q 1 oraz ϕ(p q) = (p 1) (q 1). Twierdzenie (Euler) Jeśli n jest liczbą naturalną oraz NWD(a, n) = 1, to a ϕ(n) 1 (mod n).
Funkcja i twierdzenie Eulera (c.d) Niech p i q będą różnymi liczbami pierwszymi i n := p q. Znajomość liczb p i q jest równoważna znajomości wartości liczb n i ϕ(n). Istotnie, liczby p i q są rozwiązaniami równania x 2 (n ϕ(n) + 1) x + n = 0. Zatem przy założeniu, że problem faktoryzacji jest trudny znajomość liczby n nie wystarcza, aby łatwo znaleźć wartości ϕ(n).
Szyfr RSA klucz szyfrujący RSA = Rivest, Shamir, Adleman Ustalmy (duże i przypadkowe) liczby pierwsze p i q i niech N := p q. Wybierzmy (losowo) liczbę naturalną e taką, że NWD(e, ϕ(n)) = 1 (możemy założyć, że e < ϕ(n)). Parę (N, e) nazywamy kluczem szyfrującym funkcją szyfrującą jest funkcja Z N a a e mod N Z N. Uwaga Istnieją efektywne algorytmy potęgowania w zbiorze Z N.
Szyfr RSA klucz deszyfrujący Korzystając z rozszerzonego algorytmu Euklidesa znajdujemy liczbę naturalną d taką, że d e 1 (mod ϕ(n)). Parę (N, d) nazywamy kluczem deszyfrującym funkcją deszyfrującą jest funkcja Z N a a d mod N Z N. Uwaga Do znalezienia liczby d niezbędna jest znajomość liczby ϕ(n).
Szyfr RSA poprawność Lemat Jeśli d i e są liczbami całkowitymi takimi, że d e 1 (mod ϕ(n)), to dla każdej liczby całkowitej a. a d e a (mod N)
Szyfr RSA poprawność (dowód) Wystarczy pokazać, że a d e a (mod p) i a d e a (mod q). Udowodnimy pierwszą z kongruencji. Dowód drugiej jest analogiczny. Jeśli p a, to teza jest oczywista. Jeśli p a, to NWD(a, p) = 1, zatem na mocy Twierdzenia Eulera. a p 1 1 (mod N)
Szyfr RSA poprawność (dowód, c.d.) Ponieważ d e 1 (mod ϕ(n)) i ϕ(n) = (p 1) (q 1), więc liczba jest naturalna. Stąd k := d e 1 p 1 a d e = a a de 1 = a (a p 1 ) k a 1 k = a (mod N), co kończy dowód.
Szyfr RSA zalety Szyfr RSA jest szyfrem asymetrycznym znajomość klucza szyfrującego nie jest wystarczająca do łatwego znalezienia klucza deszyfrującego. Klucz szyfrujący może być jawny mówimy, że jest to klucz publiczny. W związku z tym nie ma problemu dystrybucji kluczy. Uwaga Klucz deszyfrujący musi być tajny mówimy, że jest to klucz prywatny.
Szyfr RSA weryfikacja autentyczności wiadomości Chcemy wysłać wiadomość m Z N tak, aby odbiorca był pewny, że treść wiadomości nie została zmieniona. Wysyłamy parę (m, m d mod N) liczbę m d nazywamy sygnaturą (podpisem) wiadomości m. Odbiorca otrzymuje parę (m, m ). Jeśli m e m (mod N), to odbiorca może przyjąć, że wiadomość jest autentyczna.
Inne pomysły ElGamal Jeśli p jest liczbą pierwszą, to grupa Z p = {1, 2,..., p 1} jest cykliczna, tzn. istnieje liczba α Z p taka, że Z p = {1 = α 0, α = α 1, α 2 mod p,..., α p 2 mod p}. Ustalamy (losowo) taką liczbę α, wybieramy (losowo) liczbę i definiujemy liczbę k {0, 1,..., p 2} β := α k mod p. Trójka (p, α, β) jest jawnym kluczem szyfrującym. Tajnym kluczem deszyfrującym jest czwórka (p, α, β, k).
ElGamal szyfrowanie Nadawca chce nam wysłać wiadomość m Z p. W tym celu wybiera (losowo) liczbę liczy l {0, 1,..., p 2}, c 1 := α l mod p oraz c 2 := m β l mod p, i wysyła parę (c 1, c 2 ).
ElGamal deszyfrowanie Otrzymujemy parę (c 1, c 2 ) i wyliczamy liczbę Istotnie, c 2 c (p 1) k 1 mod p. c 2 c (p 1) k 1 m β l (α l ) (p 1) k = m α k l+l (p 1) l k = m (α p 1 ) l m (mod p). Bezpieczeństwo systemu ElGamala opiera się na problemie logarytmu dyskretnego.