Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne (2) Szyfry wykładnicze Pohlig i Hellman 1978 r. Rivest, Shamir i Adleman metoda szyfrowania z kluczem jawnym DSA (Digital Signature Algorithm) mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Szyfry wykładnicze - idea Szyfry wykładnicze - idea Blok tekstu jawnego Szyfrowanie za pomocą potęgowania 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 Szyfrogram 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 1
Szyfr Diffiego - Hellmana Szyfr Diffiego - Hellmana Pierwszy algorytm asymetryczny Bezpieczeństwo: trudność obliczenia logarytmów dyskretnych w ciałach skończonych Zastosowanie: wymiana kluczy 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 Szyfr Diffiego - Hellmana Bob wybiera, losowo, dużą liczbę całkowitą y i oblicza: Y=g y mod n Bob oblicza: k =X y mod n klucz = g xy mod n Alicja wybiera, losowo, dużą liczbę całkowitą x i oblicza: X=g x mod n Alicja oblicza: k=y x mod n Szyfr Diffiego - Hellmana Szyfr Polinga-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 Bezpieczeństwo: trudność obliczenia logarytmów dyskretnych w ciałach skończonych Zastosowanie: szyfrowaniw danych 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 2
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) Powstał w 1977 Algorytm asymetryczny Algorytm blokowy Bezpieczeństwo: trudność faktoryzacji dużych liczb pierwszych Zastosowanie: wymiana kluczy sesji, podpis elektroniczny 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 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) 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 3
szyfrowanie tekst jawny 19 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 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 klucz szyfrujący: (5, 119) klucz deszyfrujący: (77, 119) 66 77 mod 119 = = 1,06..*10 138 reszta 19 szyfrogram 66 deszyfrowanie Bezpieczeństwo RSA 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) 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 4
Atak na algorytm RSA 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 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 Atak na algorytm RSA przy wspólnym module n 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) 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)). Jak grać (nie)bezpiecznie w pokera za pomocą sieci? 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... 5
Poker na odległość 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 E A D A E A (E B (M)) = E B (E A (M)) M 1 : dwójka trefl M 2 : trójka trefl... M 52 : as pik E B D B 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. Przekazywanie sekretów Po skończonej partii gracze udostępniają swoje klucze w celu sprawdzenia czy gra była uczciwa. 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) 6
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 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 ) Atak: 1. Próba znalezienia M, takiego że: H(M)=H(M ). 2. Atak metodą dnia urodzin. 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 Jednokierunkowa funkcja skrótu 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. M i funkcja jednokierunkowa h i h i-1 7
MD5 SHA Bezpieczny Algorytm Skrótu m i h i-1 klucz szyfrator h i Schemat algorytmu Daviesa-Meyera m i Schemat algorytmu wykorzystującego szyfr LOKI, z pojedynczym blokiem h i-1 m i klucz Schemat algorytmu Miyaguchi h i klucz szyfrator h i-1 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. 8
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. 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 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. (7, 1, 15, 10) 9
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 Dziękuję za uwagę 18*3 mod 20 = 14 = 1101 10