Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne (2) mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Szyfry wykładnicze Pohlig i Hellman 1978 r. Rivest, Shamir i Adleman metoda szyfrowania z kluczem jawnym DSA (Digital Signature Algorithm) Szyfry wykładnicze - idea Blok tekstu jawnego Szyfrowanie za pomocą potęgowania Szyfrogram 1
Szyfry wykładnicze - idea Założenia: M - wiadomość jawna (blok tekstu) C - wiadomość zaszyfrowana e, n - klucz przekształcenia szyfrującego Jak szyfrować: C = M e mod n Jak deszyfrować: M = C d mod n Szyfry wykładnicze Korzystając z algorytmu szybkiego potęgowania. C = fastexp (M,e,n) M = fastexp (C,d,n) Na podstawie Eulerowskiego uogólnienia twierdzenia Fermata można dowieść, że jeśli e i d spełniają: ed mod Φ(n) = 1 to M = C d mod n jest odwrotnością C = M e mod n i M, n liczby względnie pierwsze Twierdzenie Fermata uogólnienie Eulera Małe twierdzenia Fermata jeśli m jest liczbą pierwszą i a nie jest wielokrotnością m, to: a m-1 1 (mod m) Funkcja Eulera Φ(n) jest to liczba elementów zredukowanego zbioru reszt modulo n. Φ(n) = n-1 gdy n liczba pierwsza, Φ(n) = (p-1)(q-1) gdy n=pq, oraz p i q są liczbami pierwszymi Uogólnienie Eulera jeśli NWD(a,n)=1, to a Φ(n) mod n = 1 2
Szyfr Diffiego - Hellmana Pierwszy algorytm asymetryczny Bezpieczeństwo: trudność obliczenia logarytmów dyskretnych w ciałach skończonych Zastosowanie: wymiana kluczy Szyfr Diffiego - Hellmana Alicja i Bob uzgadniają dwie duże liczby całkowite n i g (n>g>1) n - liczba pierwsza (n-1)/2 - liczba pierwsza n - liczba o długości co najmniej 512 bitów Szyfr Diffiego - Hellmana Bob wybiera, losowo, dużą liczbę całkowitą y i oblicza: Y=g y mod n Alicja wybiera, losowo, dużą liczbę całkowitą x i oblicza: X=g x mod n 3
Szyfr Diffiego - Hellmana klucz = g xy mod n Bob oblicza: k =X y mod n Alicja oblicza: k=y x mod n Szyfr Diffiego - Hellmana 1. Wybieramy dwie liczby pierwsze n i g: n = 11, takie że (n-1)/2 liczba pierwsza g = 9, takie że n>g>1 2. Alicja wybiera liczbę x = 6 i oblicza: X = 9 6 mod 11 = 9 2. BOB wybiera liczbę y = 8 i oblicza: Y = 9 8 mod 11 = 3 3. Bob oblicza: k = 9 8 mod 11 = 3 3. Alicja oblicza: k = 3 6 mod 11 = 3 k = 9 6*8 mod 11 = 3 Szyfr Polinga-Hellmana Bezpieczeństwo: trudność obliczenia logarytmów dyskretnych w ciałach skończonych Zastosowanie: szyfrowaniw danych 4
Szyfr Polinga-Hellmana C = M e mod p M = C d mod p p duża liczba pierwsza, Φ(p) = p-1 Przykład: p = 11, Φ(p) = 10, wybieramy d = 7 stąd e = inv(7,10) = 3 tekst jawny M=5 szyfrowanie: C = M e mod p = 5 3 mod 11 = 4 deszyfrowanie: M = C d mod p = 4 7 mod 11 = 5 Tajne musi być zarówno e jak i d, bo Φ(p) jest powszechnie znane. Atak Logarytm dyskretny w GF(p) Atak z tekstem jawnym Mając parę (M, C) można wyznaczyć e i d ze wzoru e=log M Cw GF(p) O wartości p można wnioskować na podstawie wielkości bloków tekstu jawnego i szyfrogramu. Zatem p=2p +1 gdzie p duża liczba pierwsza T=exp(sgrt(ln(p)ln(ln(p)))) (za Adlemanem) RSA (Rivest, Shamir, Adleman) Powstał w 1977 Algorytm asymetryczny Algorytm blokowy Bezpieczeństwo: trudność faktoryzacji dużych liczb pierwszych Zastosowanie: wymiana kluczy sesji, podpis elektroniczny 5
RSA (Rivest, Shamir, Adleman) Założenia: M - wiadomość jawna (blok tekstu) C - wiadomość zaszyfrowana e, n - klucz przekształcenia szyfrującego d, n klucz przekształcenia deszyfrującego Jak szyfrować: Jak deszyfrować: C = M e mod n M = C d mod n RSA (Rivest, Shamir, Adleman) Wybieramy dwie duże liczby pierwsze p i q Obliczamy n = pq Losowo wybieramy klucz szyfrujący e, taki że e i (p-1)(q-1) są względnie pierwsze Obliczamy klucz deszyfrujący d: d = e -1 (mod (p-1)(q-1)) (rozszerzony algorytm Euklidesa) RSA (Rivest, Shamir, Adleman) p = 7 i q = 17 n = pq = 7 17 = 119 (p-1)(q-1) = (7-1)(17-1) = 96 e = 5 d = e -1 (mod (p-1)(q-1)) =? a -1 x (mod b) 1 = (a*x) mod b e -1 1 = (e*d) mod (p-1)(q-1) 1 = (5*d) mod 96 d = 77 6
RSA (Rivest, Shamir, Adleman) p = 7 i q = 17 n = pq = 7 17 = 119 (p-1)(q-1) = (7-1)(17-1) = 96 e = 5 d = e -1 (mod (p-1)(q-1)) = 5-1 (mod 96) = 77 klucz szyfrujący: (5, 119) klucz deszyfrujący: (77, 119) RSA (Rivest, Shamir, Adleman) szyfrowanie tekst jawny 19 C = M e mod n tekst jawny 19 19 5 mod 119 = =2.476.099 mod 119 = = 20.807 reszta 66 M = C d mod n 66 77 mod 119 = = 1,06..*10 138 reszta 19 szyfrogram 66 deszyfrowanie Bezpieczeństwo RSA Oparte na trudności rozkładu liczby n na czynniki p i q. Najszybszy znany algorytm wymaga wykonania T = exp(sqrt(ln(n)ln(ln(n)))) kroków, np. dla p i q 100 cyfrowych i 1 instr./µs czas rozwiązania rzędu miliardów lat. Ale: p i q liczby pierwsze długości około 100 cyfr p i q powinny różnić się długością o kilka cyfr (p-1) i (q-1) powinny mieć duże czynniki pierwsze p i q bezpieczne liczby pierwsze (czyli takie, że p=2p +1), gdzie p nieparzysta liczba pierwsza (wszystkie poza 2) 7
Bezpieczeństwo RSA Przy złym doborze klucza i wielokrotnym szyfrowaniu można uzyskać wiadomość jawną!!! Funkcje szyfrująca i deszyfrująca są wzajemnie odwrotne, czyli można ukryć wiadomość jak i skontrolować tożsamość nadawcy. Atak na algorytm RSA Scenariusz 1 Napastnik ma dane: wartość klucza publicznego (e, n) Napastnik szuka: p i q faktoryzacja liczby n Znając p i q d = e -1 ( mod (p-1)(q-1) ) Problem polega na tym, że bez znajomości czynników p i q nie widać żadnego sposobu znalezienia deszyfrującego wykładnika d. Nie wydaje się też, aby istniała metoda deszyfrowania inna niż poprzez wykładnik deszyfrujący. Słów nie widać i wydaje się używam dlatego, że powyższe stwierdzenia nie zostały udowodnione. Można więc jedynie powiedzieć, że złamanie szyfru RSA jest prawdopodobnie tak trudne jak rozkład n na czynniki pierwsze. Neal Koblitz Algebraiczne aspekty kryptografii 8
Atak na algorytm RSA Scenariusz 2 Napastnik ma dane: szyfrogram c Napastnik szuka: m = c d mod n Rozwiązanie: Wybrać losowe r takie, że r < n x = r e mod n r = x d mod n y = x c mod n t = r -1 mod n t = x -d mod n Wartość y przekazywana jest do Alicji by ją podpisała u = y d mod n Napastnik oblicza t u mod n = m Atak na algorytm RSA Scenariusz 3 Zadanie: Notariusz ma podpisać wiadomość N Rozwiązanie: Napastnik generuje liczbę X i oblicza: Y = X e mod n M = YN mod n Notariusz składa podpis pod wiadomością M C = M d mod n Napastnik oblicza: (M d mod n)x -1 = N d mod n Atak na algorytm RSA Scenariusz 4 Zadanie: Notariusz ma podpisać wiadomość M 3 Rozwiązanie: Napastnik generuje dwie wiadomości M 1 i M 2 M 3 M 1 M 2 (mod n) Notariusz podpisuje obie wiadomości Napastnik oblicza: M 3 d (mod n) = = M 1 d (mod n) M 2 d (mod n) 9
Atak na algorytm RSA przy wspólnym module n Scenariusz 5 Szukane: tekst jawny M Dane: klucze szyfrujące (e 1,n) i (e 2,n) C 1 = M e1 mod n C 2 = M e2 mod n Rozwiązanie: korzystając z algorytmu Euklidesa r e 1 + s e 2 = 1 (C 1-1 ) -r C 2 s = M mod n RSA RSA a identyfikacja Znając Φ(n) generujemy d i e wybieramy liczbę d względnie pierwszą z Φ(n) i obliczamy wg zależności e = inv(d, Φ(n)). Ponieważ e i d są symetryczne (bo M = C de mod n = M) możemy wybrać e i obliczyć d. Dlatego też RSA można używać do ukrywania treści i do identyfikacji nadawcy. Ufff... Jak grać (nie)bezpiecznie w pokera za pomocą sieci? 10
Poker na odległość Wymagania Grę rozpoczyna uczciwe rozdanie gracz zna karty w swojej ręce, nie zna kart innych graczy karty nie mogą się powtarzać dla każdego gracza musi być jednakowo prawdopodobne każde rozdanie Gracze w trakcie gry mogą żądać dodatkowych kart Poker na odległość E A D A E A (E B (M)) = E B (E A (M)) E B D B M 1 : dwójka trefl M 2 : trójka trefl... M 52 : as pik Poker na odległość Bob szyfruje 52 wiadomości C i = E B (M i ) gdzie i = 1, 2,...,52, miesza je i przekazuje Alicji. Alicja wybiera 5 kart i odsyła Bobowi. To ręka Baba. Alicja wybiera 5 kart i szyfruje je swoim kluczem C i = E A (C i ). Odsyła karty Bobowi. Bob deszyfruje otrzymane karty. Otrzymuje swoją rękę i zaszyfrowany zestaw kart dla Alicji odsyła je. Teraz Alicja może poznać swoje karty. Po skończonej partii gracze udostępniają swoje klucze w celu sprawdzenia czy gra była uczciwa. 11
Przekazywanie sekretów Przekazywanie sekretów Alicja wysyła do Boba liczbę n, taką że n=pq, gdzie p i q to nieparzyste liczby pierwsze Bab wybiera losowo x, takie że 0<x<n oraz NWD(x,n)=1. Alicji przesyła a = x 2 mod n Alicja oblicza pierwiastki a: x, n-x, y, n-y i jeden z nich przesyła Bobowi Gdy Bob otrzyma y lub n-y może wyznaczyć p i q. W przeciwnym wypadku nie odczyta nic. DSA Klucz publiczny p - liczba pierwsza (512-1024 bitów) q czynnik pierwszy liczby p-1 (160 bitów) g = h (p-1)/q mod p, gdzie h<p-1 i h (p-1)/q mod p>1 y = g x mod p Klucz prywatny x<q (160 bitów) 12
DSA Podpisywanie k liczba losowa mniejsza od q r (podpis) = (g k mod p) mod q s (podpis) = (k -1 (H(m)+xr)) mod q Weryfikacja w = s -1 mod q u 1 = (H(m) * w) mod q u 2 = (rw) mod q v = ((g u1 *y u2 ) mod p) mod q Jeśli v=r, to podpis jest poprawny Jednokierunkowe funkcje skrótu Argumentem jednokierunkowej funkcji skrótu H(M) jest wiadomość M o długości dowolnej. Wartością tej funkcji jest liczba h o ustalonej długości. h=h(m), przy czym h jest liczbą o długości m. mając dane M, łatwo jest obliczyć h mając dane h, trudno jest obliczyć M mając dane M, trudno jest znaleźć inną wiadomość M taką, że H(M)=H(M ) Jednokierunkowe funkcje skrótu Atak: 1. Próba znalezienia M, takiego że: H(M)=H(M ). 2. Atak metodą dnia urodzin. 13
Paradoks dnia urodzin Jak dużo osób powinno się znaleźć w jednym pomieszczeniu, żeby jedna ze zgromadzonych tam osób miała urodziny tego samego dnia co Ty? Odpowiedź brzmi 183 osoby. Paradoks dnia urodzin Jak dużo osób musi być, by co najmniej dwie miały urodziny tego samego dnia? Odpowiedź brzmi 23 osoby. Co daje 253 pary. Jednokierunkowa funkcja skrótu M i h i-1 funkcja jednokierunkowa h i 14
Jednokierunkowe funkcje skrótu MD5 SHA Bezpieczny Algorytm Skrótu Jednokierunkowe funkcje skrótu m i h i-1 klucz szyfrator h i Schemat algorytmu Daviesa-Meyera Jednokierunkowe funkcje skrótu m i Schemat algorytmu wykorzystującego szyfr LOKI, z pojedynczym blokiem klucz h i-1 szyfrator h i 15
Jednokierunkowe funkcje skrótu m i Schemat algorytmu Miyaguchi h i-1 klucz szyfrator h i Markle i Hellman Bezpieczeństwo wynika z trudności rozwiązania następującego zagadnienia: C dodatnia liczba całkowita, A=(a 1,..., a n ) wektor dodatnich liczb całkowitych. Należy znaleźć podzbiór elementów wektora A, których suma wynosi C. 16
Należy znaleźć M=(m 1,..., m n ), który spełnia równanie: C=AM lub: n C=Σ a i m i i=1 Co to znaczy, że problem plecaka jest łatwy? A=(1, 3, 4, 9, 15, 25) A=(2, 3, 6, 13, 27, 52) C=70 M=(1,1,0,1,0,1) Klucz tajny ciąg wag dla problemu plecaka superrosnącego; Klucz jawny ciąg wag dla zwykłego problemu plecakowego; Arytmetyka modularna. 17
1. Bierzemy ciąg dla plecaka superrosnącego, np. (1,3,5,10). 2. Mnożymy modulo m wszystkie jego elementy i przez n. m powinien być liczbą większą od sumy wszystkich liczb ciągu, np. 20. Mnożnik nie powinien mieć wspólnych czynników z żadną z liczb w ciągu, np. 7. 1*7 mod 20 = 7 3*7 mod 20 = 1 5*7 mod 20 = 15 10*7 mod 20 = 10 (7, 1, 15, 10) 1. Podzielić ciąg binarny na bloki o długości równej liczbie elementów w ciągu plecaka. 2. Obliczyć całkowite wagi plecaków. 18
Klucz jawny = (7, 1, 15, 10) Wiadomość = 1101 1101 odpowiada 7+1+10=18 Kryptogram: 18 Odbiorca zna: plecak superrosnący, oraz wartości n i m. 1. Wyznaczyć n -1. 2. Mnożymy każdą wartość szyfrogramu przez n -1. Klucz tajny = (1, 3, 5, 10) m=20, n=7, n -1 =3 Kryptogram: 18 18*3 mod 20 = 14 = 1101 19
Dziękuję za uwagę 20