m kn n 0k − ∑ =
m kn n 0k − ∑ =
m kn n 0k − ∑ =
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Wstęp<br />
RACHUNEK PRAWDOPODOBIEŃSTWA<br />
A PARADOKS DNIA URODZIN<br />
Dla dodatnich liczb całkowitych m i n, spełniających warunek m ≥ n, liczba m (n) jest określona<br />
następująco:<br />
m (n) = m(m - 1)(m - 2) ... (m - n + 1) = m!/( m - n)!.<br />
Niech m i n będą nieujemnymi liczbami całkowitymi spełniającymi warunek m ≥ n. Liczbą<br />
m<br />
Stirlinga drugiego rodzaju, oznaczaną jako , jest<br />
⎩⎨⎧<br />
n ⎭⎬⎫<br />
n<br />
n<strong>−</strong>k<br />
m 1<br />
⎛ n⎞<br />
= <strong>∑</strong>( <strong>−</strong> 1) k<br />
m<br />
,<br />
⎩⎨⎧<br />
n ⎭⎬⎫<br />
n!<br />
k<br />
k = 0<br />
⎜⎝<br />
⎟⎠<br />
0<br />
przy czym wyjątkiem jest = 1.<br />
⎩⎨⎧<br />
0⎭⎬⎫<br />
m<br />
Symbol określa liczbę sposobów podziału zbioru m obiektów na n niepustych podzbiorów.<br />
⎩⎨⎧<br />
n ⎭⎬⎫<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.86
Klasyczny problem zajętości<br />
Urna zawiera m kul ponumerowanych od 1 do m. ZałóŜmy, Ŝe z urny jest losowanych<br />
pojedynczo n kul, po wylosowaniu kule są zwracane do urny, zaś ich numery są zapisywane.<br />
Prawdopodobieństwo zdarzenia polegającego na tym, Ŝe zostało wylosowanych dokładnie t<br />
róŜnych kul, wynosi<br />
n m<br />
( t )<br />
P1<br />
( m,n,t ) = , 1 ≤ t ≤ n.<br />
⎩⎨⎧<br />
t ⎭⎬⎫<br />
m<br />
n<br />
Paradoks dnia urodzin jest szczególnym przypadkiem klasycznego problemu zajętości.<br />
Paradoks dnia urodzin<br />
Urna zawiera m kul ponumerowanych od 1 do m. ZałóŜmy, Ŝe z urny losuje się pojedynczo n<br />
kul, po wylosowaniu kule są zwracane do urny, zaś ich numery są zapisywane.<br />
(i) Prawdopodobieństwo zdarzenia polegającego na tym, Ŝe wystąpiła co najmniej jedna<br />
koincydencja (tzn. kula została wylosowana co najmniej dwukrotnie), wynosi<br />
P<br />
2<br />
( n )<br />
m<br />
( m,n ) = 1 <strong>−</strong> P1<br />
( m,n,n ) = 1 <strong>−</strong> , 1 ≤ n ≤ m. (*)<br />
m<br />
n<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.87
Gdy n = O( m ) i m → ∞, wtedy<br />
⎛ n ( n <strong>−</strong> 1)<br />
⎛ 1 ⎞⎞<br />
P 2 ( m,<br />
n)<br />
→ 1 <strong>−</strong> exp <strong>−</strong> + O ≈ 1 <strong>−</strong><br />
⎜⎝ 2m<br />
⎜⎝ m<br />
⎟⎠<br />
⎟⎠<br />
exp<br />
⎛<br />
⎜⎜ <strong>−</strong><br />
⎝<br />
2<br />
n ⎞<br />
2 m ⎟⎟ .<br />
⎠<br />
(ii) Gdy m → ∞, wtedy oczekiwana liczba losowań przed wystąpieniem koincydencji wynosi<br />
π m .<br />
2<br />
Wyjaśnienie, dlaczego rozkład prawdopodobieństwa (*) jest nazywany niespodzianką dnia<br />
urodzin lub paradoksem dnia urodzin, jest następujące:<br />
Prawdopodobieństwo tego, Ŝe co najmniej 2 osoby, spośród 23 znajdujących się w jednym<br />
pomieszczeniu, obchodzą urodziny w tym samym dniu roku, wynosi P 2 (365,23) ≈ 0,507 i jest<br />
zaskakująco duŜe. Wielkość P 2 (365, n) takŜe gwałtownie wzrasta ze wzrostem n; na przykład<br />
P 2 (365,30) ≈ 0,706.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.88
Inne ujęcie paradoksu dnia urodzin<br />
ZałóŜmy, Ŝe prawdopodobieństwo urodzenia się w określonym dniu roku kalendarzowego<br />
kaŜdego z członków populacji liczącej k osobników ma rozkład jednorodny, tzn.:<br />
gdzie:<br />
P( u i = d ) = 1 / 365<br />
u i - data urodzin osobnika i-tego ( i = 1, 2, ..., k );<br />
d - numer kolejnego dnia w roku ( d = 1, 2, ..., 365 ).<br />
Spróbujmy oszacować oczekiwaną liczbę par osobników w tej populacji, obchodzących<br />
urodziny w tym samym dniu roku. JeŜeli uznamy, Ŝe fakty narodzin kaŜdego z osobników są<br />
zdarzeniami niezaleŜnymi, to wówczas dla dowolnej pary osobników (i, j) prawdopodobieństwo<br />
tego, iŜ urodzili się w tym samym, określonym dniu d wynosi:<br />
P( u i = d , u j = d ) = P( u i = d ) * P ( u j = d ) = 1 / (365) 2<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.89
W skali całego roku prawdopodobieństwo to wynosi:<br />
365<br />
P( u i = u j ) = Σ P ( u i = d, u j = d)) = 365 / (365) 2 = 1 / 365<br />
d=1<br />
Definiując zmienną losową :<br />
x ij = 1 , gdy osobnicy i oraz j obchodzą urodziny w tym samym dniu.<br />
oraz<br />
x ij = 0 w przypadku przeciwnym,<br />
moŜna określić wartość oczekiwaną tej zmiennej w przypadku konkretnej pary:<br />
E( x ij ) = 1 * ( 1 / 365 ) + 0 * ( 1 - 1 / 365 ) = 1 / 365<br />
oraz wartość oczekiwaną liczby par osobników “wspólnie świętujących” w całej populacji<br />
(sumowanie obejmuje wszystkie moŜliwe pary):<br />
k i 1 ⎛ k ⎞ k( k <strong>−</strong> 1 )<br />
<strong>∑</strong> <strong>∑</strong> <strong>−</strong><br />
E( xij<br />
) = ( 1 / 365 ) =<br />
2<br />
2* 365<br />
i=<br />
2 j=<br />
1<br />
⎜⎝<br />
⎟⎠<br />
JuŜ dla 28 osobników wartość ta wynosi ok. 1,0356 (a więc powinna się znaleźć w tej populacji<br />
przynajmniej jedna taka para).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.90
Paradoks dnia urodzin a funkcja skrótu<br />
Poszukiwanie pary wiadomości dających tą samą wartość n-bitowej funkcji skrótu<br />
(poszukiwanie kolizji) równowaŜne jest zadaniu znalezienia pary osobników urodzonych w tym<br />
samym dniu roku liczącego 2n dni..<br />
Oczekiwana liczba takich par, w sytuacji gdy “przebadano” k “kandydatur” wynosi:<br />
gdzie: p = 2n<br />
k<br />
<strong>∑</strong><br />
i=<br />
2<br />
i 1<br />
<strong>∑</strong> <strong>−</strong><br />
E(<br />
j=<br />
1<br />
xij<br />
) =<br />
⎛ k ⎞<br />
( 1 / ⎜⎝ 2<br />
⎟⎠<br />
p ) =<br />
k( k <strong>−</strong> 1 )<br />
2* p<br />
JeŜeli wartość funkcji skrótu jest ciągiem n-bitowym, wówczas znalezienie metodą ataku<br />
brutalnego wiadomości, która po skróceniu dałaby taką samą wartość skrótu, jak wartość dana,<br />
wymagałoby skracania 2 n losowo wybranych wiadomości.<br />
Znalezienie pary wiadomości dających taki sam skrót wymagałoby jedynie skracania 20.5n<br />
losowo wybranych wiadomości. Korzyść jest ewidentna. Np.: jeśli n = 16, wówczas<br />
odpowiednie ilości koniecznych operacji wynoszą : 65536 i 256.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.91
Atak na podpis cyfrowy wykorzystujący paradoks dnia urodzin<br />
Podpis cyfrowy dla wiadomości m:<br />
s = D d ( h ( m ) )<br />
Procedura ataku (n – długość wartości funkcji skrótu w bitach):<br />
1. Wygenerować 2 n/2 „fałszywych wiadomości” m i ( i = 1, 2, ..., 2 n/2 );<br />
2. Wygenerować losowo 2 n/2 „fałszywych podpisów” s i ( i = 1, 2, ..., 2 n/2 );<br />
3. Utworzyć listę E e ( s i ) oraz listę h ( m i );<br />
4. ZnaleŜć parę ( j, k ) taką, Ŝe E e ( s j ) = h ( m k ).<br />
Propozycja zapobiegania atakowi (J.Patarin)<br />
Wykorzystać dwie róŜne funkcje skrótu h 1 i h 2 :<br />
s = D d ( h 1 ( m ) + D d ( h 2 ( m ) + D d ( h 1 ( m ))))<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.92
TEORIA INFORMACJI A KRYPTOLOGIA<br />
Niech X będzie zmienną losową przybierającą wartości ze skończonego zbioru { x 1 , x 2 , ..., x n } ,<br />
przy czym rozkład prawdopodobieństwa tej zmiennej określony będzie przez zbiór wartości:<br />
p i = P ( X = x i ) (i = 1, 2, ..., n )<br />
a ponadto:<br />
n<br />
Σ p i = 1<br />
i =1<br />
Rozkład ten, o ile nie będzie to wiodło do nieporozumień, będzie oznaczany jako p ( X ).<br />
Entropia jest miarą ilości informacji pozyskanej w wyniku obserwacji zmiennej losowej X:<br />
n<br />
Η(X) = <strong>−</strong> Σ p i log 2<br />
p i [w bitach]<br />
i=1<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.93
Z punktu widzenia kryptologii entropia wiadomości mierzy jej nieokreśloność, podając liczbę<br />
bitów informacji, jaka musi być pozyskana w celu jej ujawnienia, jeŜeli wiadomość ta została<br />
ukryta w postaci zaszyfrowanej.<br />
KaŜda dodatkowo pozyskana informacja zmniejsza entropię.<br />
Właściwości entropii:<br />
Dla zmiennej losowej mogącej przybierać n róŜnych wartości<br />
• 0 ≤ H ( X ) ≤ log 2<br />
n<br />
• H ( X ) = 0 ⇔ p i = 1 dla pewnego i oraz p j = 0 dla wszystkich j ≠ i<br />
• H ( X ) = log 2<br />
n ⇔ p i = 1/n dla kaŜdego i<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.94
Entropia łączna X i Y :<br />
H ( X, Y ) = - Σ P ( X = x, Y = y) log 2<br />
(P ( X = x, Y = y))<br />
x, y<br />
H ( X, Y ) ≤ H ( X ) + H ( Y )<br />
H ( X, Y ) = H ( X ) + H ( Y ) ⇔ X i Y są niezaleŜne<br />
Entropia warunkowa X dla Y = y:<br />
H ( X | Y = y ) = - Σ P ( X = x | Y = y ) log 2<br />
(P ( X = x | Y = y ))<br />
x<br />
Entropia warunkowa X względem Y (equivocation):<br />
HY ( X ) = H ( X | Y ) = - Σ P ( Y = y ) H ( X | Y = y )<br />
y<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.95
Wartość HY ( X ) jest miarą nieokreśloności X po pozyskaniu obserwacji Y.<br />
• HY ( X ) ≥ 0 oraz HX ( X ) = 0<br />
• H ( X, Y ) = H ( X ) + HX ( Y ) = H ( Y ) + HY ( X )<br />
• HY ( X ) ≤ H ( X )<br />
• HY ( X ) = H ( X ) ⇔ X i Y są niezaleŜne<br />
Informacja wzajemna (transinformation) zmiennych losowych X i Y:<br />
I ( X ; Y ) = H ( X ) - HY ( X )<br />
jest interpretowana jako ilość informacji o X ujawniana na podstawie znajomości Y.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.96
Analogicznie - informacja wzajemna zmiennej losowej X i pary zmiennych losowych Y, Z:<br />
I ( X ; Y , Z ) = H ( X ) - HY,Z ( X )<br />
• I ( X ; Y ) ≥ 0<br />
• I ( X ; Y ) = 0 ⇔ X i Y są niezaleŜne<br />
• I ( X ; Y ) = I ( Y ; X )<br />
Warunkowa informacja wzajemna pary X i Y przy znanym Z:<br />
IZ ( X ; Y ) = HZ ( X ) - HY,Z ( X )<br />
jest interpretowana jako ilość informacji o X ujawniana na podstawie znajomości Y przy<br />
załoŜeniu, Ŝe juŜ zaobserwowano Z.<br />
• I ( X ; Y , Z ) = I ( X ; Y ) + IY ( X ; Z )<br />
• IZ ( X ; Y ) = IZ ( Y ; X )<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.97
Niech będą dane:<br />
• M - przestrzeń wiadomości jawnych M z rozkładem prawdopodobieństwa a priori p ( M )<br />
• C - przestrzeń wiadomości zaszyfrowanych C z rozkładem prawdopodobieństwa p ( C )<br />
• K - przestrzeń kluczy K wybieranych zgodnie z rozkładem prawdopodobieństwa p ( K )<br />
Warunek poufności doskonałej : pC ( M ) = p ( M )<br />
Interpretacja : przechwycenie zaszyfrowanej wiadomości nie daje Ŝadnych przesłanek do<br />
określenia wiadomości jawnej.<br />
Prawdopodobieństwo odbioru wiadomości zaszyfrowanej C pod warunkiem wysłania<br />
wiadomości jawnej M :<br />
pM ( C ) = Σ p ( K )<br />
K<br />
Ek(M)=C<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.98
Warunek konieczny i wystarczający poufności doskonałej :<br />
∀ C ∈ C ∀ M ∈ M : pM(C) = p(C)<br />
Interpretacja : prawdopodobieństwo odebrania określonego kryptogramu C przy załoŜeniu, Ŝe<br />
wysłano wiadomość jawną M zaszyfrowaną pewnym kluczem, jest takie samo, jak<br />
prawdopodobieństwo odebrania C przy wysłaniu jakiegokolwiej innej wiadomości jawnej M'<br />
zaszyfrowanej dowolnym innym kluczem.<br />
Wniosek:<br />
Poufność doskonała wymaga, aby liczba kluczy była równa co najmniej liczbie wiadomości.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.99
Niech dla ustalonego "języka" przestrzeń wiadomości jawnych zawiera komunikaty o długości<br />
N znaków, przy czym do ich przedstawienia wykorzystywany jest alfabet zawierający L<br />
znaków.<br />
Wskaźnik języka (rate of the language) - r - to ilość informacji (entropia) przypadająca na jeden<br />
znak wiadomości jawnej :<br />
r = H(M)/N<br />
Bezwzględny wskaźnik języka (absolute rate of the language) - R - to maksymalna liczba bitów<br />
informacji, która mogłaby być zakodowana w jednym znaku, przy załoŜeniu, Ŝe wszystkie<br />
moŜliwe sekwencje znaków są jednakowo prawdopodobne (maksymalna entropia dla<br />
pojedynczego znaku) :<br />
R = log 2<br />
L<br />
Nadmiarowość (redundancy) języka określana jest jako :<br />
D = R - r<br />
(czasem wyraŜana takŜe w procentach jako D / R ).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.100
Przykład A:<br />
Metodą szacowania entropii N-gramów dla rosnących wartości N określono dla literackiego<br />
języka angielskiego (26 liter) metodą ekstrapolacji (wykorzystując reprezentatywne<br />
wieloznakowe próbki tekstów) wartość wskaźnika języka jako :<br />
1.0 ≤ r ≤ 1.5 bitów na literę<br />
Nadmiarowość :<br />
R = log226 ≈ 4.7 bitów na literę<br />
3.2 ≤ D ≤ 3.7 (68 % - 79 %)<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.101
Przykład B:<br />
Wiadomości jawne są ciągami cyfr 0 - 9, zaś histogramy poszczególnych cyfr, digramów,<br />
trigramów, itd. są zbiorami identycznych wartości.<br />
Entropia dla ciągów N-elementowych :<br />
H(M) = 10N(1 / 10N)log2(10N) = log2(10N) = N log2 10<br />
r = log210 ≈ 3.32 bitów na cyfrę<br />
Nadmiarowość :<br />
R = log210 ≈ 3.32 bitów na cyfrę<br />
D = 0 (0 %)<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.102
Jeśli pC(K) jest prawdopodobieństwem warunkowym, Ŝe uŜyto klucza K, pod warunkiem,<br />
Ŝe przechwycono wiadomość tajną C, to poufność klucza moŜna wyrazić przez entropię<br />
warunkową klucza (Shannon) :<br />
ΗC(Κ) = Σ p(C) Σ pC(K) log2 (1 / pC(K))<br />
C K<br />
JeŜeli ΗC(Κ) = 0, 0 to brak nieokreśloności i szyfr jest teoretycznie przełamywalny,<br />
pod warunkiem zgromadzenia wystarczających do tego celu zasobów. Ze wzrostem długości N<br />
tekstu zaszyfrowanego zmniejsza się entropia warunkowa klucza.<br />
Długość krytyczna (unicity distance) jest to najmniejsza wartość N, dla której ΗC(Κ) = 0 ,<br />
a więc najmniejsza ilość zaszyfrowanego tekstu niezbędna do jednoznacznego określenia klucza<br />
szyfrowania K. Dla szyfru bezwarunkowo bezpiecznego ΗC(Κ)<br />
nigdy nie osiąga wartości<br />
zerowej.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.103
W większości przypadków nie jest moŜliwe analityczne wyznaczenie wartości długości<br />
krytycznej. Niekiedy moŜna ją jednak oszacować. Np. dla szyfru endomorficznego, w którym<br />
wszystkie wiadomości jawne i tajne mają długość N i są wyraŜane symbolami tego samego<br />
alfabetu, zawierającego L znaków, Hellman oszacował długość krytyczną szyfru jako :<br />
N = H(K) / D<br />
Przykład C:<br />
Szyfrem podstawieniowym Cezara zaszyfrowano tekst angielski, składający się jedynie z<br />
duŜych liter (alfabet przestrzeni wiadomości jawnych i tajnych zawiera 26 znaków). Kluczem<br />
szyfrowania jest wielkość przesunięcia (od 0 do 25).<br />
Nadmiarowość języka angielskiego : D = 3.2<br />
Entropia przestrzeni kluczy : H(K) = log226 = 4.7<br />
Długość krytyczna : N = (4.7) / (3.2) ≈ 1.5 znaku (PARADOKS ???!!!)<br />
Przykład D:<br />
Dla systemu kryptograficznego z przykładu B nadmiarowość wynosi D = 0, a zatem teoretycznie<br />
nie jest moŜliwe określenie liczby znaków niezbędnych do jednoznacznego określenia klucza.<br />
Ciekawostka:<br />
Dla algorytmu DES (długość bloku 64 bity, długość klucza 56 bitów) długość krytyczna<br />
wynosi 17.5 bajta (< 3 bloków kryptogramu !!!).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.104
DYGRESJA HISTORYCZNA<br />
Pracownicy CESG (Communication Electronic Security Group – brytyjska agencja<br />
wywiadowcza) odkryli ideę kryptografii klucza publicznego na kilka lat przed ich oficjalnym<br />
odkryciem (ujawniono to w grudniu 1997).<br />
Odkrycie nie obejmowało zastosowania kryptografii asymetrycznej do realizacji podpisów<br />
cyfrowych.<br />
WciąŜ nie wiadomo, czy i kiedy kryptografia klucza publicznego została odkryta przez NSA<br />
(National Security Agency).<br />
Ogólna koncepcja kryptografii klucza jawnego (publicznego)<br />
James H. Ellis<br />
styczeń 1970<br />
Whitfield<br />
Diffie,<br />
Martin<br />
Hellmann<br />
listopad 1976<br />
“The possibility of Secure Non-Secret<br />
Digital Encryption”<br />
Dowód moŜliwości konstrukcji systemu<br />
nie-tajnej kryptografii<br />
„New Directions in Cryptography”<br />
Schemat uzgadniania kluczy D-H<br />
Koncepcja podpisu cyfrowego<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.105
Asymetryczny szyfr wykładniczy (moduł iloczynem dwóch róŜnych liczb pierwszych)<br />
Ron Rivest,<br />
Clifford Cocks<br />
Adi Shamir,<br />
Leonard Adleman<br />
listopad 1973<br />
styczeń 1978<br />
C = M N mod N<br />
N = PQ (P,Q – liczby pierwsze)<br />
Deszyfrowanie zawsze wymaga zastosowania CRT<br />
PP' = 1 (mod Q-1)<br />
QQ' = 1 (mod P-1)<br />
M = C P' (mod Q)<br />
M = C Q' (mod P)<br />
C = M e mod N<br />
N = PQ (P,Q – liczby pierwsze)<br />
M = C d mod N<br />
de = 1 (mod (P-1)(Q-1))<br />
Deszyfrowanie z zastosowaniem CRT<br />
jako rzadko stosowana opcja<br />
Schemat uzgadniania kluczy Diffie’go- Hellmana<br />
Malcolm Williamson<br />
1974<br />
Whitfield Diffie,<br />
Martin Hellmann,<br />
Ralph Merkle<br />
czerwiec 1976<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.106
ASYMETRYCZNE SZYFRY WYKŁADNICZE<br />
W systemach klucza publicznego opartych na potęgowaniu wiadomość szyfrowana<br />
przekształcana jest na bloki interpretowane jako pewne liczby nieujemne z zakresu<br />
ograniczonego jednym z parametrów przekształcenia, czyli elementy pierścienia Z n :<br />
C = M e mod n , M = C d mod n, M ∈ Z n , C ∈ Z n<br />
Parametr n nosi nazwę modułu przekształcenia szyfrującego, zaś parametry e i d są<br />
kluczami przekształcenia (jeden z nich to klucz prywatny, drugi - klucz publiczny).<br />
Klucze przekształcenia powinny być dobrane tak, aby spełniona była zaleŜność :<br />
ed mod Φ(n) = 1 , gdzie Φ(n) jest funkcją Eulera.<br />
Wtedy na podstawie twierdzenia Fermata - Eulera (k ∈Z):<br />
C d mod n = (M e mod n) d mod n = M ed mod n = M kΦ (n) + 1 mod n =<br />
= M M kΦ(n) mod n = M (M kΦ(n) mod n) mod n = M ((M Φ(n) mod n)k mod n)mod n =<br />
= M (1 k mod n) mod n = M mod n = M,<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.107
a zatem wymienione na wstępie przekształcenia wykładnicze są parą przekształceń<br />
odwrotnych (formalnie dzieje się tak dla M i C względnie pierwszych z n, ale dowód dla<br />
elementów nie naleŜących do Z* n jest podobny) . Ponadto, dzięki symetrii :<br />
(M d mod n) e mod n = M<br />
Zasada wyznaczania kluczy :<br />
• określa się moduł przekształcenia n;<br />
• wybiera się liczbę d względnie pierwszą z Φ(n);<br />
• wyznacza się e jako element odwrotny do d (mod Φ(n))<br />
e = d -1 mod Φ(n).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.108
Szyfr RSA (R.Rivest , A.Shamir, L.Adleman - 1978 r.)<br />
W tym szyfrze wykładniczym jako moduł przekształcenia szyfrującego przyjmuje się<br />
liczbę n będącą iloczynem dwóch duŜych liczb pierwszych p i q (n = pq).<br />
W takim przypadku funkcja Eulera : Φ(n) = (p ( - 1)( q - 1).<br />
Problem rozkładu duŜych liczb na czynniki pierwsze nie jest zagadnieniem trywialnym,<br />
więc ujawnienie modułu przekształcenia n oraz jednego z kluczy (np. e, który w ten sposób<br />
staje się kluczem publicznym) nie prowadzi do prostego przełamania systemu.<br />
Faktoryzacja modułu przekształcenia n = pq umoŜliwia przełamanie systemu RSA, gdyŜ<br />
wtedy:<br />
- znana jest liczba p , a zatem takŜe znana jest Φ (p) = p - 1;<br />
- znana jest liczba q , a zatem takŜe znana jest Φ (q) = q - 1;<br />
- znany jest klucz publiczny e;<br />
- moŜna obliczyć Φ (n) = (p ( - 1)( q - 1);<br />
oraz<br />
- moŜna obliczyć klucz prywatny d = e -1 mod Φ(n),<br />
np. za pomocą rozszerzonego algorytmu Euklidesa.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.109
Uwaga 1:<br />
Podobnie, jak w przypadku szyfru Pohliga-Hellmana, przy ataku tekstem jawnym<br />
kryptoanalityk mógłby obliczyć :<br />
d = log C M mod n<br />
pod warunkiem, Ŝe „opanowałby” umiejętność obliczania logarytmu dyskretnego w<br />
dowolnej podgrupie cyklicznej grupy Z* n .<br />
Uwaga 2:<br />
W istocie, ze względu na to, Ŝe (p - 1) i (q - 1) mają co najmniej jeden wspólny czynnik = 2,<br />
związek między wykładnikiem prywatnym i publicznym określa zaleŜność:<br />
d = e -1 mod λ(n),<br />
gdzie:<br />
λ(n) = lcm((p - 1), (q - 1)) – funkcja Carmichaela<br />
zaś lcm – najmniejsza wspólna wielokrotność.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.110
Uwaga 3:<br />
W wersji 2.1 dokumentu PKCS#1 z czerwca 2002 zaproponowano uogólnienie algorytmu<br />
RSA, określając moduł jako iloczyn u róŜnych nieparzystych liczb pierwszych:<br />
n = r 1 r 2 r 3 ... r u , gdzie u ≥ 2.<br />
Od wykładnika publicznego e Ŝąda się wówczas spełnienia warunku:<br />
wówczas:<br />
gcd( e, λ(n)) = 1,<br />
d = e -1 mod λ(n),<br />
zaś wartość funkcji Carmichaela λ(n) jest wówczas określona jako:<br />
λ(n) = lcm((r 1 - 1), ( r 2 - 1), ... , ( r u - 1))<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.111
Podatność algorytmu RSA na atak wybranym szyfrogramem<br />
Algorytm RSA moŜe być wykorzystany zarówno do szyfrowania danych, jak i do ich<br />
podpisywania. Jednak w tym drugim przypadku niedopuszczalne jest podpisywanie samej<br />
wiadomości w formie jawnej. Schemat postępowania naleŜy koniecznie uzupełnić o funkcję<br />
skrótu (lub inny mechanizm kontroli integralności danych, innym rozwiązaniem jest<br />
wykorzystywanie dwóch róŜnych par kluczy do szyfrowania i podpisywania). PoniŜej<br />
przedstawione scenariusze udanego ataku na RSA wyjaśniają, dlaczego jest to niezbędne.<br />
Scenariusz 1:<br />
Atakujący chce uzyskać „nielegalny” podpis złoŜony przy pomocy klucza d na pewnej<br />
wiadomości M , którego nigdy by nie uzyskał w sposób legalny, prezentując do podpisania<br />
wiadomość M. W tym celu generuje dwie „niewinne” wiadomości M1 i M2, takie Ŝe:<br />
M = M1 * M2 mod n<br />
i uzyskuje na obu tych wiadomościach podpisy: M1 d mod n oraz M2 d mod n,<br />
a następnie „samodzielnie” wytwarza podpis na wiadomości M:<br />
( M1 d mod n ) * ( M2 d mod n ) = ( M1 * M2 ) d mod n = M d mod n<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.112
Scenariusz 3:<br />
Atakujący zna moduł przekształcenia n, klucz publiczny e, a ponadto przez podsłuch<br />
kanału komunikacyjnego wszedł w posiadanie pewnego kryptogramu c = m e mod n.<br />
W celu odtworzenia wiadomości jawnej m atakujący wybiera losową liczbę r < n, a<br />
następnie oblicza wartości x, y i t:<br />
x = r e mod n (stąd: r = x d mod n )<br />
y = x c mod n<br />
t = r -1 mod n (stąd: t = x - d mod n )<br />
i podsuwa wiadomość y do „podpisania” właścicielowi klucza prywatnego d.<br />
Po odebraniu wiadomości u, będącej podpisaną kluczem prywatnym d wiadomością y<br />
atakujący odtwarza „poszukiwaną” wiadomość jawną wykonując proste mnoŜenie:<br />
u = y d mod n<br />
(tu) mod n = x - d y d mod n = x - d x d c d mod n = c d mod n = m.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.113
Problem małego wykładnika-klucza publicznego<br />
W celu poprawienia skuteczności szyfrowania (czyli szybkości obliczeń) sugeruje się, by<br />
wartość klucza publicznego RSA była mała, lub by jego reprezentacja binarna miała jak<br />
najmniejszą liczbę bitów jedynkowych (np. e = 3 lub e = 2 16 + 1 = 65537). Często przyjmuje<br />
się, Ŝe wszystkie podmioty mają tą samą wartość klucza publicznego, zaś róŜne moduły n.<br />
ZałóŜmy, Ŝe podmiot A chce wysłać tą samą wiadomość m do trzech róŜnych podmiotów,<br />
których moduły przekształcenia RSA wynoszą odpowiednio: n 1 , n 2 i n 3 . Niech klucz<br />
publiczny dla wszystkich trzech podmiotów ma wartość e = 3.<br />
Utworzone kryptogramy:<br />
c 1 = m 3 mod n 1<br />
c 2 = m 3 mod n 2<br />
c 3 = m 3 mod n 3<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.114
PoniewaŜ z duŜym prawdopodobieństwem wszystkie trzy moduły są parami względnie<br />
pierwsze, więc adwersarz, wykorzystując CRT (i np. algorytm Gaussa) moŜe znaleźć<br />
rozwiązanie:<br />
rozwiązując układ trzech kongruencji:<br />
⎧ x ≡ c1(mod<br />
⎪⎨ x ≡ c2(mod<br />
⎪⎩ x ≡ c3(mod<br />
x = m 3 (0 ≤ x ≤ n 1 n 2 n 3 )<br />
n1<br />
)<br />
n2<br />
)<br />
n3<br />
)<br />
a następnie obliczając pierwiastek trzeciego stopnia z x w pierścieniu liczb całkowitych<br />
(czyli „zwyczajny” pierwiastek trzeciego stopnia, bez wnikania w „zawiłości obliczeń” w<br />
Z n ).<br />
Z tego powodu ten sam „mały” klucz publiczny nie powinien być stosowany do<br />
szyfrowania tej samej wiadomości wysyłanej do róŜnych podmiotów.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.115
JeŜeli jest to jednak z pewnych powodów wygodne, to zaleca się uzupełnianie (padding)<br />
kaŜdej z identycznych wiadomości m pseudolosowym ciągiem binarnym o określonej<br />
długości (np. 64 bitów), innym dla kaŜdego z odbiorców, przed poddaniem jej szyfrowaniu<br />
(tzw. salting).<br />
Małe klucze publiczne są takŜe niedogodne w przypadku małych wiadomości jawnych m,<br />
tzn. takich, Ŝe m < n 1 / e , gdyŜ wtedy m moŜna odtworzyć z c = m e przez proste obliczenie<br />
zwykłego pierwiastka e-tego stopnia z liczby c. RównieŜ i w tym przypadku salting<br />
rozwiązuje (choć nie do końca) problem.<br />
Problem tego samego modułu dla róŜnych podmiotów<br />
ZałóŜmy, Ŝe pewna Zaufana Trzecia Strona ustaliła w systemie jeden stały moduł n<br />
przekształcenia RSA, rozsyłając wszystkim podmiotom przez kanał fizycznie bezpieczny<br />
pary (e i , d i ).<br />
Wówczas podmiot j-ty, dysponujący parą kluczy (e j , d j ), dokonuje faktoryzacji modułu n,<br />
zaś znając klucz publiczny e k podmiotu k-tego i wiedząc o tym, Ŝe ma on identyczny moduł<br />
n, jest w stanie odtworzyć jego klucz prywatny d k .<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.116
Punkty stałe przekształcenia RSA<br />
Wiadomość jawna m (0 ≤ m ≤ n-1) jest nazywana w systemie RSA nieukrywalną wtedy, gdy<br />
m e = m (mod n). Takimi wiadomościami są oczywiście m = 0, m = 1 oraz m = n - 1.<br />
Wiadomości nieukrywalne są punktami stałymi przekształcenia RSA, zaś ich liczba dana<br />
jest wzorem:<br />
[1 + gcd(e-1, p-1)][ 1 + gcd(e-1, q-1)].<br />
PoniewaŜ wartości (e-1), (p-1) i (q-1) są zawsze parzyste, więc liczba wiadomości<br />
nieukrywalnych wynosi co najmniej 9.<br />
JeŜeli wartość e jest względnie mała (np. e = 3 lub e = 2 16 + 1) to liczba nieukrywalnych<br />
wiadomości jawnych jest znikoma w porównaniu z liczbą wszystkich wiadomości jawnych,<br />
wynoszącą n.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.117
Atak cykliczny na system RSA<br />
Niech szyfrogram c = m e (mod n), zaś k będzie liczbą naturalną taką, Ŝe:<br />
e<br />
c k<br />
≡<br />
c(mod n)<br />
PoniewaŜ przekształcenie szyfrujące jest permutacją określoną na przestrzeni wiadomości<br />
jawnych M = Z n , więc liczba k zawsze istnieje. Wynika z tego, Ŝe:<br />
e<br />
c k<br />
<strong>−</strong>1<br />
≡<br />
m(mod n)<br />
Atak cykliczny na system RSA polega na tym, Ŝe adwersarz oblicza kolejno:<br />
dopóki nie uzyska:<br />
c e mod n<br />
c e 2<br />
mod n<br />
c e 3<br />
mod n<br />
e<br />
c k<br />
≡ c(mod n)<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.118
Wtedy poprzednia wartość uzyskana w cyklu:<br />
e<br />
c k<br />
<strong>−</strong>1<br />
W istocie problem dotyczy ponownie właściwego wyboru wykładników publicznego<br />
i prywatnego, bowiem poszukując wartości parametru k, czyli liczby szyfrowań wiodących<br />
do ujawnienia m, moŜna problem uogólnić na całą przestrzeń M. Z twierdzenia Fermata-<br />
Eulera wynika, Ŝe powyŜsze poszukiwania sprowadzają się do znalezienia najmniejszego k,<br />
takiego Ŝe:<br />
e k = 1 (mod Φ (n)),<br />
a więc rzędu elementu e (lub d) w grupie multiplikatywnej Z Φ(n) .<br />
Problem kluczy raz jeszcze<br />
≡<br />
m(mod n)<br />
Liczba róŜnych par kluczy „prywatny-publiczny” zaleŜy oczywiście od modułu<br />
przekształcenia n = p * q, i nie ma regularnej zaleŜności (w szczególności liniowej) między<br />
wielkością liczb pierwszych określających ten moduł, a liczbą róŜnych par kluczy,<br />
spełniających warunek:<br />
d * e = 1 mod (p - 1)(q - 1)<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.119
Cechą przekształcenia RSA jest istnienie pewnych par kluczy, które szyfrują wszystkie<br />
wiadomości do identycznych szyfrogramów (daleki odpowiednik kluczy z kolizją dla<br />
algorytmu DES). W konsekwencji takie pary są nierozróŜnialne (bez konieczności<br />
faktoryzacji modułu moŜna skutecznie podszywać się pod inny podmiot).<br />
Warunek owej kolizji da się wyrazić następująco:<br />
i w konsekwencji:<br />
∀ m < p * q m d1 = m d2<br />
∀ m < p * q m d1* e1 = m<br />
d2* e2<br />
gdzie:<br />
e1 ≠ d1, e2 ≠ d2, e1 ≠ d2, e2 ≠ d1<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.120
PowyŜsze spostrzeŜenia jednoznacznie wskazują na fakt, iŜ w systemie kryptograficznym,<br />
opartym na najpopularniejszym obecnie algorytmie kryptografii asymetrycznej, naleŜy<br />
wyjątkowo pieczołowicie implementować realizację zadania generowania i przydzielania<br />
par kluczy poszczególnym podmiotom (a w miarę moŜliwości dbać o to, by moduły<br />
przekształceń były niepowtarzalne).<br />
Przykład:<br />
Do konstrukcji systemu kryptograficznego opartego na algorytmie RSA wykorzystano<br />
liczby pierwsze:<br />
p = 31 i q = 43<br />
Moduł przekształcenia szyfrującego n = p * q = 1333.<br />
Taki dobór parametrów umoŜliwia wygenerowanie 151 par kluczy, spośród których 15 par<br />
naleŜy w zasadzie odrzucić, bowiem spełniają one warunek:<br />
Są to klucze o wartościach:<br />
e = d.<br />
71, 181, 251, 379, 449, 559, 629, 631, 701, 811, 881, 1009, 1079, 1189 i 1259.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.121
W ten sposób pozostaje do wykorzystania jako klucze jedynie 272 róŜnych wartości<br />
liczbowych, które mogą tworzyć pary kluczy prywatnych i publicznych.<br />
Analizując liczbę punktów stałych przekształcenia szyfrującego (uwzględniając równieŜ<br />
pary spełniające warunek e = d) uzyskuje się następującą statystykę:<br />
liczba par kluczy liczba punktów stałych<br />
46 9<br />
16 33<br />
10 45<br />
46 49<br />
4 165<br />
16 217<br />
10 301<br />
3 1333<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.122
A więc jedynie około 1/3 moŜliwych par kluczy (w tym przypadku) zapewnia minimalną<br />
liczbę punktów stałych przekształcenia szyfrującego. Spośród par kluczy, które<br />
odpowiadają przekształceniu toŜsamościowemu, aŜ dwie sprawiają wraŜenie par<br />
„poprawnych” :<br />
(211, 1051) oraz (421, 841)<br />
Istnieją takŜe nierozróŜnialne (ze względu na efekt szyfrowania) pary kluczy, jak np.:<br />
(197, 953) oraz (827, 323),<br />
albowiem dla kaŜdej wiadomości jawnej m < 1333 zachodzi:<br />
m 197 mod 1333 = m 827 mod 1333<br />
oraz<br />
m 953 mod 1333 = m 323 mod 1333<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.123
Przyjrzyjmy się tym dwóm parom kluczy.<br />
Φ(n) = (p - 1) (q - 1) = 30 * 42 = 1260<br />
λ(n) = lcm((p - 1), (q - 1)) = lcm(30, 42) = 1260 / gcd(30, 42) = 1260 / 6 = 210<br />
953 mod 210 = 113<br />
323 mod 210 = 113<br />
827 mod 210 = 197<br />
197 mod 210 = 197<br />
A zatem nie powinna juŜ dziwić taka, a nie inna zaleŜność wiąŜąca parę według aktualnej<br />
wersji dokumentu PKCS #1.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.124
Problem blokady przy zastosowaniu do podpisywania algorytmu RSA<br />
Niech oprócz wymagania integralności i autentyczności danych będzie poŜądane takŜe<br />
zapewnienie ich poufności. Stosując algorytm RSA moŜna obie te usługi zrealizować<br />
jednocześnie, wykorzystując odwracalność przekształcenia RSA.<br />
Niech podmiot A dysponujący kluczem publicznym (e A , n A ) chce poufnie przesłać<br />
podpisaną przez siebie informację do podmiotu B, dysponującego kluczem publicznym<br />
(e B , n B ) .<br />
JeŜeli n A > n B , to istnieje niebezpieczeństwo, Ŝe wiadomość nie zostanie prawidłowo<br />
odtworzona przez odbiorcę.<br />
Przykład:<br />
n A = 62894113 e A = 5 d A = 37726937<br />
n B = 55465219 e B = 5 d B = 44360237<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.125
Podmiot A chcący przesłać poufnie do podmiotu B podpisaną przez siebie wiadomość m =<br />
1368797 oblicza:<br />
s = m dA mod n A = 1368797 37726937 mod 62894113 = 59847900<br />
c = s eB mod n B = 59847900 5 mod 55465219 = 38842235<br />
Podmiot B odszyfrowując i weryfikując podpis podmiotu A oblicza:<br />
s’ = c dB mod n B = 38842235 44360237 mod 55465219 = 4382681<br />
m’ = s’ eA mod n A = 4382681 5 mod 62894113 = 54383568<br />
m ≠ m’ (!!!)<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.126
Atak na RSA metodą „indukowania błędów” w ICC (Integrated Circuit(s) Card)<br />
W kartach elektronicznych w celu przyspieszenia szyfrowania RSA wykorzystuje się CRT -<br />
chińskie twierdzenie o resztach, a właściwie algorytmy pokrewne do algorytmu Garnera<br />
wyznaczającego rozwiązanie odpowiedniego układu równań, z którego wynika następująca<br />
toŜsamość:<br />
s = x d mod n = [ c 1 ( x d1 mod p ) + c 2 ( x d2 mod q )] mod n<br />
gdzie:<br />
c 1 = q ( q -1 mod p ) c 2 = p ( p -1 mod q )<br />
d 1 = d mod( p - 1 ) d 2 = d mod( q - 1 )<br />
W przypadku, gdy d jest kluczem prywatnym przechowywanym w obszarze<br />
kryptograficznym karty, wówczas powyŜsza operacja bezpiecznie realizuje podpisywanie<br />
wiadomości x bez ujawniania klucza szyfrującego.<br />
JeŜeli jednak istnieje moŜliwość wielokrotnego podpisania tej samej wiadomości x, to<br />
wówczas wprowadzając podczas kolejnych realizacji podpisu „zakłócenia” (np. wyginając<br />
kartę) moŜna spowodować, Ŝe jedno z powyŜszych obliczeń cząstkowych będzie<br />
„przypadkowym śmieciem” (random garbage).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.127
Niech „zakłócenie” spowoduje, Ŝe zamiast ( x d2 mod q ) do obliczenia „uszkodzonego<br />
podpisu” s* wzięta zostanie losowa wartość r.<br />
Wtedy:<br />
σ = s - s* = [ c 1 ( x d1 mod p ) + c 2 ( x d2 mod q ) ] mod n +<br />
- [ c 1 ( x d1 mod p ) + c 2 r ] mod n =<br />
= [ c 2 ( x d2 mod q ) - c 2 r ] mod n =<br />
= c 2 k’ mod n = p k” mod n<br />
Przy „łucie szczęścia” (np. gdy k” jest niewielkie) moŜna łatwo sfaktoryzować wartość σ<br />
i wyznaczyć p (!!!). W tym celu wystarczy wyznaczyć gcd(σ,<br />
n ) = p (np. przy pomocy<br />
algorytmu Euklidesa).<br />
„Poprawka” A.Lenstry :<br />
W rzeczywistości wystarczy x i s* (jedna próba !!!), gdyŜ:<br />
„Panaceum”:<br />
gcd[x - (s*) e mod n , n ] = p (!!!)<br />
Jednym ze środków uniemoŜliwiających przeprowadzenie tego rodzaju ataku jest kontrola<br />
poprawności wyniku przed jego udostępnieniem na zewnątrz i nie udostępnianie<br />
jakichkolwiek zakłóconych rezultatów (a jedynie informacji o błędnym przetwarzaniu).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.128
Atak na RSA metodą analizy poboru mocy (SPA, DPA – Static/Dynamic Power Analysis)<br />
JeŜeli wykładnik prywatny RSA jest przechowywany w obszarze kryptograficznym<br />
sprzętowego modułu kryptograficznego (np. procesorowej karty elektronicznej z<br />
koprocesorem kryptograficznym), zaś operacja kryptograficzna (podpisywanie lub<br />
deszyfrowanie) jest realizowana wewnątrz modułu, zaś otoczeniu jest udostępniany jedynie<br />
jej rezultat, to wówczas zakłada się, Ŝe paradygmat bezpieczeństwa klucza prywatnego jest<br />
spełniony.<br />
Operację potęgowania modulo n z reguły implementuje się zgodnie ze schematem<br />
wywodzącym się z klasycznego schematu Hornera, wykonując tyle pętli obliczeniowych, ile<br />
jest znaczących bitów w reprezentacji binarnej wykładnika.<br />
Obliczanie potęgi całkowitej a k mod n (n > k ≥ 0):<br />
- długość binarnej reprezentacji k = t + 1 bitów<br />
- a stąd:<br />
k<br />
a<br />
t i 0<br />
k 0 1<br />
k 1<br />
a k 2 ⎛<br />
a<br />
2 ⎞ ⎛<br />
i<br />
a<br />
2 ⎞ ⎛<br />
= ∏ =<br />
⎜⎜<br />
⎟⎟<br />
⎜⎜<br />
⎟⎟ ...<br />
⎜⎜ a<br />
i=<br />
0 ⎝ ⎠ ⎝ ⎠ ⎝<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
t<br />
2<br />
k<br />
⎞ t<br />
⎟⎟<br />
⎠<br />
str.129
Klasyczny algorytm potęgowania metodą wielokrotnego podnoszenia do kwadratu i<br />
mnoŜenia:<br />
Power (a, k, n)<br />
{ b := 1<br />
if (k = 0) then return (b)<br />
x := a<br />
if (k0 = 1) then b := a<br />
for i := 1 until t do<br />
{ x := x 2 mod n<br />
if (ki = 1) then b := x · b mod n }<br />
return (b) }<br />
W zaleŜności od tego, czy kolejny bit wykładnika jest „zerem”, czy „jedynką”, w kaŜdej<br />
pętli oprócz operacji podnoszenia do kwadratu moŜe być wykonywane dodatkowe<br />
mnoŜenie.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.130
W rzeczywistości powyŜszy pseudokod jest na poziomie sprzętu zastępowany sekwencją<br />
elementarnych poleceń (z listy rozkazów procesora), zaś kaŜde z nich ma swoje specyficzne<br />
„widmo” (przebieg czasowy poboru mocy z obwodu zasilającego, itp.).<br />
Pomiar tego „widma” (np. przez pomiar prądu pobieranego podczas operacji podnoszenia<br />
do potęgi równej wykładnikowi prywatnemu RSA) oraz jego analiza statystyczna<br />
umoŜliwia wnioskowanie o kolejnych bitach pozornie bezpiecznego klucza prywatnego (na<br />
podobnej zasadzie oparta jest kryptoanaliza czasowa).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.131
Sposób obrony przed tym atakiem zaleŜy od właściwości sprzętu kryptograficznego. JeŜeli<br />
nie ma moŜliwości modyfikacji hardware’u, to wówczas, kosztem wydłuŜenia operacji<br />
szyfrowania, moŜna wprowadzić czynnik losowy do obliczeń:<br />
Klasyczny podpis RSA:<br />
S = M d mod N<br />
„Maskowanie” R.Rivesta:<br />
S = [(MX) d mod N][(X -1 ) d mod N] mod N =<br />
= [(M) d mod N][(XX -1 ) d mod N] mod N =<br />
= M d mod N<br />
X jest losowe i róŜne dla kaŜdego M;<br />
Radykalny i skuteczny środek:<br />
Projektowanie układu scalonego tak, by „hardware” miał pozory elementu zachowującego się<br />
losowo, tzn.:<br />
- to samo polecenie;<br />
- te same argumenty;<br />
- inna chwila czasowa;<br />
- inny czas i „obwiednia” instrukcji procesora !!!<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.132
Zalecana wielkość modułu przekształcenia RSA<br />
Znane obecnie najskuteczniejsze metody faktoryzacji iloczynu dwóch duŜych liczb<br />
pierwszych powodują, Ŝe zalecane długości reprezentacji binarnych modułów<br />
przekształcenia RSA wynoszą:<br />
• wg. RSA Data Security – długość minimalna to 1024 bity, co powinno „wystarczyć” do<br />
2010 roku; od 2010 roku do 2030 roku „zalecana” długość minimalna – 2048 bitów (ale<br />
trudno wróŜyć „z fusów” i przewidywać co się w tym czasie wydarzy w dziedzinie<br />
kryptoanalizy.<br />
• wg. NESSIE (New European Schemes for Signatures, Integrity and Encryption) co<br />
najmniej 1536 bitów dla kluczy, które powinny być niezagroŜone przez dłuŜszy okres<br />
czasu;<br />
W przypadku kluczy RSA stosowanych w realizacji usługi autentyczności (podpis cyfrowy,<br />
i to zarówno w wersji „z załącznikiem”, jak i w wersji „z odtwarzaniem wiadomości”)<br />
powszechnie akceptuje się w Europie zalecenia sformułowane w dokumencie<br />
przygotowanym pierwotnie przez ekspertów w ramach inicjatywy EESSI (European<br />
Electronic Signature Standardization Initiative), znanym powszechnie pod nazwą ALGO<br />
(ETSI SR 002 176: „Electronic Signatures and Infrastructures (ESI); Algorithms and<br />
Parameters for Secure Electronic Signatures” z marca 2003).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.133
Obecnie przygotowywana jest nowa dwuczęściowa wersja tego dokumentu (draft) ETSI<br />
TR 102 176.<br />
Zawarte w nim wskazówki dotyczą nie tylko wielkości modułu RSA, ale takŜe sposobu<br />
generowania liczb pierwszych tworzących ten moduł oraz takiego wyboru wartości<br />
wykładników prywatnych i publicznych (dla schematów podpisów cyfrowych, nie zaś<br />
schematów szyfrowania, czyli realizacji usługi poufności !!!), by uczynić schemat podpisu<br />
RSA „rozsądnie” bezpiecznym.<br />
PoniŜej przedstawiono wyciąg najistotniejszych zaleceń z tego dokumentu.<br />
Annex C (informative): Generation of RSA keys for signatures<br />
C.1 Generation of random prime numbers<br />
C.1.1<br />
Probabilistic primality test<br />
The generation of large prime numbers for cryptographic applications is usually done<br />
using probabilistic primality tests. These algorithms are very efficient but may declare that<br />
a composite number is prime with some (small) probability. The Miller-Rabin test is one<br />
such algorithm. It is <strong>kn</strong>own that the probability of declaring a composite number as prime<br />
is at most (1/4)k after k iterations of the elementary algorithm.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.134
It is <strong>kn</strong>own (see Menezes, van Oorschot and Vanstone) that for example, when generating<br />
1000-bit probable primes, Miller-Rabin test with 3 repetitions is sufficient.<br />
The generation of random prime numbers in the range [a,b] can be done using the<br />
following algorithm:<br />
• randomly choose an odd integer x in the range [a,b];<br />
• try to divide x by all the prime numbers smaller than a (small) bound B; if x is<br />
divisible, go back to the first step;<br />
• using the Miller-Rabin probabilistic primality algorithm, test if x is probably prime; if<br />
this is not the case, go back to the first step.<br />
Note that the second step just makes the generation faster since the small prime numbers<br />
are the most probable prime factors. Furthermore, this test can be done in a single<br />
operation by just testing if x is relatively prime with the precomputed product of all the<br />
prime numbers smaller than B.<br />
The probability for an odd integer randomly chosen in the range [a,b] to be prime is about<br />
2/ln(b) so the number of repetitions of the algorithm will be about ln(b)/2. Furthermore, the<br />
entropy of k-bit primes generated with this method is about k-ln(k).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.135
From a practical point of view, the time needed to generate a prime number can be<br />
reduced if, instead of choosing a new random integer x for each test, we look for the<br />
smallest prime number larger than a random integer x. This can be done by sieving,<br />
efficiently testing all the numbers in the range x to x+d (for some suitable d) for divisibility<br />
by all small primes less than B, before doing any probabilistic primality tests. From a<br />
theoretical point of view this makes the distribution of the primes produced less uniform,<br />
but in practice the effect is insignificant.<br />
C.1.2<br />
Strong prime numbers<br />
For some cryptographic applications, it is sometimes advised to use so-called strong prime<br />
numbers. A prime p is said to be strong if:<br />
• p-1 has a large prime factor r;<br />
• p+1 has a large prime factor;<br />
• r-1 has a large prime factor.<br />
Those additional requirements are made to avoid certain factoring algorithms (Pollard p-1<br />
algorithm and its generalizations).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.136
If such verifications can be easily done and if the efficiency of prime number generation is<br />
not a critical issue, they can be added to the prime number generation procedure.<br />
However, it has been proved that the probability for a randomly chosen prime number to<br />
fulfil those requirements is overwhelming for the current parameter sizes. Furthermore,<br />
the Pollard method is generalized by the elliptic curve factoring method so it is not possible<br />
to make an exhaustive list of weak forms of prime numbers.<br />
In conclusion, the prime numbers must be randomly chosen and must not have any kind of<br />
special form; if this is done, additional tests can be added.<br />
C.2 Generation of RSA modulus<br />
An RSA modulus is obtained by multiplying two prime numbers of roughly the same size.<br />
Furthermore, the two factors must not be too close in order to be far enough from the<br />
square root of the modulus.<br />
If we let p and q be the two prime factors of the modulus n, we can require that, for<br />
example,<br />
0,1 < |log2(p) - log2(q)| < 30<br />
which means that none of the factors is small or close to the square root of the modulus.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.137
This condition implies that<br />
log2(n)/2 - 15 < log2(p), log2(q) < log2(n) / 2 + 15<br />
The generation of an RSA modulus of exactly k bits could be done with the following<br />
algorithm:<br />
• Choose a random prime number p in the range ]2k/2-15, 2k/2+15[;<br />
• Choose a random prime number q in the range [2k-1/p, 2k/p[;<br />
• If the condition 0.1 < |log2(p)-log2(q)| < 30 is not satisfied, go back to the first step;<br />
• Let n be the product of p and q.<br />
A more complicated method that avoids the third step altogether but produces differently<br />
distributed primes is:<br />
• Choose a random prime number p in the range [2k/2-9/20, 2k/2+15[;<br />
• Choose a random prime number q in the range]a,b[ where a=max(ceil(2k-1/p)-1, p.2-<br />
30) and b=min(2k/p, p.2-1/10);<br />
• Let n be the product of p and q.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.138
C.3 Generation of RSA keys<br />
An RSA public key is made of an RSA modulus n=p.q generated as explained in the<br />
previous section and of a public exponent e. The only requirement for e is to be relatively<br />
prime to lcm(p-1,q-1). This public exponent may be chosen as small as e=3.<br />
The related RSA secret key d (or signature generation key) is computed using the extended<br />
Euclidean algorithm:<br />
e.d ≡ 1 mod lcm(p-1,q-1)<br />
The optimization that consists of first choosing the secret exponent d and then computing<br />
the public exponent e can be used but in this case d must be randomly chosen. The value of<br />
d should not be too small otherwise there are attacks which can factor the modulus<br />
(Wiener 1990, Boneh and Durfee 1999, Durfee and Nguyen 1999, see bibliography). A<br />
conservative method would be to choose d randomly in a range at least √n from its<br />
minimum and maximum values. In practice choosing d uniformly in the range [3,n] has<br />
negligible probability of producing an exploitable value.<br />
Let us also remember that a new modulus n must be used for each user of the signature<br />
scheme. A modulus must not be shared by some users, even if different public exponents<br />
are used. Furthermore, notice that if the RSA keys are generated as explained above, the<br />
probability of generating two keys with the same modulus or the same secret exponent is<br />
totally negligible, even if many keys are computed.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.139
Podpisywanie wiadomości i weryfikacja podpisu RSA raz jeszcze<br />
Dane:<br />
• klucz publiczny - (n, e);<br />
• klucz prywatny – d;<br />
• funkcja redundancji – R (publicznie znana i odwracalna, tzn. łatwo jest obliczyć<br />
zarówno m* = R(m), jak i m = R -1 (m*)).<br />
Komentarz:<br />
Z reguły „wiadomością” podpisywaną m nie jest sama wiadomość jako taka, lecz wartość<br />
odpowiedniej funkcji skrótu h(.), której reprezentacja binarna jest krótsza od<br />
reprezentacji modułu n. Istnieje zatem (wynikająca z wymagań bezpieczeństwa) potrzeba<br />
odpowiedniego „wydłuŜenia” podpisywanej wiadomości. Wybór funkcji R jest o tyle<br />
istotny, Ŝe „słaba” funkcja redundancji czyni podpis podatnym na atak.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.140
Tworzenie podpisu RSA<br />
Podmiot podpisujący:<br />
• oblicza m* = R(m);<br />
• oblicza podpis s = (m*) d mod n.<br />
Podmiot weryfikujący po uzyskaniu klucza publicznego (n, e) :<br />
• oblicza m* = s e mod n;<br />
• sprawdza, czy m* naleŜy do przeciwdziedziny funkcji R ; jeŜeli nie – odrzuca podpis<br />
jako „nieprawdziwy”;<br />
• odtwarza m = R -1 (m*).<br />
Uwaga:<br />
W przypadku tzw. podpisu z załącznikiem sprawdzanie przynaleŜności do<br />
przeciwdziedziny funkcji R obejmuje takŜe sprawdzenie zgodności odzyskanej powyŜej<br />
wartości m z wartością funkcji skrótu h(.) dla „wiadomości oryginalnej”.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.141
Standard podpisu RSA wg. PKCS #1 (Public Key Cryptography Standards)<br />
Klucz publiczny algorytmu RSA składa się z dwóch składników: modułu n i<br />
wykładnika publicznego e. W przypadku klucza prywatnego wykorzystywanego do<br />
podpisywania wiadomości istnieją jego dwie alternatywne reprezentacje.<br />
Pierwsza z nich, najbardziej „naturalna”, wymaga zdefiniowania modułu n i<br />
wykładnika prywatnego d.<br />
Druga, umoŜliwiająca realizację „efektywniejszej” obliczeniowo procedury<br />
szyfrowania kluczem prywatnym, obejmuje pięć parametrów: oba pierwsze czynniki<br />
modułu p i q, dwa wykładniki dP i dQ, spełniające zaleŜności:<br />
e dP mod (p – 1) = 1<br />
e dQ mod (q – 1) = 1,<br />
oraz tzw. „współczynnik CRT” qInv wynikający z „Chińskiego Twierdzenie o Resztach”<br />
i spełniający zaleŜność:<br />
q qInv mod p = 1.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.142
Dla pierwszej reprezentacji klucz prywatnego proces szyfrowania jest zgodny z<br />
„klasycznym” potęgowaniem:<br />
s = m d mod n.<br />
W przypadku drugiej reprezentacji proces obliczania podpisu s jest bardziej<br />
skomplikowany, lecz ze względu na operowanie niŜszymi wykładnikami potęg szybszy w<br />
realizacjach programowych i sprzętowych:<br />
s 1 = m dP mod p<br />
s 2 = m dQ mod q<br />
h = qInv (s 1 – s 2 ) mod p<br />
s = s 2 + h q<br />
Jak wspomniano wcześniej, funkcja redundancji R moŜe mieć kluczowe znaczenie dla<br />
bezpieczeństwa algorytmu RSA. Potwierdzeniem tego faktu jest historia PKCS #1 (pomija<br />
się tu fakt odkrywania kolejnych „słabości” zalecanych we wcześniejszych wersjach tego<br />
standardu funkcji skrótu MD4 i MD5).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.143
W wersji 1.5 z listopada 1993 zalecano następującą „formułę preparowania”<br />
podpisywanej wiadomości przed poddaniem jej szyfrowaniu kluczem prywatnym:<br />
m* = 01 ciąg bitów jedynkowych (PS) 00 T ,<br />
gdzie wartość T jest wartością funkcji skrótu „oryginalnej” podpisywanej wiadomości<br />
zakodowanej zgodnie z DER (Distinguished Encoding Rules), wraz z identyfikatorem<br />
funkcji skrótu.<br />
Mimo, iŜ w przypadku tego schematu przygotowania wiadomości podpisywanej zasadniczo<br />
nie ma podejrzeń dotyczących istnienia skutecznego ataku, to jednak pojawiła się nowa<br />
propozycja dla „podpisu z załącznikiem” – PSS (Probabilistic Signature Scheme) – oparta<br />
na pracach Bellare’go i Rogaway’a 1 .<br />
W opublikowanej 14 czerwca 2002 roku wersji 2.1 dokumentu PKCS#1 formatowanie<br />
danych zgodnie z PSS (przed ostateczną operacją potęgowania) zostało juŜ uwzględnione<br />
jako alternatywa dla wersji 1.5. W porównaniu z oryginalną propozycją Bellare’go i<br />
Rogaway’a wprowadzono pewne zmiany, ale mają one słuŜyć sprawniejszemu<br />
przetwarzaniu podpisu podczas weryfikacji, nie osłabiając jego bezpieczeństwa.<br />
1 M.Bellare, P.Rogaway „PSS: Probably Secure Encoding method for Digital Signatures”, sierpień 1998, http://grouper.ieee.org/groups/1363<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.144
W wersji tej oprócz „nieuni<strong>kn</strong>ionej” funkcji skrótu (ale tym razem nie wskazywanej w<br />
formie bezpośredniego określenia algorytmu jej obliczania) pojawia się funkcja<br />
generowania maski (MGF – Mask Generation Function), oparta na jednokierunkowej<br />
funkcji skrótu, a takŜe pseudolosowy ciąg binarny salt. Dopełniające ciągi bitów PS są<br />
ciągami „zerowymi”.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.145
Proponowany schemat „komponowania” podpisu wg. PSS jest następujący:<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.146
Inne propozycje uczynienia podpisu RSA bezpieczniejszym<br />
Poszukiwanie tzw. udowadnialnie bezpiecznych schematów podpisów zaowocowało nie tylko<br />
propozycją PSS, ale takŜe innymi wariantami „preparowania” podpisywanej wiadomości.<br />
W 1993 roku Bellare i Rogaway zaproponowali schemat tzw. Full Domain Hash (FDH), w<br />
którym zakłada się, Ŝe wartość funkcji skrótu ma długość binarną taką samą, jak moduł<br />
RSA stosowany podczas szyfrowania kluczem prywatnym (nie są potrzebne Ŝadne bajty,<br />
ani ciągi uzupełniające):<br />
s = H(m) d mod n.<br />
Pewnym krokiem zgodnym z tą propozycją jest opublikowanie przez NIST jako<br />
normatywnych nowych funkcji skrótu SHA-256, SHA-384 i SHA-512, dających skróty o<br />
długościach binarnych „ukrytych” w nazwach tych funkcji.<br />
Ogólny wniosek, jaki wypływa z ostatnich analiz bezpieczeństwa schematu podpisu RSA<br />
jest następujący: wartości funkcji skrótu powinny być dłuŜsze, niŜ dotychczas zalecane w<br />
standardach „de facto” i „de jure”.<br />
Ostatnio pojawiają się takŜe propozycje, by w schemacie podpisu RSA z odtwarzaniem<br />
wiadomości wykorzystywać do szyfrowania i podpisywania ten sam moduł, lecz ze względu<br />
na „świeŜość” pomysłu wypada nieco poczekać na jego pełną i obiektywną ocenę.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.147
Praktyczne aspekty szyfrowania za pomocą algorytmu RSA<br />
Jak wspomniano juŜ wcześniej podczas omawiania podpisywania za pomocą<br />
algorytmu RSA, funkcja redundancji R moŜe mieć kluczowe znaczenie dla bezpieczeństwa<br />
tego algorytmu.<br />
W wersji 1.5 dokumentu PKCS #1 z listopada 1993 zalecano następującą „formułę<br />
preparowania” wiadomości przed poddaniem jej szyfrowaniu:<br />
M* = 00 02 ciąg pseudolosowy(PS) 00 M ,<br />
gdzie ciąg PS ma co najmniej 8 bajtów.<br />
W 1998 r. D. Bleichenbacher wykazał, Ŝe wysłanie do pewnego podmiotu wartości C’ = r’C,<br />
gdzie C jest poprzednio przechwyconym kryptogramem adresowanym do tego podmiotu,<br />
zaś r’ – liczbą losową, i uzyskanie odpowiedzi, iŜ deszyfrowany kryptogram ma błędną<br />
składnię (nie zaczyna się od 00 02), umoŜliwia odtworzenie wiadomości jawnej M.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.148
Atak Bleichenbachera, polegający na wielokrotnym wysyłaniu odbiorcy<br />
„spreparowanych” fałszywych kryptogramów, nie ma praktycznego znaczenia przy<br />
atakach na klasyczną pocztę elektroniczną, gdyŜ odbiorca nie będzie wielokrotnie<br />
podejmował prób odszyfrowania „niewłaściwie” sformatowanych kryptogramów, lecz jest<br />
istotny i groźny w środowisku, w którym jednocześnie przetwarza się wiele informacji (np.<br />
w SSL, gdzie szyfrowanie RSA stosowane jest w celu bezpiecznego uzgadniania kluczy<br />
sesyjnych – „digital envelopes”/„key wrapping”, zaś atakujący moŜe pozostać anonimowy,<br />
gdyŜ nie jest wymagane uwierzytelnianie nadawcy).<br />
Przebieg ataku na schemat szyfrowania RSA zgodny z PKCS#1 v.1.5 jest następujący:<br />
1. Atakujący przechwycił kryptogram C, ma dostęp do klucza publicznego podmiotu<br />
atakowanego (n, e), i „pała Ŝądzą” odtworzenia wiadomości jawnej M.<br />
2. Atakujący generuje ciąg „kryptogramów” C 1 , C 2 , ..., gdzie:<br />
C i = C(r i ) e mod n,<br />
r 1 , r 2 , ..., są losowymi liczbami z przedziału (1, n -1). Kolejne wartości r i są wybierane<br />
„adaptacyjnie”, czyli z uwzględnieniem poprzednich „dobrych kryptogramów”<br />
C(r j ) e mod n, gdzie j < i. „Dobry kryptogram” to taki „kryptogram”, dla którego<br />
atakowany odbiorca nie stwierdza błędnego formatu niezgodnego z PKCS#1.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.149
3. Atakujący wysyła atakowanemu kolejne „kryptogramy” C 1 , C 2 , ..., obserwując jego<br />
reakcję na przebieg deszyfrowania.<br />
4. Na podstawie znajomości formatu atakujący wiedząc, które z „kryptogramów” są<br />
„dobrymi kryptogramami”, wnioskuje o pewnych bitach odpowiedniej „wiadomości<br />
jawnej”:<br />
M i = (C i ) d mod n =M r i mod n .<br />
5. Na podstawie znajomości odpowiedniej liczby bitów M i atakujący jest w stanie<br />
„zawęzić” przedział, w którym musi się znajdować poszukiwana wartość M (kaŜdy<br />
„dobry kryptogram” zmniejsza ten przedział dwukrotnie).<br />
Zakładając, Ŝe długość modułu przekształcenia RSA jest zazwyczaj wielokrotnością<br />
8 bitów, zaś długość odszyfrowanej wiadomości M i nie jest zazwyczaj sprawdzana po<br />
zdeszyfrowaniu, skuteczny atak na 1024-bitowe RSA wymaga około 2 20 prób (!).<br />
W wersji PKCS #1 v.2.0 z października 1998 roku zalecono odmienną formułę szyfrowania,<br />
zwaną OAEP (Optimal Asymmetric Encryption Padding), odporną na ten atak, zaś w fazach<br />
konstrukcji kryptogramu wykorzystujących funkcję skrótu zalecającą SHA-1 (Secure<br />
Hash Algorithm).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.150
Diagram ilustrujący operacje wykonywane podczas szyfrowania wiadomości M zgodnie z<br />
OAEP przedstawiono poniŜej.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.151
Parametry szyfrowania L (niewidoczne explicite na diagramie) są opcjonalnym blokiem<br />
danych (nie muszą występować w danych słuŜących do utworzenia kryptogramu, ale jeśli<br />
ich brak, to w ich miejsce naleŜy podstawić łańcuch bajtów „zerowych” o odpowiedniej<br />
długości).<br />
Po poddaniu parametrów L działaniu funkcji skrótu H (zalecana funkcja to co najmniej<br />
SHA-1, a jeszcze lepiej SHA-256, SHA-384 lub SHA-512) uzyskuje się wartość lHash,<br />
„składaną” (konkatenowaną) z szyfrowaną wiadomością M, opcjonalnym ciągiem<br />
uzupełniającym PS (zawierającym same bajty „zerowe”) i bajtem o wartości ‘01’ hex, w<br />
celu utworzenia tzw. „bloku danych” DB:<br />
DB = lHash || PS || ‘01’ || M.<br />
Losowy ciąg binarny, zwany ziarnem (seed), o długości identycznej, jak długość wyniku<br />
zastosowanej funkcji skrótu, jest poddawany działaniu funkcji „maskującej” MGF (Mask<br />
Generation Function), do której konstrukcji wykorzystywane są funkcje jednokierunkowe<br />
„bez klucza”, po czym poddawany operacji bitowego XOR (⊕) z blokiem danych DB. W<br />
ten sposób tworzy się tzw. „zamaskowany” blok danych (masked DB).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.152
W kolejnym kroku, wykorzystując ponownie funkcję MGF, maskuje się ziarno, a<br />
następnie składa (przez konkatenację) ciąg binarny EM, który będzie poddawany operacji<br />
szyfrowania kluczem publicznym zamierzonego odbiorcy poufnego komunikatu.<br />
Takie przygotowanie formatu wiadomości jawnej przed poddaniem jej szyfrowaniu<br />
zgodnie z dzisiejszym stanem wiedzy gwarantuje odporność na znane ataki na algorytm<br />
RSA wykorzystywany do realizacji usługi poufności.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.153
Procedura uzgadniania tajnego klucza D-H (Diffie, Hellman, Ralph Merkle – 1976 r.)<br />
Pierwszy opublikowany algorytm z kluczem publicznym wykorzystujący złoŜoność<br />
obliczania logarytmu dyskretnego. Miał słuŜyć do bezpiecznego uzgadniania symetrycznego<br />
klucza sesyjnego, wykorzystywanego po uzgodnieniu do szyfrowania danych.<br />
W klasycznym protokole D-H podmioty A i B uŜywają tej samej duŜej liczby pierwszej p<br />
jako modułu przekształcenia oraz tego samego generatora ciała skończonego F p (grupy<br />
Z p *) - liczby g∈[2, p-2] (liczby p i g są ogólnie znane - publiczne).<br />
• A i B wybierają losowo (i niezaleŜnie) dwie tajne (prywatne) liczby losowe α i β naleŜące<br />
do podzbioru grupy skończonej Z p * (dokładniej: α,β∈[2, p-2], α=1 lub β=1 naleŜy<br />
wykluczyć, gdyŜ „podsłuchujący” moŜe wtedy jawnie obliczyć uzgodniony w protokole<br />
„sekret”, α=p-1 lub β=p-1 takŜe naleŜy wykluczyć, gdyŜ wtedy g α mod p lub g β mod p<br />
jest równe 1);<br />
• A wysyła do B liczbę g α mod p;<br />
• B wysyła do A liczbę g β mod p;<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.154
• A i B obliczają wspólny tajny klucz:<br />
k = ( g α ) β mod p = ( g β ) α mod p = g αβ mod p<br />
Problem określenia klucza g αβ przy znajomości g α i g β<br />
równowaŜny problemowi wyznaczenia logarytmu dyskretnego.<br />
jest (najprawdopodobniej)<br />
Nie oznacza to jednak, iŜ protokół jest równie silny. RozwaŜmy następujący atak metodą<br />
„man in the middle”:<br />
• A wysyła do B liczbę g α mod p;<br />
• Intruz I przechwytuje ta informację i odsyła do B liczbę g x<br />
wygenerowaną przez intruza liczbą losową naleŜącą do [2, p-2];<br />
mod p, gdzie x jest<br />
• B wysyła do A liczbę g β mod p;<br />
• Intruz I przechwytuje ta informację i odsyła do A liczbę g y<br />
wygenerowaną przez intruza liczbą losową naleŜącą do [2, p-2].<br />
mod p, gdzie y jest<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.155
• A oblicza „wspólny tajny klucz”:<br />
k’ = ( g α ) y mod p = g αy mod p;<br />
• B oblicza inny „wspólny tajny klucz”:<br />
k” = ( g β ) x mod p = g βx mod p,<br />
a w środku pozostaje intruz I i spokojnie podsłuchuje sesję komunikacyjną Ŝonglując<br />
kluczami.<br />
Inna forma ataku wykorzystuje „słabość” wybranej jako parametr publiczny liczby p, a<br />
opiera się na fakcie, Ŝe utworzenie przez jedną ze stron jako potęgi (g α lub g β ) elementu<br />
małego rzędu w grupie Z p * „zawęŜa” w istotny sposób przestrzeń moŜliwych do<br />
uzgodnienia kluczy (zbiór róŜnych moŜliwych wartości potęg g α lub g β jest równy rzędowi<br />
tej liczby w grupie).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.156
Aktywny atak na klasyczny protokół D-H moŜliwy jest np. wtedy, gdy liczba p jest postaci:<br />
p = Rq + 1.<br />
Wtedy liczba h = g q mod p = g (p-1)/R mod p jest rzędu R.<br />
Intruz, zastępując g α mod p i g β mod p wartościami (g α ) q mod p i (g β ) q mod p, powoduje Ŝe<br />
uzgodniony klucz przyjmuje tylko R wartości, gdyŜ w rzeczywistości:<br />
k = g αβq αβ<br />
mod p = h αβ mod p,<br />
czego strony mogą nie spostrzec (nawet wymieniając między sobą informacje o wartościach<br />
funkcji skrótu uzgodnionego klucza, gdyŜ uzgodniły taką samą wartość).<br />
W szczególnym przypadku, gdy R = 2, zaś q jest liczbą pierwszą; wtedy h = -1 mod p = (p-1)<br />
mod p , zaś uzgodniony klucz przyjmuje wartość +1 albo –1 (ale oczywiście taki przypadek<br />
ataku natychmiast moŜna wykryć, gdyŜ oczekujemy „losowego” wyniku uzgodnień).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.157
Modyfikacja Hughes’a protokołu D-H<br />
Przedstawioną wadę klasycznej wersji protokołu D-H (podatność na atak metodą „man in<br />
the middle”) próbowano wyeliminować na róŜne sposoby. Jedną z propozycji jest tzw.<br />
wariant Hughes’a, w którym tajny klucz jest określany przez stronę B (co, jak pamiętamy,<br />
jest juŜ pewną wadą)<br />
• A i B wybierają losowo (i niezaleŜnie) dwie tajne (prywatne) liczby losowe α i β, naleŜące<br />
do podzbioru ciała skończonego Z p *.<br />
• A wysyła do B liczbę g α mod p.<br />
• B oblicza liczbę g β mod p, która będzie uzgodnionym kluczem k, i odsyła do A liczbę:<br />
• A oblicza:<br />
Y = ( g α ) β mod p = ( g β ) α mod p = k α mod p<br />
z = α - 1 mod p<br />
i odtwarza klucz:<br />
-1<br />
k = Y z mod p = ( ( g α ) β ) α mod p = g β mod p = k<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.158
Procedura uzgadniania tajnego klucza ElGamala<br />
Zakłada się, Ŝe klucz publiczny k B = ( g β ) mod p jest dostępny w formie certyfikatu<br />
wystawionego przez „Zaufaną Stronę Trzecią - TTP”.<br />
• A kopiuje klucz publiczny k B z certyfikatu i generuje losową liczbę α ∈[2, p-2];<br />
• A wysyła do B liczbę g α mod p;<br />
• A i B obliczają wspólny tajny klucz:<br />
k = ( g α ) β β mod p = ( g ) α mod p = g αβ mod p<br />
Oczywiście w tym przypadku uwierzytelnianie klucza jest jednostronne (podmiot B nie ma<br />
Ŝadnej pewności, Ŝe α jest wiarygodnym parametrem).<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.159
Protokół MTI/A0<br />
Zakłada się, Ŝe klucze publiczne k A = ( g α ) mod p i k B = ( g β ) mod p są dostępne w formie<br />
certyfikatów wystawionych przez „Zaufaną Stronę Trzecią - TTP”.<br />
• A i B wybierają losowo (i niezaleŜnie) dwie tajne (prywatne) liczby losowe γ i δ naleŜące<br />
do podzbioru ciała skończonego Z p *.<br />
• A wysyła do B liczbę g γ mod p.<br />
• B wysyła do A liczbę g δ mod p.<br />
• A oblicza wspólny tajny klucz:<br />
γ δ<br />
k = k B ( g ) α mod p = g βγ + αδ mod p<br />
• B wnioskuje, Ŝe tajnym kluczem powinna być liczba:<br />
δ<br />
k = k A ( g<br />
γ<br />
) β mod p = g βγ + αδ mod p<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.160
Protokół STS (Station-to-Station)<br />
Trójprzebiegowy wariant protokołu D-H, w którym realizuje się:<br />
• uzgodnienie klucza sesyjnego;<br />
• wzajemne uwierzytelnienie podmiotów A i B (dotychczas omówione warianty tego nie<br />
gwarantowały);<br />
• wzajemne uwierzytelnienie klucza;<br />
Ponadto toŜsamości podmiotów A i B mogą być chronione przed ujawnieniem<br />
(anonimowość).<br />
Niech S A (m) = (H(m)) dA mod n A oznacza podpis RSA podmiotu A dla wiadomości m<br />
(H - funkcja skrótu, H(m) < n A ).<br />
Jak zwykle, wybiera się liczbę pierwszą p oraz generator ciała skończonego F p (grupy Z p *) -<br />
liczbę g∈[2, p-2] (liczby p i g są ogólnie znane - publiczne).<br />
KaŜdy podmiot A ustala swoją parę kluczy RSA do podpisywania (publiczny - e A , n A ;<br />
prywatny - d A ) i poddaje je certyfikacji u „Zaufanej Trzeciej Strony”.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.161
• A i B wybierają losowo (i niezaleŜnie) dwie tajne (prywatne) liczby losowe α i β<br />
(α,β∈[2, p-2]);<br />
• A wysyła do B liczbę g α mod p;<br />
• B oblicza współdzielony klucz k = (g α )<br />
β mod p, podpisuje konkatenację (g<br />
β || g<br />
α )<br />
(dokładnie w tej kolejności), szyfruje uzyskany podpis kluczem sesyjnym i wysyła do A<br />
następującą parę:<br />
g β mod p, E k (S B (g β ||g<br />
α ))<br />
• A oblicza wspólny tajny klucz:<br />
k = (g β )<br />
α mod p = g αβ<br />
• A odszyfrowuje podpis i weryfikuje ten podpis (np. na podstawie certyfikatu klucza<br />
publicznego RSA podmiotu B), zaś jeŜeli weryfikacja jest pozytywna, to A wysyła do B<br />
liczbę: E k (S A (g α ||g<br />
β ))<br />
• B odszyfrowuje i weryfikuje podpis; jeŜeli weryfikacja jest pozytywna, to protokół się<br />
kończy.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.162
KLEPTOGRAFIA<br />
Termin kleptografia jest związany z takim preparowaniem sprzętowych (lub opartych<br />
tylko na oprogramowaniu) modułów kryptograficznych, by umoŜliwić przechwycenie<br />
przez „producenta” modułu sekretów podmiotów je wykorzystujących, które teoretycznie<br />
powinny pozostawać bezpieczne wewnątrz modułu podczas realizowania usług<br />
kryptograficznych.<br />
Wykrycie ataku kleptograficznego wyłącznie na podstawie obserwacji danych wejściowych<br />
i wyjściowych z urządzenia jest praktycznie niemoŜliwe.<br />
Atak polega wyłącznie na biernym podsłuchiwaniu sygnałów (parametrów) wymienianych<br />
między modułem a światem zewnętrznym, a do jego przeprowadzenia niezbędne jest<br />
„zainstalowanie” w module przed powierzeniem go właściwemu uŜytkownikowi<br />
dodatkowego tajnego sekretu dostawcy modułu, oraz odpowiedniego spreparowania<br />
oprogramowania samego modułu.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.163
Przykład: („zaraŜony” kleptograficznie moduł uzgadniania klucza sesyjnego<br />
zgodnie z protokołem Diffie’go-Hellmana)<br />
Producent modułu „instaluje” w nim swój „klucz”:<br />
Y = g X mod p,<br />
zachowując w swoich zasobach informację o wartości parametru X.<br />
Przy pierwszym „eksploatacyjnym” wywołaniu protokołu Diffie’go-Hellmana na zewnątrz<br />
przekazywana jest wartość:<br />
m1 = g c1 mod p,<br />
gdzie c1 jest rzeczywiście liczbą losową. Dodatkową operacją wykonywaną w<br />
„spreparowanym kleptograficznie” urządzeniu jest zapamiętanie wartości c1.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.164
Przy drugim (i następnych) wywołaniu protokołu Diffie’go-Hellmana zamiast generowania<br />
kolejnej liczby losowej, która ma posłuŜyć do utworzenia nowego klucza sesyjnego,<br />
wykonywane są w module następujące działania:<br />
• najpierw obliczana jest w module wartość:<br />
z = g c1 Y -ac1-b mod p,<br />
gdzie a i b są pewnymi stałymi ustalonymi przez producenta modułu;<br />
• następnie obliczana jest w module wartość:<br />
c2 = H(z),<br />
gdzie H(.) jest pewną funkcją jednokierunkową o jednorodnym rozkładzie<br />
prawdopodobieństwa dla kaŜdej z moŜliwych wartości tej funkcji („dla zmylenia<br />
przeciwnika”, który mógłby zastosować testy statystyczne do zbadania losowości<br />
generowanych w kaŜdym wykonaniu protokołu parametrów);<br />
• na zewnątrz przekazywana jest wartość:<br />
m2 = g c2 mod p.<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.165
Podsłuchujący protokół producent modułu odtwarza „losową” wartość c2 wykonując<br />
następujące działania:<br />
• oblicza:<br />
r = m1 a g b mod p,<br />
• a następnie wyznacza wartość:<br />
z1 = m1(r X ) -1 mod p,<br />
• dzięki czemu moŜe odtworzyć wartość:<br />
c2 = H(z1).<br />
Uzasadnienie:<br />
z1 = m1 / r X mod p = g c1 (m1 a g b ) –X mod p = g c1 ((g c1 ) a ) –X (g b ) –X mod p =<br />
= g c1 ((g X ) –c1 ) a (g X ) –b mod p = g c1 (Y –c1 ) a (Y) –b mod p = z<br />
W.Chocianowicz – Kryptologia – semestr zimowy 2008/2009<br />
str.166