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.