Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA
Transkrypt
Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA
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 O / odbiorca zakłócenia Cele: 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ść O / odbiorca podsłuchanie/zmiana wiadomości wróg Cele: 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 P = {0, 1, . . . , N − 1} = C dla pewnej liczby N w zbiorze ZN := {0, 1, . . . , N − 1} mamy określone działania + i ∗ (modulo N) Szyfr Cezara Ustalmy liczbę e ∈ ZN – klucz szyfrujący. Rozważmy funkcję ZN 3 k 7→ k + e ∈ ZN – jest to funkcja szyfrująca. Funkcją deszyfrującą jest funkcja ZN 3 k 7→ k − e ∈ ZN – 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 ∈ Zn : 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 ZN 3 a 7→ ae mod N ∈ ZN . Uwaga Istnieją „efektywne” algorytmy potęgowania w zbiorze ZN . 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 ZN 3 a 7→ ad mod N ∈ ZN . 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 ad·e ≡ a dla każdej liczby całkowitej a. (mod N) Szyfr RSA – poprawność (dowód) Wystarczy pokazać, że ad·e ≡ a (mod p) i ad·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 ap−1 ≡ 1 (mod N) na mocy Twierdzenia Eulera. Szyfr RSA – poprawność (dowód, c.d.) Ponieważ d ·e ≡1 (mod ϕ(N)) i ϕ(N) = (p − 1) · (q − 1), więc liczba k := d ·e−1 p−1 jest naturalna. Stąd ad·e = a · ade−1 = a · (ap−1 )k ≡ a · 1k = a co kończy dowód. (mod N), 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 ∈ ZN tak, aby odbiorca był pewny, że treść wiadomości nie została zmieniona. Wysyłamy parę (m, md mod N) – liczbę md nazywamy sygnaturą (podpisem) wiadomości m. Odbiorca otrzymuje parę (m0 , m00 ). Jeśli m00e ≡ m0 (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ę k ∈ {0, 1, . . . , p − 2} i definiujemy liczbę β := α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ę l ∈ {0, 1, . . . , p − 2}, liczy c1 := αl mod p i wysyła parę (c1 , c2 ). oraz c2 := m · β l mod p, ElGamal – deszyfrowanie Otrzymujemy parę (c1 , c2 ) i wyliczamy liczbę (p−1)−k c2 · c1 mod p. Istotnie, (p−1)−k c2 · c1 ≡ 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.