System RSA

advertisement
WST†P DO KRYPTOGRAFII
Grzegorz Szkibiel
Jesie« 2012/13
Spis tre±ci
1 Kryptograa a steganograa
5
1.1
Steganograa
. . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2
Szyfry przestawieniowe . . . . . . . . . . . . . . . . . . . . . .
8
1.3
Systemy kryptograczne
9
. . . . . . . . . . . . . . . . . . . . .
2 Klasyczne metody szyfrowania
12
2.1
Szyfry cykliczne . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2
Monoalfabetyczny szyfr Beauforta . . . . . . . . . . . . . . . .
13
2.3
Kody aniczne jednowymiarowe . . . . . . . . . . . . . . . . .
14
2.4
Permutacje alfabetu
. . . . . . . . . . . . . . . . . . . . . . .
15
2.5
Analiza cz¦sto±ci wyst¦powania liter . . . . . . . . . . . . . . .
16
2.6
Homofony i nulle
. . . . . . . . . . . . . . . . . . . . . . . . .
17
2.7
Jednostki dwuliterowe czyli digramy . . . . . . . . . . . . . . .
18
2.8
Szyfr Playfaira
. . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.9
Podwójny szyfr Playfaira . . . . . . . . . . . . . . . . . . . . .
21
2.10 szyfr Delastelle'a
. . . . . . . . . . . . . . . . . . . . . . . . .
22
2.11 Jednostki wieloliterowe . . . . . . . . . . . . . . . . . . . . . .
23
2.12 Szyfry polialfabetyczne . . . . . . . . . . . . . . . . . . . . . .
23
2.13 Ša«cuch szyfrów i DES . . . . . . . . . . . . . . . . . . . . . .
28
3 Maszyny szyfruj¡ce
32
3.1
Zasada dziaªania
. . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2
Jak zªamano szyfr ENIGMY . . . . . . . . . . . . . . . . . . .
36
4 Macierze szyfruj¡ce
41
N
4.1
Algebra liniowa modulo
. . . . . . . . . . . . . . . . . . . .
41
4.2
Szyfry Hill'a . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.3
Aniczne przeksztaªcenia szyfruj¡ce . . . . . . . . . . . . . . .
48
2
5 Pakowanie plecaka
50
5.1
Postawienie problemu . . . . . . . . . . . . . . . . . . . . . . .
50
5.2
Szybko rosn¡ce ci¡gi
. . . . . . . . . . . . . . . . . . . . . . .
51
oparty na problemie pakowania plecaka . . . . . . . . . . . . .
53
5.3
Kryptosystem
6 Systemy z publicznym kluczem
56
6.1
Numeryczna funkcja jednokierunkowa . . . . . . . . . . . . . .
57
6.2
Funkcje skrótu
. . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3
poufno±¢ i autentyczno±¢. . . . . . . . . . . . . . . . . . . . . .
58
6.4
Wymiana kluczy
60
6.5
2-1 funkcje jednokierunkowe
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
7 System RSA
60
62
7.1
Rozkªad liczb na czynniki
. . . . . . . . . . . . . . . . . . . .
62
7.2
Liczby wybrane losowo . . . . . . . . . . . . . . . . . . . . . .
63
7.3
Zasada dziaªania systemu RSA
. . . . . . . . . . . . . . . . .
64
7.4
Wpadka systemowa wspólny moduª . . . . . . . . . . . . . . .
65
7.5
Wpadka systemowa niski wykªadnik . . . . . . . . . . . . . . .
65
8 Teorio-liczbowe podstawy RSA
67
8.1
Systemy pozycyjne
. . . . . . . . . . . . . . . . . . . . . . . .
67
8.2
Iterowane podnoszenie do kwadratu . . . . . . . . . . . . . . .
69
8.3
Twierdzenie Eulera i
Maªe Twierdzenie Fermata . . . . . . . . . . . . . . . . . . . .
69
8.4
liczby pseudo-pierwsze
71
8.5
Chi«skie twierdzenie o resztach
8.6
Kongruencje stopnia 2
8.7
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
74
. . . . . . . . . . . . . . . . . . . . . .
77
Gra w orªa i reszk¦ przez telefon . . . . . . . . . . . . . . . . .
80
9 Zastosowania arytmetyki
modulo m do rozkªadu liczb
83
9.1
Wzory skróconego mno»enia . . . . . . . . . . . . . . . . . . .
9.2
Metoda
. . . . . . . . . . . . . . . . .
85
9.3
Metoda faktoryzacji Fermata . . . . . . . . . . . . . . . . . . .
87
9.4
Bazy rozkªadu . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
ρ
rozkªadu na czynniki
3
83
10 Logarytm dyskretny
92
10.1 Poj¦cie logarytm dyskretny
. . . . . . . . . . . . . . . . . . .
92
10.2 System DiegoHellmana
uzgadniania klucza
. . . . . . . . . . . . . . . . . . . . . . . .
10.3 System kryptograczny Masseya-Omury
93
. . . . . . . . . . . .
95
10.4 System ElGamala . . . . . . . . . . . . . . . . . . . . . . . . .
96
11 Protokoªy o zerowej wiedzy i przekazy nierozró»nialne
11.1 Kolorowanie mapy
11.2 Logarytm dyskretny
97
. . . . . . . . . . . . . . . . . . . . . . . .
97
. . . . . . . . . . . . . . . . . . . . . . .
99
11.3 Przekazy nierozró»nialne . . . . . . . . . . . . . . . . . . . . . 100
11.4 Dowód faktoryzacji . . . . . . . . . . . . . . . . . . . . . . . . 102
4
Rozdziaª 7
System RSA
Przy poszukiwaniu funkcji jednokierunkowej
f,
któr¡ chcemy zastosowa¢ w
systemie o kluczu publicznym, chcemy u»y¢ pomysªu wzgl¦dnie prostego do
−1
zastosowania. Z drugiej strony chcemy mie¢ pewno±¢, »e znalezienie f
nie
b¦dzie ªatwe.
Potrzebujemy wi¦c silnych dowodów empirycznych, których
mo»e dostarczy¢ nam historia poszukiwa« takiej funkcji.
7.1
Rozkªad liczb na czynniki
System RSA (Rivest Shamir Adleman), który tu przedstawimy, oparty
jest na problemie znalezienia rozkªadu liczby zªo»onej na czynniki pierwsze. Funkcj¡ jednokierunkow¡ jest tu funkcja okre±lona w zbiorze par liczb
pierwszych o warto±ciach w zbiorze liczb naturalnych. Na przykªad, pomno»enie dwóch dwu-cyfrowych liczb pierwszych, powiedzmy 23 i 47 nie powinno
sprawi¢ nam wi¦kszego problemu. Natomiast pytanie o rozkªad liczby 2047
(wiemy, »e jest ona iloczynem dwóch dwu-cyfrowych liczb pierwszych) jest
trudne.
Przypomnijmy, »e
funkcj¡ Eulera ϕ(n) nazywamy moc zbioru liczb dodat-
n = pq , gdzie p oraz q s¡
ϕ(n) = n+1−p−q
jest równowa»na znajomo±ci liczb p i q . Istotnie, je±li znamy n, p oraz q , bez
problemu mo»emy obliczy¢ n + 1 − p − q . Je»eli natomiast znamy n oraz
ϕ(n), to znamy te» n = pq oraz n + 1 − ϕ(n) = p + q i »eby obliczy¢ p oraz
q , rozwi¡zujemy w miar¦ prosty ukªad równa« stopnia drugiego.
W przypadku systemu RSA, kluczem jawnym jest (n, e), gdzie n jest ilo-
nich wzgl¦dnie pierwszych z
n.
Zauwa»my, »e je±li
liczbami pierwszymi, to znajomo±¢ warto±ci funkcji Eulera
62
e jest liczb¡ wzgl¦dnie pierwsz¡ z ϕ(n).
Kluczem tajnym jest natomiast (n, d), gdzie d jest liczb¡ odwrotn¡ do e modulo ϕ(n). Znajomo±¢ rozkªadu liczby n oraz liczba ϕ(n) nie s¡ potrzebne do
czynem dwóch liczb pierwszych, a
szyfrowania ani do deszyfrowania, wi¦c lepiej o nich zapomnie¢. Najpopularniejsz¡ metod¡ ªamania RSA jest wªa±nie znajdywanie rozkªadu liczby
7.2
n.
Liczby wybrane losowo
Nast¦pnym krokiem jest tu wygenerowanie klucza.
losowe liczby pierwsze
p
oraz
q
Potrzebna do tego s¡
i liczba losowa spomi¦dzy 1 i
φ(pq).
Gdy
mówimy o liczbie losowej, mamy na my±li liczb¦ wybran¡ przez pewien generator liczb losowych b¡d¹ pseudolosowych. Tym generatorem jest maszyna,
która generuje ci¡g liczb tak, aby nikt nie mógª przewidzie¢ jaka jest nast¦pna
liczba w ci¡gu, ani sam generator nie byª w stanie powtórzy¢ wygenerowanego wcze±niej ci¡gu.
Nie zale»y nam tutaj, aby wykorzysta¢ najwi¦ksze
znane liczby pierwsze, poniewa» te s¡ szybko znalezione przez postronnego
intruza. Aby otrzyma¢ losow¡ liczb¦ pierwsz¡, najpierw generujemy liczb¦
m
(im wi¦ksz¡ tym lepiej). Je±li oka»e si¦ ona liczb¡ parzyst¡ zast¡pimy j¡
m + 1. Nast¦pnie zastosujemy odpowiednie testy pierwszo±ci, aby zobaczy¢, czy m jest pierwsza. Je±li nie, zast¦pujemy j¡ przez m + 2, m + 4 itd.,
przez
a» znajdziemy w ko«cu liczb¦ pierwsz¡. Poniewa» prawdopodobie«stwo zna-
m wynosi 1/ ln m,
ln m liczb tramy na
lezienia liczby pierwszej w pobli»u losowo wybranej liczby
mo»emy si¦ spodziewa¢, »e po przetestowaniu okoªo
liczb¦ pierwsz¡.
pierwsza z
Podobnie szukamy liczby losowej
e,
która jest wzgl¦dnie
φ(n).
Wspomniane testy pierwszo±ci opieraj¡ si¦ najcz¦±ciej na
dzeniu Fermata
oraz na
7.1 Twierdzenie.
oraz a - p, to a
p−1
liczbach pseudopierwszych.
(Maªe Twierdzenie Fermata)
≡ 1 (mod p).
Maªym Twier-
Je±li p jest liczb¡ pierwsz¡
Liczb¡ pseudopierwsz¡ o podstawie a nazywamy tak¡ liczb¦ zªo»on¡ n,
an−1 ≡ 1 (mod n). W przeciwie«stwie do liczb pierwszych, liczby
dla której
pseudopierwsze s¡ znacznie trudniejsze do znalezienia.
Najmniejsz¡ liczb¡
pseudopierwsz¡ o podstawie 2 jest 341, a o podstawie 3, 91.
63
7.3
Zasada dziaªania systemu RSA
p oraz q , oraz liczb¦ losow¡ e,
ϕ(pq). Niech n = pq , e < φ(n) (mo»na wzi¡¢
d = e−1 (mod ϕ(n)). Kluczem szyfruj¡cym jest
Ka»dy u»ytkownik wybiera dwie liczby pierwsze
która jest wzgl¦dnie pierwsza z
liczb¦ e modulo φ(n)) oraz
KE = (n, e). Mo»na go poda¢ do publicznej wiadomo±ci. Natomiast kluczem rozszyfrowuj¡cym jest KD = (n, d). Ten klucz lepiej jest zachowa¢ w
tajemnicy tak jak liczby p, q oraz ϕ(n). Przeksztaªceniem szyfruj¡cym jest
e
funkcja f : Zn → Zn okre±lona wzorem f (P ) ≡ P (mod n). Przeksztaª−1
ceniem deszyfruj¡cym jest funkcja f
odwrotna do f i okre±lona wzorem
−1
d
f (C) ≡ C (mod n).
Pozostaje jeszcze wyja±ni¢, jakie jednostki tekstu b¦dziemy u»ywa¢. Chodzi tu przede wszystkim o to, aby ka»dy u»ytkownik systemu u»ywaª tych
samych jednostek.
Zaªó»my wi¦c, »e teksty jawne i zaszyfrowane b¦d¡ za-
pisane za pomoc¡ tego samego alfabetu licz¡cego N symboli. Wybieramy
k
l
liczby k i l tak, aby N < n < N . Jako jednostki tekstu jawnego we¹miemy
bloki po
k
liter, które b¦dziemy traktowali jako liczby
o podstawie
N.
k cyfrowe
w systemie
Podobnie, jednostkami zaszyfrowanymi b¦d¡ bloki po
l
liter.
Zatem ka»dy blok tekstu zaszyfrowanego ma przypisan¡ warto±¢ liczbow¡
l
mi¦dzy 0 i N − 1.
7.2 Przykªad.
Przyjmiemy
N = 26, k = 3
i
l = 4.
Zatem jednostki
tekstu jawnego s¡ trigramami, a jednostki tekstu zaszyfrowanego tetragramami.
Chcemy przesªa¢ wiadomo±¢ TAK do u»ytkownika
klucz szyfruj¡cy
A,
który ma
(46927, 39423).
W tym celu szukamy najpierw odpowied2
nika liczbowego sªowa TAK. Jest to 19 · 26 + 0 · 26 + 10 = 12854. Na39423
st¦pnie obliczamy 12854
mod 46927 otrzymuj¡c w wyniku 14251 =
3
2
0 · 26 + 21 · 26 + 2 · 26 + 3, a to daje nam kryptotekst
Tym samym
kluczem zaszyfrowano inny tekst uzyskuj¡c kryptogram
avbc.
bc.
Czy jeste± w
stanie odtworzy¢ tekst jawny?
Adresat ma swój klucz rozszyfrowuj¡cy (46927, 26767), który pozwala mu
26767
obliczy¢ 14251
mod 46927 = 12854, a to mu daje sªowo TAK.
U»ytkownik systemu RSA z powy»szego przykªadu wygenerowaª swoje
klucze u»ywaj¡c liczb pierwszych 281 i 167. Oczywi±cie u»yli±my tutaj bardziej ,,wyobra»alne liczby ni» to si¦ zwykle stosuje. Normalnie, liczby k i l s¡
k
tak dobrane, aby N miaªo nie mniej ni» 200 cyfr dziesi¦tnych. ›eby podnie±¢
du»¡ liczb¦ do du»ej pot¦gi stosujemy algorytm iterowanego podnoszenia do
3
kwadratu. Zajmuje on, O(log n) operacji na bitach.
64
7.4
Wpadka systemowa wspólny moduª
Przypu±¢my, »e dwóch u»ytkowników u»ywa tego samego moduªu
maj¡ oni klucze (publiczne) postaci
(n, e1 )
oraz
(n, e2 ).
n,
tzn.
Je±li ta sama wia-
domo±¢ jest wysªana do obu u»ytkowników, to mo»na j¡ rozszyfrowa¢ bez
znajomo±ci klucza rozszyfruj¡cego pod warunkiem, »e e1 oraz e2 s¡ wzgl¦de
e
nie pierwsze. Dokªadnie, je±li znamy m 1 modn oraz m 2 modn oraz zachodzi
NWD
(e1 , e2 ) = 1,
to istniej¡ liczby caªkowite
x, y
takie, »e
e1 x + e2 y = 1.
Zatem
(me1 )x (me2 )y = me1 x+e2 y modn = m.
Dla przykªadu przypu±¢my, »e
n = 5038301, e1 = 787, e2 = 6785.
jawny dzielimy tu na trigramy, które przechodz¡ w 5gramy.
Tekst
Zaªó»my, »e
przechwycili±my teksty HOTIT oraz EOXNS. U»ywaj¡c algorytmu Euklidesa
dostajemy
888e1 − 103e2 = 1.
przechwycone 5gramy odpowiadaj¡ liczbom
3457967 oraz 2089872. Obliczamy zatem
3457967888 · 2089872−103 mod 5038301
= 4458054 · 999321 mod 5038301
= 11502,
a to daje wiadomo±¢ jawn¡
7.5
Wpadka systemowa niski wykªadnik
Zaªó»my, »e
k
u»ytkowników posiada w kluczu ten sam wykªadnik, który
jest mniejszy od
gdzie
rak.
e < k.
k,
tj.
ich klucze publiczne to
Przypu±¢my, »e do wszystkich
k
(n1 , e), n2 , e), . . . , (nk , e),
u»ytkowników zostaªa wysªana
ta sama wiadomo±¢ m. Zatem do itego u»ytkownika dociera wiadomo±¢
yi = me mod ni . Poniewa» m < ni oraz e < k , wi¦c me < n1 n2 . . . nk .
U»ywaj¡c chi«skiego twierdzenia o resztach rozwi¡zujemy ukªad kongruencji
Y ≡ yi
(mod ni )
gdzie
1 ≤ i ≤ k.
Na podstawie tego» twierdzenia istnieje dokªadnie jedno rozwi¡zanie modulo
n1 n2 . . . nk
takiego ukªadu kongruencji je±li liczby n1 , n2 , . . . , nk s¡ wzgl¦dnie
e
pierwsze. W tym wypadku mamy m = Y i »eby obliczy¢ m wystarczy wzi¡¢
zwykªy pierwiastek stopnia
e
z
Y.
65
Rozwa»my dla przykªadu
e=3
oraz
n1 = 2881, n2 = 2867, n3 = 3127.
Szyfrujemy tu digramy tekstu, a tekst zaszyfrowany skªada si¦ z trigramów.
Przypu±¢my, »e przechwycili±my wiadomo±ci BZG, BGX oraz CDZ wysªane
do naszych trzech u»ytkowników.
Wiadomo±ciom tym odpowiadaj¡ liczby
1332, 855 oraz 1455. Wiemy te», »e wszystkie trzy kryptogramy to jest ta
sama wiadomo±¢ jawna.
U»ywaj¡c chi«skiego twierdzenia o resztach, ro-
zwi¡zujemy ukªad kongruencji
Y ≡ 1332
(mod 2881) Y ≡ 855
otrzymuj¡c
Y = m3 = 211708736.
(mod 2867) Y ≡ 1455
(mod 3127)
Pierwiastek sze±cienny z tej ostatniej
liczby wynosi 596, czyli tekstem jawnym jest
66
wy.
Download