17.11.2013 Views

m kn n 0k − ∑ =

m kn n 0k − ∑ =

m kn n 0k − ∑ =

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!