KRYPTOGRAFIA Z KLUCZEM PUBLICZNYM (Ellis 1970)

Podobne dokumenty
Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Copyright by K. Trybicka-Francik 1

Copyright by K. Trybicka-Francik 1

Zarys algorytmów kryptograficznych

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Algorytmy asymetryczne

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 9

Wybrane zagadnienia teorii liczb

Spis treści. Przedmowa... 9

WSIZ Copernicus we Wrocławiu

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 5

Wykład IV. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 6a

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 1

Bezpieczeństwo systemów komputerowych

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.)

Metoda Lenstry-Shora faktoryzacji dużych liczb całkowitych

Przykładowe zadania z teorii liczb

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA

Kryptologia przykład metody RSA

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Bezpieczeństwo w sieci I. a raczej: zabezpieczenia wiarygodnosć, uwierzytelnianie itp.

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Kryptografia systemy z kluczem publicznym. Kryptografia systemy z kluczem publicznym

Algorytmy w teorii liczb

Bezpieczeństwo systemów komputerowych

2 Kryptografia: algorytmy symetryczne

Parametry systemów klucza publicznego

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup.

Wykład VIII. Systemy kryptograficzne Kierunek Matematyka - semestr IV. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Szyfrowanie RSA (Podróż do krainy kryptografii)

Informatyka kwantowa. Zaproszenie do fizyki. Zakład Optyki Nieliniowej. wykład z cyklu. Ryszard Tanaś. mailto:tanas@kielich.amu.edu.

Wprowadzenie ciag dalszy

Kongruencje twierdzenie Wilsona

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

Szyfrowanie informacji

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Laboratorium nr 5 Podpis elektroniczny i certyfikaty

Pierwiastki pierwotne, logarytmy dyskretne

Elementy teorii liczb i kryptografii Elements of Number Theory and Cryptography. Matematyka Poziom kwalifikacji: II stopnia

Bezpieczeństwo danych, zabezpieczanie safety, security

Matematyka dyskretna. Wykład 11: Kryptografia z kluczem publicznym. Gniewomir Sarbicki

Wprowadzenie do technologii VPN

Matematyka dyskretna

Bezpieczeństwo w Internecie

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

Twierdzenie Eulera. Kongruencje wykład 6. Twierdzenie Eulera

Matematyka dyskretna

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Podstawy Secure Sockets Layer

Laboratorium nr 3 Podpis elektroniczny i certyfikaty

KRYPTOGRAFIA ASYMETRYCZNA I JEJ ZASTOSOWANIE

Algorytmy i struktury danych. Wykład 4

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Przewodnik użytkownika

Zastosowania informatyki w gospodarce Wykład 5

Systemy Mobilne i Bezprzewodowe laboratorium 12. Bezpieczeństwo i prywatność

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kryptografia publiczna (asymetryczna) Szyfrowanie publiczne (asym) Problem klucza publicznego. Podpisujemy cyfrowo. Jak zweryfikować klucz publiczny?

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

VIII Festiwal Nauki i Sztuki. Wydziale Fizyki UAM

Luty 2001 Algorytmy (7) 2000/2001

Kryptografia szyfrowanie i zabezpieczanie danych

Elementy teorii liczb. Matematyka dyskretna

Marcin Szeliga Dane

Plan całości wykładu. Ochrona informacji 1

WEP: przykład statystycznego ataku na źle zaprojektowany algorytm szyfrowania

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Elementy kryptografii Twierdzenie Halla. Pozostałe tematy. Barbara Przebieracz B. Przebieracz Pozostałe tematy

KONGRUENCJE. 1. a a (mod m) a b (mod m) b a (mod m) a b (mod m) b c (mod m) a c (mod m) Zatem relacja kongruencji jest relacją równoważności.

Bezpieczeństwo danych i systemów informatycznych. Wykład 5

Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe. kradzieŝy! Jak się przed nią bronić?

Równania wielomianowe

Zestaw 2. Definicje i oznaczenia. inne grupy V 4 grupa czwórkowa Kleina D n grupa dihedralna S n grupa symetryczna A n grupa alternująca.

Kryptografia. Wykład z podstaw klasycznej kryptografii z elementami kryptografii kwantowej. dla studentów IV roku. Ryszard Tanaś

PRZEWODNIK PO PRZEDMIOCIE

Seminarium Ochrony Danych

Matematyka dyskretna

Opis efektów kształcenia dla modułu zajęć

Kryptografia kwantowa

Plan wykładu. Ochrona zasobów w systemach gospodarki elektronicznej. Usługi ochrony. Klasyfikacja zagrożeń. Wykład: Systemy gospodarki elektronicznej

Potencjalne ataki Bezpieczeństwo

KUS - KONFIGURACJA URZĄDZEŃ SIECIOWYCH - E.13 ZABEZPIECZANIE DOSTĘPU DO SYSTEMÓW OPERACYJNYCH KOMPUTERÓW PRACUJĄCYCH W SIECI.

Transkrypt:

1 [Wybrane materiały do ćwiczeń 3-7 z podstaw klasycznej kryptografii z elementami kryptografii kwantowej dla studentów IV roku (semestr letni 2008)] KRYPTOGRAFIA Z KLUCZEM PUBLICZNYM (Ellis 1970) (ang. public key cryptography, PKC) szyfry asymetryczne (szyfry dwukluczowe): - klucz prosty (publiczny, jawny) - klucz odwrotny (prywatny, tajny) znając jeden klucz nie można praktycznie odkryć drugiego klucza w dostatecznie długim czasie pracy komputera o realnej mocy bez dodatkowych informacji, nie zawsze można odwrócić operację szyfrowania cofając kolejne czynności: f(in) = out, ale f 1 (out) =? np. y = 17 mod 3 => y = 2 (wynik jednoznaczny) x mod 3 = 2 => x = 2, 5, 8, 11,14, 17, 20,... (wynik niejednoznaczny)

Najpopularniejsze algorytmy kryptograficzne 2 1. DES (Data Encryption Standard) - symetryczny - stosowany do (de)kryptażu - amerykański i międzynarodowy standardowy alg. kryptograficzny - przyjęty także przez armię USA do szyfrowania informacji nieutajnionej, ale ważnej 2. RSA (algorytm Rivesta-Shamira-Adlemana) - asymetryczny - stosowany do (de)kryptażu i do podpisów cyfrowych 3. DSA (Digital Signature Algorithm) - asymetryczny - stosowany do podpisów cyfrowych - zatwierdzony w USA jako standard podpisu cyfrowego (Digital Signature Standard - DSS)...zatem 2 spośród 3 najpopularniejszych algorytmów to algorytmy PKC

3 Najpopularniejsze algorytmy z kluczem publ. do szyfrowania [algorytm problem obliczeniowy o znaczeniu kryptograficznym] 1. alg. RSA problem faktoryzacji dużych liczb 2. alg. Rabina problem faktoryzacji dużych liczb, problem znalezienia pierwiastków kwadratowych modulo n / P 3. alg. ElGamala problem znalezienia dyskretnych logarytmów, problem Diffiego-Hellmana 4. alg. McEliece a problem liniowego kodu dekodującego 5. alg. Merkle a-hellmana problem plecakowy sumy podzbiorów (knapsack subset sum problem) 6. alg. Chora-Rivesta problem plecakowy 7. alg. Goldwassera-Micaliego problem znalezienia reszt kwadratowych (quadratic residuosity problem) 8. alg. Bluma-Goldwassera problem faktoryzacji dużych liczb i problem Rabina

Liczba kluczy problem wielkiej liczby kluczy w kryptografii z kluczem symetrycznym Ile potrzeba kluczy dla N korespondentów jeśli każdy z każdym chce wymieniać zaszyfrowane dane algorytmem symetrycznym? 4 n sym (N) = ( N 2 ) = N(N 1) 2 Ile potrzeba kluczy dla sześciu, a ile dla 1 miliona korespondentów? n sym (6) = 15 n sym (10 6 ) 1012 2 A jaka jest liczba kluczy dla N korespondentów korzystających z algorytmów asymetrycznych? n asym (N) = 2N

FAQ: Jak zapisać liczbę w systemie binarnym? 5 a = 23 = (?) 2 a div 2 a mod 2 ------------------ 23 1 11 1 5 1 2 0 1 1 a = (10111) 2 liczba jest tworzona od końca Mathematica: BaseForm[23,2] (10111) 2 Matlab: dec2bin(23,2) (10111) 2 a div b = [a/b] = Int (a/b) iloraz całkowity z dzielenia a przez b

Potęgowanie modularne 6 b = a k mod n =? jeśli n I; a, k Z n Algorytm: if k = 0 then b = 1 else begin A = a przedstaw k w postaci binarnej k = j i=0 k i2 i b = A k 0 for i = 1 to j do begin A = A 2 mod n b = b A k i mod n end end return(b) Mathematica: b=powermod[a,k,n]

Przykłady potęgowania modularnego 7 Zad: 5 596 mod 1234 =? a = 5, n = 1234 k = 596 = 2 9 + 2 6 + 2 4 + 2 2 = (1001010100) 2 i 0 1 2 3 4 5 6 7 8 9 k_i 0 0 1 0 1 0 1 0 0 1 A 5 25 625 681 1011 369 421 779 947 925 (mod n) b 1 1 625 625 67 67 1059 1059 1059 1013 (mod n) Odp: 1013 Mathematica: PowerMod[5,596,1234] 1013 Zad: 3 8 mod 11 =? 8 = 2 3 = (1000) 2 i 0 1 2 3 k_i 0 0 0 1 A 3 9 4 5 (mod n) b 1 1 1 5 (mod n) Odp: 5 Mathematica: PowerMod[3,8,11] 5

Zad: 3 18 mod 11 =? 8 18 = 2 4 + 2 1 = (10010) 2 i 0 1 2 3 4 k i 0 1 0 0 1 A 3 3 2 = 9 9 2 4 4 2 5 5 2 3 (mod 11) b 1 9 9 9 9 3 5 (mod 11) Odp: 5 Mathematica: PowerMod[3,18,11] 5 czyli 3 8 mod 11 = 3 18 mod 11 Małe tw. Fermata dlaczego tak jest? Jeśli a Z p [czyli NWD(a, p) = 1], gdzie p P, to a p 1 1 (mod p) Uwaga: tj. szczególny przypadek tw. Eulera dla n = p, wówczas φ(p) = p 1. Wniosek: a p (mod p) =? Jeśli a Z p to a p a (mod p)

Funkcja Eulera φ: 9 1. Jeśli p P (tj. p jest liczbą pierwszą > 1) to φ(p) = p 1 2. Jeśli NWD(m, n) = 1 to φ(mn) = φ(m)φ(n) 3. Dla dowolnej liczby n = k j=1 pe j j, gdzie p j P i i j p i p j zachodzi φ(n) = n k ) (1 1pj np. φ(9) = 9(1 1/3) = 6. Mathematica: EulerPhi[9] 6 Tw. Eulera j=1 Jeśli a Z n, gdzie 1 < n I, to a φ(n) 1 (mod n) Przykłady: 1. Niech a = 3, n = 11 wtedy φ(11) = 10 3 10 = 59049 1 (mod 11) 2. Niech a = 2, n = 21 wtedy φ(21) = φ(3)φ(7) = 2 6 = 12 a φ(n) = 2 12 = 4096 1 (mod 21)

Algorytm Rivesta-Shamira-Adlemana (RSA) (1978) 10 I. generacja kluczy RSA 1. Bolek wybiera dwie duże liczby pierwsze p q 2. liczy n = pq oraz φ = (p 1)(q 1) 3. wybiera losowo liczbę całkowitą e (1 < e < φ) taką, że NWD(e, φ) = 1 4. korzystając z algorytmu Euklidesa znajduje d (1 < d < φ) takie, że ed 1 mod φ 5. zatem klucz publiczny to (n, e) klucz prywatny to d terminologia: n moduł (ang. modulus) e wykładnik kryptażu = wykładnik szyfrujący (ang. encryption exponent) d wykładnik dekryptażu = w. deszyfrujący (ang. decryption exponent)

II. kryptaż RSA 11 Alicja szyfruje kluczem publicznym (n, e) 1. zamienia tekst jawny na t. prosty reprezentowany przez liczbę całkowitą m 0, n 1 2. liczy c = m e mod n 3. przesyła szyfrogram c do Bolka III. dekryptaż RSA Bolek używa klucza prywatnego d, aby policzyć m = c d mod n FAQ: Czy można używać algorytmu RSA w programach komercyjnych bez uiszczania tantiem? Tak. Patent amerykański wygasł 6.IX.2000. ciekawostka Od niedawna wiadomo, że już w 1973 ten algorytm opracował Cocks.

Przykład 1: I. generacja kluczy RSA niech: p = 2 357, q = 2 551, e = 3 674 911 1. policzmy n = pq = 6012707 φ = (p 1)(q 1) = 6007800 2. czy NWD(φ, e) = 1? OK 3. policzmy d stosując alg. Euklidesa d = 422 191 4. czy ed 1 mod φ? OK 5. zatem lub klucz publiczny (n, e) = (6 012 707, 3 674 911) klucz prywatny d = 422 191 klucz publiczny (n, e ) = (6 012 707, 422 191 ) klucz prywatny d = 3 674 911 12

II. kryptaż RSA 13 1. chcemy zaszyfrować wiadomość: ADAM 2. skorzystajmy z naszego jawnego alfabetu cyfrowego: 01 A 02 Ą 03 B 04 C 05 Ć 06 D 07 E 08 Ę 09 F 10 G 11 H 12 I 13 J 14 K 15 L 16 Ł 17 M 18 N 19 Ń 20 O 21 Ó 22 P 23 q 24 R 25 S 26 Ś 27 T 28 U 29 v 30 W 31 X 32 Y 33 Z 34 Ż 35 Ź 36 _ 37-38? 39, 40. 3. zatem tekst prosty to m = (01, 06, 01, 17) = 1060117 4. policzmy szyfrogram korzystając z klucza jawnego (n, e): c = m e mod n = 1060117 3674911 mod 6012707 = 5929045 III. dekryptaż RSA policzmy m = c d mod n gdzie c = 5929045, d = 422191 (tj. klucz prywatny Bolka), n = 6012707 zatem otrzymujemy m = 1060117 = (01, 06, 01, 17) = ADAM

Przykład 2: I. generacja kluczy RSA niech: p=11, q=17, e=13 1. policzmy n = pq = 11 17 = 187 φ = (p 1)(q 1) = 10 16 = 160 2. czy NWD(φ, e) = 1? OK 3. policzmy d stosując alg. Euklidesa 14 q φ e y 2 y 1 --------------------------- - 160 13 0 1 12 13 4 1-12 3 4 1-12 37.. 0 37. d = 37 4. test: de = 13 37 = 481 1 (mod 160)

5. zatem 15 klucz publiczny (n, e) = (187, 13) klucz prywatny d = 37 II. kryptaż RSA 1. wybierzmy tekst jawny: AM => tekst prosty: m = (01, 17) = 117 4. policzmy szyfrogram korzystając z klucza jawnego (n, e): c = m e mod n = 117 13 mod 187 =? 13 = (1101) 2 i 0 1 2 3 e i 1 0 1 1 A 2 117 117 2 38 38 2 135 135 2 86 (mod 187) c 117 117 117*135 87 87*86 2 (mod 187) zatem szyfrogram to c = 2 Mathematica: PowerMod[117, 13, 187] 2

III. dekryptaż RSA 16 policzmy m = c d mod n = 2 37 mod 187 d = 37 = (100101) 2 i 0 1 2 3 4 5 d i 1 0 1 0 0 1 A 2 2 4 16 16 2 69 69 2 86 86 2 103 (mod 187) m 2 2 32 32 32 32*103 117 (mod 187) zatem odszyfrowana wiadomość to m = 117 = (01, 17) = AM Przykład 3: Korzystając z kluczy RSA policzonych w przykładzie 1, proszę zaszyfrować i odszyfrować w blokach 6-cyfrowych tekst widzę ciemność? Rozw. klucze RSA: (n, e) = (6012707, 3674911), d = 422191 wyznaczmy tekst prosty W I D Z Ę _ C I E M N O Ś Ć? 30 12 06 33 08 36 04 12 07 17 18 20 26 05 38

grupujemy ten tekst w bloki po 6 cyfr m = (301206, 330836, 041207, 171820, 260538) szyfrogram to c = (1304358, 4071483, 5778425, 3102323, 1271202) gdyż 301206 3674911 mod 6012707 = 1304358 itd. Mathematica: c = Table[PowerMod[m[[i]], e, n], i, 1, 5] dekryptaż M = (301206, 330836, 041207, 171820, 260538) gdyż 1304358 422191 mod 6012707 = 301206 itd. Mathematica: M = Table[PowerMod[c[[i]], d, n], i, 1, 5] test M = m. OK 17

Oczywiste metody ataku Ewy na kryptosystem RSA 18 1. faktoryzacja n: Ewa znając n = pq może policzyć φ = (p 1)(q 1) i następnie policzyć prywatny klucz d Bolka 2. wyznaczenie φ bez konieczności faktoryzacji n: Ewa, znając e i φ może wyznaczyć d = e 1 mod φ, a także może wyznaczyć (p, q) z tożsamości: x = n φ + 1, y 2 = x 2 4n q = (x y)/2, gdzie x = p + q, y = p q. Dlaczego algorytm RSA wydaje się bezpieczny dla dużych liczb? Nie znamy efektywnych alg. klasycznych znajdowania czynników pierwszych (czyli faktoryzacji) dużych liczb. Hipoteza RSA (1978): Każda ogólna metoda łamania kryptosystemu RSA umożliwi znalezienie efektywnego algorytmu faktoryzacji. Do tej pory nikt nie udowodnił tej hipotezy.

Hybrydowy protokół kryptograficzny 19 stosowany np. do dystrybucji klucza symetrycznego z wykorzystaniem klucza asymetrycznego K - klucz publiczny Bolka P - klucz prywatny Bolka S - klucz sesyjny Alicji (np. do protokołu Vernama) m - wiadomość Alicji Algorytm: 1. Alicja zdobywa klucz K i tworzy losowo klucz S 2. Alicja szyfruje: i wysyła te szyfrogramy do Bolka 3. Bolek deszyfruje: S(m) oraz K(S) P [K(S)] = S S 1 [S(m)] = m

Zaufane centrum dystrybucji kluczy (ZCDK) które rozsyła tajnym kanałem klucz X i każdemu z korespondentów 20 Trzyetapowy protokół Shamira do przesyłania szyfrogramów bez pośrednictwa ZCDK, ale niestety bez uwierzytelnienia (tj. bez gwarancji autentyczności) 1. Alicja wybiera swój tajny klucz X A, a Bolek klucz X B 2. Alicja szyfruje wiadomość swoim kluczem X A i wysyła otrzymany kryptogram do Bolka 3. Bolek szyfruje kluczem X B odebrany kryptogram i odsyła go do Alicji 4. Alicja odszyfrowuje kluczem X 1 A ten kryptogram i odsyła go do Bolka 5. Bolek ostatecznie odszyfrowuje wiadomość kluczem X 1 B

Uzasadnienie protokołu Shamira WARUNEK KONIECZNY: Alicja i Bolek stosują szyfr przemienny, tj. 21 X A [X B (m)] = X B [X A (m)] ZATEM C A = X A (m) C AB = X B (C A ) C B = X 1 A (C AB) m = X 1 B (C B)

22 Przykład protokołu Shamira z wykorzystaniem algorytmu RSA tekst prosty: m = 12 Alicja wybiera: q A = 13, p A = 17, e A = 95 Bolek wybiera: q B = 11, p B = 19, e B = 89 0.1 Alicja liczy n A = q A p A = 221 φ A = (q A 1)(p A 1) = 192 q φ A e A y 2 y 1 --------------------------- - 192 95 0 1 2 95 2 1-2 47 2 1-2 95 2 1 0 95. zatem e A = d A = 95

0.2 Bolek liczy n B = q B p B = 209 φ B = (q B 1)(p B 1) = 180 23 q φ B e B y 2 y 1 --------------------------- - 180 89 0 1 2 89 2 1-2 44 2 1-2 89 2 1 0 89. zatem e B = d B = 89 0.3 Alicja i Bolek publikują w internecie: n A = 221 i n B = 209 n = n A n B = 46189

1. Alicja szyfruje wiadomość m kluczem e A : 24 C A = m e A mod n = 42340 2. Bolek szyfruje C A kluczem e B : test : m = C e A A mod n = 12 C AB = C e B A mod n = 35333 3. Alicja deszyfruje C AB kluczem d A = e A : C B = C e A AB mod n = 31472 4. Bolek ostatecznie odszyfrowuje wiadomość m kluczem d B = e B : m = C e B B mod n = 12

Kryptograficzna kontrola zbrojeń 25 umowa między USA i Rosją w kwestii kontroli zbrojeń: 1. moc próbnych eksplozji jądrowych ma być mniejsza niż 150 kt 2. można zainstalować sejsmometry na poligonach przeciwnika 3. wyniki pomiarów można przesyłać drogą radiową do kraju macierzystego PROBLEMY: Jak przesłać sygnały z gwarancją autentyczności? Jak uchronić się przed przemytem dodatkowych informacji? ROZWIAZANIE: stosujemy szyfr asymetryczny (dwukluczowy) przeciwnik dostaje klucz do odczytu, ale nie ma klucza do zapisu

Zadania kryptografii 26 1. poufność wiadomości (ang. message confidentiality) czy nikt nie podsłuchuje? tradycyjne rozwiązania: zaklejona koperta, zamknięte opakowanie 2. uwierzytelnianie wiadomości (ang. message authentication) z kim się kontaktuję? zapewnienie autentyczności depeszy Bolek odbierając wiadomość od Alicji chce mieć pewność, że to właśnie ona jest nadawcą tej informacji, tzn. że Ewa nie podaje się za Alicję. tradycyjne rozwiązania: dowód osobisty, paszport, prawo jazdy

3. integralność wiadomości (ang. message integrity) czy zmodyfikowano wiadomość? Bolek odbierając wiadomość od Alicji chce mieć pewność, że wiadomość podczas transmisji nie została zmieniona (przez Ewę lub usterki tech.). tradycyjne rozwiązania: plomba, pieczęć 4. niezaprzeczalność wiadomości (ang. message non-repudiation) kto wysłał / otrzymał wiadomość? pokwitowanie cyfrowe Dowód na to, że Alicja wysłała depeszę i że Bolek ją odebrał: (a) Bolek odbierając wiadomość od Alicji chce mieć pewność, że Alicja nie wyprze się, iż była nadawcą tej wiadomości. (b) Alicja chce mieć pewność, że Bolek po odbiorze jej wiadomości nie wyprze się, iż już odebrał tę wiadomość. tradycyjne rozwiązania: podpis z datą 27

Prosty protokół symetryczny uwierzytelniania wiadomości 28 1. Alicja i Bolek mają ten sam indentyfikator cyfrowy 2. Alicja szyfruje tekst i identyfikator 3. Bolek odszyfrowuje kryptogram i porównuje (odszyfrowany) identyfikator Alicji ze swoim Uwaga: Należy tak szyfrować, aby efekt doczepki był rozłożony równomiernie w całym tekście. Postulaty bezpiecznego szyfrowania 1. konfuzja: statystyka kryptogramu nie powinna zależeć od statystyki tekstu prostego 2. dyfuzja: jeden znak tekstu prostego powinien wpływać na wiele znaków kryptogramu

29 Prosty protokół asymetryczny uwierzytelniania wiadomości uwierzytelnienie wiadomości za pomocą algorytmów z kluczem publicznym Jak zagwarantować autentyczność wiadomości/podpisu? WSKAZÓWKA Szyfrować można także kluczem prywatnym X i i deszyfrować kluczem publicznym K i PROTOKÓŁ 1. Alicja szyfruje wiadomość kluczem publicznym Bolka K B, a potem (część lub całość) swoim kluczem prywatnym X A 2. Bolek deszyfruje kryptogram kluczem publicznym Alicji K A, a potem swoim kluczem prywatnym X B

Generatory i grupy cykliczne Grupa multiplikatywna dla Z n : 30 Z n = {x Z n : NWD (x, n) = 1} tj. zbiór elementów odwracalnych modulo n. Jeśli p P to Z p = {x : 1 x p 1} Jeśli g Z n x Z n i x g i (mod n) to g nazywa się generatorem Z n (lub generatorem modulo n, lub też elementem pierwotnym względem n), a taką grupę Z n nazywa się grupą cykliczną

Rzad elementu i moc zbioru 31 k = ord(x) rząd elementu x Z n [ang. (multiplicative) order of x] tj. najmniejsza liczba całkowita k spełniająca warunek 1 = x k mod n Mathematica: MultiplicativeOrder[x,n] Zn moc zbioru Zn (ang. order of Zn) tj. liczba elementów zbioru Zn φ(n) funkcja Eulera φ (ang. Euler φ function, Euler totient function) tj. ilość liczb całkowitych x Zn takich, że NWD(x, n) = 1 Mathematica: EulerPhi[n] Z n = φ(n)

Własności 32 Z n jest grupą cykliczną n = 2, 4, p k lub 2p k, gdzie p P i k 1. i j (mod (p 1)) g i g j Jeśli g jest generatorem Z p to g i też jest generatorem Z p o ile NWD(i, p 1) = 1

Przykład dla n=21 Z 21 =? Z 21 = {1, 2, _, 4, 5, _, _, 8, 10, 11, _13, _, _, 16, 17, _, 19, 20} 33 Z 21 =? Z 21 = φ(21) = φ(3)φ(7) = 2 6 = 12 Mathematica: EulerPhi[21] 12 k = ord(x) =? np. k = ord(2) = 6 dlaczego? gdyż 2 6 mod 21 = 64 3 21 = 1 Mathematica: MultiplicativeOrder[2, 21] 6 x Z 21 1 2 4 5 8 10 11 13 16 17 19 20 k = ord(x) 1 6 3 6 2 6 6 2 3 6 6 2

Przykłady grup cyklicznych i ich generatorów 1. Czy grupa Z21 jest cykliczna? Nie, gdyż n = 21 / {2, 4, p k, 2p k }. 2. Czy grupa Z25 jest cykliczna? Tak, gdyż n = 25 = 5 2 {p k }. 3. Jakie są generatory grupy Z5? 34 k = 1 2 3 4 2^k (mod 5) = 2 4 3 1 3^k (mod 5) = 3 4 2 1 4^k (mod 5) = 4 1 4 1 2 i 3 są generatorami, ale 4 nie jest generatorem. 4. Jakie są generatory grupy Z6? Z6 = φ(6) = φ(2)φ(3) = 2 Z6 = {1, 5} = {5 0, 5 1 } 5 jest generatorem.

5. Czy istnieją generatory Z 8? Z 8 = {1, 3, 5, 7}, test: 3 k 1, 3, 5 k 1, 5 zatem Z 8 nie jest cykliczna (tj. nie ma generatorów). 6. Jakie są generatory Z11? Jaki jest rząd elementów Z11? k = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 2^k mod 11 = 2, 4, 8, 5, 10, 9, 7, 3, 6, 1 3^k mod 11 = 3, 9, 5, 4, 1, 3, 9, 5, 4, 1 4^k mod 11 = 4, 5, 9, 3, 1, 4, 5, 9, 3, 1 5^k mod 11 = 5, 3, 4, 9, 1, 5, 3, 4, 9, 1 6^k mod 11 = 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 7^k mod 11 = 7, 5, 2, 3, 10, 4, 6, 9, 8, 1 8^k mod 11 = 8, 9, 6, 4, 10, 3, 2, 5, 7, 1 9^k mod 11 = 9, 4, 3, 5, 1, 9, 4, 3, 5, 1 10^k mod 11 = 10, 1, 10, 1, 10, 1, 10, 1, 10, 1 program w języku Mathematica: n=11;do[print[table[mod[g^k,n],{k,1,n-1}]],{g,2,n-1}] Widać, że 2, 6, 7 i 8 są generatorami grupy Z 11; ord(x)=10 gdy x=2,6,7,8; ord(x)=5 gdy x=3,4,5,9; ord(10)=2 35

Algorytm wymiany kluczy Diffiego-Hellmana (1976) 36 (ang. key exchange/distribution) PROBLEM: Czy Alicja i Bolek mogą ustalić wspólny klucz tajny wymieniejąc informacje przez kanał niezabezpieczony (publiczny)? 1. Alicja i Bolek uzgadniają publicznie dużą liczbę p P i g takie, że 1 < g < p 1 (zalecane jest, aby g było generatorem Zp) 2. Alicja wybiera losowo 1 x A < p 1 i wysyła Bolkowi liczbę y A = g x A mod p 3. Analogicznie, Bolek wybiera losowo 1 x B < p 1 i wysyła Alicji y B = g x B mod p 4. Alicja liczy k A = y x A B 5. Bolek liczy k B = y x B A mod p mod p ZATEM k A = k B = g x Ax B mod p uwaga: algorytm działa także wtedy, gdy p nie jest liczbą pierwszą

Przykład algorytmu Diffiego-Hellmana 37 1. Niech p = 19 i g = 2 2. Alicja wybiera losowo x A = 5 i wysyła Bolkowi y A = g x A mod p y A = 2 5 mod 19 = 13 3. Bolek wybiera losowo x B = 6 i wysyła Alicji y B = g x B mod p y B = 2 6 mod 19 = 7 4. Alicja liczy k A = y x A B mod p k A = 7 5 mod 19 = 11 5. Bolek liczy k B = y x B A mod p k B = 13 6 mod 19 = 11 zatem tajny klucz to k A = k B = 11. uwagi: od niedawna wiadomo, że ten alg. wcześniej opracował Williamson (1976) algorytm nie nadaje się (de)kryptażu

Algorytm Diffiego-Hellmana dla trzech korespondentów 38 PROBLEM: Jak Alicja, Bolek i Celina mogą ustalić wspólny klucz tajny? 1. Wszyscy korespondenci uzgadniają publicznie dwie duże liczby p i g 2. Alicja wybiera losowo x A i wysyła Bolkowi y A = g x A mod p 3. Bolek wybiera losowo x B i wysyła Celinie y B = g x B mod p 4. Celina wybiera losowo x C i wysyła Alicji y C = g x C mod p 5. Alicja wysyła Bolkowi z A = y x A C 6. Bolek wysyła Celinie z B = y x B A 7. Celina wysyła Alicji z C = y x C B 8. Alicja liczy k A = z x A C 9. Bolek liczy k B = z x B A 10. Celina liczy k C = z x C B mod p mod p mod p mod p mod p mod p ZATEM k A = k B = k C gdyż z x A C yx Cx A B g x Ax B x C (mod p) itd.

... lub trochę prościej 39 1. Wszyscy korespondenci uzgadniają publicznie dwie duże liczby p i g 2. Alicja wybiera losowo x A i wysyła Bolkowi y A = g x A mod p 3. Bolek wybiera losowo x B i wysyła Celinie y B = g x B mod p z B = y x B A mod p 4. Celina wybiera losowo x C i wyznacza klucz k C = z x C B oraz wysyła Alicji y C = g x C mod p z C = y x C B mod p 5. Alicja liczy klucz k A = z x A C z A = y x A C mod p 6. Bolek liczy klucz k B = z x B A mod p oraz wysyła Bolkowi mod p mod p założenia: p P, g jest generatorem Z p oraz x A, x B, x C < p 1.

Reszty i niereszty kwadratowe 40 x pierwiastek kwadratowy modulo n x 2 a (mod n), gdzie a, x Z n a reszta kwadratowa (ang. quadratic residue) modulo n = kwadrat modulo n Jeśli nie ma takiego x, że powyższy warunek jest spełniony to a nazywa się nieresztą kwadratową (ang. quadratic non-residue) modulo n Q n + Q n = Z n Q n zbiór reszt kwadratowych modulo n Q n zbiór niereszt kwadratowych (dopełnienie zbioru reszt) modulo n Jeśli p P to Jeśli p, q P to Q p = Q p = 1 2 (p 1) Z p = p 1 Q pq = Q p Q q = 1 4 (p 1)(q 1), Q pq = 3 Q pq Z pq = (p 1)(q 1)

Przykład: Q 5 =? 1 2 = 1 1 (mod 5) 2 2 = 4 4 (mod 5) 3 2 = 9 4 (mod 5) 4 2 = 16 1 (mod 5) 41 Q 5 = {1, 4} ale nie ma liczb x Z5 spełniających: x 2 2 (mod 5) x 2 3 (mod 5) Q 5 = {2, 3} widać, że Z5 = Q 5 + Q 5, Q 5 = Q 5 = (p 1)/2 = 2

Symbol Legendre a L(x, p) = ( ) x p = 0 gdy x 0 (mod p) 1 gdy x Q p 1 gdy x Q p gdzie x I, p P (P to zbiór liczb pierwszych > 2) Własności: 1. L(x, p) x (p 1)/2 mod p 2. L(x 1 x 2, p) = L(x 1, p)l(x 2, p) 3. L(0, p) = 0 jeśli p P, co wynika ze wzoru 1. 4. często definiuje się dodatkowo, że L(0, 1) = 1 (co jest zgodne ze wzorem 1) Symbol Jacobiego uogólnienie symbolu Legendre a J(x, m) = k [L(x, p j )] e j j=1 lub ( x m) = k ( x jeśli m = k j=1 pe j j, gdzie p j P ; NWD(p i, p j ) = 1 dla i j; x, e j I. j=1 p j ) ej 42

Własności: J(x, p) = L(x, p) jeśli p P J(x, p 1 p 2 ) = L(x, p 1 )L(x, p 2 ) jeśli p 1 p 2 P symbol J(x, m) jest określony wyłącznie dla nieparzystych m Przykłady: 1. L(1, p) = 1 2. L( 1, p) = ( 1) (p 1)/2 43 p = 1, 5, 9,... L( 1, p) = 1 x = 1 Q p p = 3, 7, 11,... L( 1, p) = 1 x = 1 Q p p = 2, 4,... L( 1, p) = wartość nieokreślona 3. J(2, 15) =? J(2, 15) = L(2, 5)L(2, 3) (4 mod 5)(2 mod 3) ( 1)( 1) = 1 w programie Mathematica: JacobiSymbol[2, 15] 1.

Pierwiastki kwadratowe Tw. Jeśli a Q n dla n = k j=1 pe j j, gdzie p j P są względnie różne i 0 < e j I, to jest dokładnie 2 k różnych pierwiastków kwadratowych mod n. w szczególności: n = p P 2 pierwiastki n = pq gdzie p q P 4 pierwiastki Zad. Znaleźć pierwiastki kw. z a Q 15 : x 2 a (mod 15) Z 15 = {1, 2, _, 4, _, _, 7, 8, _, _, 11, _, 13, 14} Z 15 = φ(5)φ(3) = 4 2 = 8. 44 x = 1 2 4 7 8 11 13 14 x^2 (mod 15) = 1 4 1 4 4 1 4 1 zatem x 2 = 1 (mod 15) ma 4 pierwiastki: x = 1, 4, 11, 14 x 2 = 4 (mod 15) ma też 4 pierwiastki: x = 2, 7, 8, 13

Reszty kwadratowe a generatory Tw. Jeśli g jest generatorem Z p (p P ) to wówczas: 45 a Q p parzyste k a = g k mod p Zad. Wyznaczyć Q 13. program w Matlabie: g=2; n=13; k=0:n-2; y=mod(g.ˆk,n); [k;y] k = 0 1 2 3 4 5 6 7 8 9 10 11 2^k mod 13 = 1 2 4 8 3 6 12 11 9 5 10 7 Q 13 = {1, 3, 4, 9, 10, 12} (taki sam wynik dostajemy dla innych generatorów Z 13, np. g = 6) Zad. Wyznaczyć Q 7. k = 0 1 2 3 4 5 3^k mod 7 = 1 3 2 6 4 5 Q 7 = {1, 2, 4}

Jak liczyć pierwiastki kwadratowe z a mod p? Założenie: p P 46 1. sprawdź czy a Q p, tzn. czy L(a, p) = 1; jeśli L(a, p) = 1 to przerwij obliczenia, gdyż nie ma pierwiastków; 2. wybierz losowo b Q p, tj. takie b Zp, że L(b, p) = 1; 3. przedstaw p 1 jako 2 s t, gdzie t jest liczbą nieparzystą; 4. policz a 1 mod p stosując algorytm Euklidesa; 5. policz c b t mod p oraz r a (t+1)/2 mod p; 6. for k = 1 to s 1 do begin d (r 2 a 1 ) 2s k 1 mod p; if d 1 (mod p) then r rc mod p; c c 2 mod p; end; 7. wynik = {±r}.

Przykład 1: Jakie sa pierwiastki kwadratowe z 2 mod 7? 47 1. sprawdźmy czy L(a, p) = 1: L(2, 7) = a (p 1)/2 = 2 3 1 (mod 7) 2. niech b = 3, sprawdźmy czy L(b, p) = 1: L(3, 7) = 3 (7 1)/2 = 27 1 (mod 7) OK OK 3. przedstawmy p jako p 1 = 2 s t: p 1 = 6 = 2 3 s = 1, t = 3 4. nie trzeba liczyć a 1 mod p, gdyż s 1 = 0 5. podobnie nie trzeba liczyć c = b t mod p 6. policzmy r = a (t+1)/2 mod p: r = 2 (3+1)/2 = 4 7. pętla nie jest wykonywana, gdyż s 1 = 0 8. wynik: {±r} = { 4, 4} = {3, 4}

test: 3 2 2 (mod 7) 4 2 2 (mod 7) (sic!) 48 Przykład 2: Jakie sa pierwiastki kwadratowe z 3 mod 13? 1. sprawdźmy czy L(a, p) = 1: L(3, 13) = a (p 1)/2 = 3 6 729 56 13 = 1 (mod 13) OK 2. niech b = 2, sprawdźmy czy L(b, p) = 1: L(2, 13) = 2 (13 1)/2 = 2 6 12 1 (mod 13) OK 3. przedstawmy p jako p 1 = 2 s t: p 1 = 12 = 2 2 3 s = 2, t = 3 4. policzmy a 1 mod p stosując algorytm Euklidesa: q p a y2 y1 ---------------. 13 3 0 1 4 3 1 1-4

a 1 = 4 9 (mod 13) test: 3 9 1 (mod 13) 49 5. policzmy c = b t mod p oraz r = a (t+1)/2 mod p: c = 2 3 = 8 r = 3 (3+1)/2 = 9 6. pętla tylko dla k = s 1 = 1: d = (r 2 a 1 ) 2s k 1 mod p; d = (9 2 9) 20 = 729 1 (mod 13); warunek d 1 (mod p) nie jest spełniony; nie trzeba liczyć c c 2 mod p; 7. wynik: {±r} = { 9, 9} = {4, 9} test: 4 2 3 (mod 13) 9 2 3 (mod 13) (sic!)

Szczególne przypadki liczenia pierwiastków kw. modulo p 50 r 2 a (mod p), gdzie p P ; a Q p 1. Jeśli p 3 (mod 4) to 2. Jeśli p 5 (mod 8) to policz r = ±a (p+1)/4 mod p d = a (p 1)/4 mod p (a) jeśli d = 1 to (b) jeśli d = p 1 to r = ±a (p+3)/8 mod p r = ±2a(4a) (p 5)/8 mod p

Przykłady 51 1. p = 7, a = 2 r =? Odp: p = 7 3 (mod 4) zatem można zastosować wzór 1: r = ±a (p+1)/4 mod p r = ±2 8/4 = ±4, Test: (±4) 2 = 16 2 (mod 7) 2. p = 13, a = 4 r =? Odp: p = 13 5 (mod 8) d = a (p 1)/4 mod p d = 4 12/4 = 64 12 (mod 13) zatem można zastosować wzór 2(b): r = ±2a(4a) (p 5)/8 mod p r = ±8 16 ±11 ±2 (mod 13) 3. p = 13, a = 3 r =? Odp: p = 13 5 (mod 8) d = 3 12/4 = 27 1 (mod 13) zatem można zastosować wzór 2(a): r = ±a (p+3)/8 mod p r = ±3 2 ±4 (mod 13), Test: (±4) 2 = 16 3 (mod 13)

Jak liczyć pierwiastki kwadratowe z a mod n? Założenie: n = p 1 p 2, gdzie p 1 p 2 P 52 1. znaleźć 2 pierwiastki z a mod p 1 ±r 1 2. znaleźć 2 pierwiastki z a mod p 2 ±r 2 3. zastosować algorytm Euklidesa, aby znaleźć takie c 1, c 2 I, że c 1 p 1 + c 2 p 2 = 1 4. policzyć R ± = (c 1 p 1 r 2 ± c 2 p 2 r 1 ) mod n 5. 4 pierwiastki z a mod n to: {±R + mod n, ±R mod n}

Przykład: Jakie sa pierwiastki kwadratowe z 4 mod 91? a = 4; n = 91 = 13 7 p 1 = 13, p 2 = 7 53 1. znajdźmy 2 pierwiastki z a mod p 1 : 4 mod 13 {±r 1 } = {±2} {2, 11} {±11} (mod 13) 2. znajdźmy 2 pierwiastki z a mod p 2 : 4 mod 7 {±r 2 } = {±2} {2, 5} {±5} (mod 7) 3. zastosujmy algorytm Euklidesa, aby policzyć c 1 p 1 + c 2 p 2 = 1: q p1 p2 c1 c1 c2 c2 -----------------------. 13 7 1 0 0 1 1 7 6 0 1 1-1 1 6 1 1-1 -1 2 c 1 = 1, c 2 = 2 test: c 1 p 1 + c 2 p 2 = 13 + 2 7 = 1

54 4. policzmy R ± = (c 1 p 1 r 2 ± c 2 p 2 r 1 ) mod n : R ± = 13 5 ± 2 7 11 = 65 ± 154 zatem R + = 65 + 154 = 89 2 (mod 91) R = 65 154 = 219 54 37 (mod 91) 5. wynik: ostatecznie znajdujemy cztery pierwiastki kwadratowe z 4 modulo 91: {±2 mod 91, ±37 mod 91} = {2, 37, 54, 89} 6. test: 4 = 2 2 37 2 54 2 89 2 (mod 91)

Algorytm Rabina (1979) 55 uproszczona wersja a. R. jest zatwierdzona jako standard podpisu cyfrowego (Digital Signature Standard, DSS) I. Generacja kluczy 1. wybierz losowo dwie duże liczby pierwsze p q i policz n = pq 2. klucz publiczny to n, a klucz prywatny to (p, q) II. Kryptaż 1. wiadomość (tekst prosty) jest liczbą m {0, 1,..., n 1} 2. szyfrogram to reszta kwadratowa c = m 2 mod n III. Dekryptaż 1. policz pierwiastki kwadratowe z c mod n m 1, m 2, m 3, m 4 2. jedno z m i jest wiadomością m

Jak uniknać tej nadmiarowości (redundancji)? 56 Np. replikujemy kilka ostatnich bitów m. Dlaczego algorytm Rabina jest bezpieczny dla dużych liczb? Bezpieczeństwo a. R. wynika z trudności obliczenia pierwiastków kw. modulo duża liczba złożona. Problem ten jest równoważny problemowi faktoryzacji. Zaleta algorytmu Rabina: Kryptaż jest tu o wiele szybszy niż w algorytmie RSA. Przykład 1 algorytmu Rabina I. Bolek generuje klucze 1. niech p = 229 i q = 307 (tj. klucz prywatny) 2. zatem n = pq = 70303 (tj. klucz publiczny) II. Alicja szyfruje np. wiadomość AM 1. tekst prosty: m = (01, 17) = 117

57 2. Alicja zapisuje m w postaci binarnej m = (1110101) 2 3. replikuje np. r = 5 ostatnich bitów m = (11 10101 10101) 2 = 3765 4. szyfrogram to c = m 2 mod n = 44322 Alicja przesyła (c, r) Bolkowi III. Bolek deszyfruje c 1. liczy pierwiastki kwadratowe z c mod n: m 1 = 3765 = (11 10101 10101) 2 m 2 = 22799 = (10110 01000 01111) 2 m 3 = 47504 = (101110 01100 10000) 2 m 4 = 66538 = (1000000 11111 01010) 2 2. widać, że tylko m 1 ma powtórzone 5 ostatnich bitów 3. zatem m = (11 10101) 2 = 117 = (01, 17) = AM co jest rozszyfrowaną wiadomością Alicji.

Przykład 2 algorytmu Rabina Niech p = 13, q = 7, r = 2, m = F I. Bolek generuje klucze klucz prywatny to (p, q) = (13, 7), zatem klucz publiczny to n = 91 II. Alicja szyfruje wiadomość F 1. m = 9 58 2. m = (1001) 2 3. replikuje dwa (r = 2) ostatnie bity: m = (10 01 01) 2 = 37 4. 37 2 = 1369 4 (mod 91) c = 4 III. Bolek deszyfruje c 1. liczy pierwiastki kwadratowe z c mod n: (te pierwiastki już znamy!) m 1 = 2 = (10) 2 m 2 = 37 = (10 01 01) 2 m 3 = 54 = (11 01 10) 2 m 4 = 89 = (101 10 01) 2 2. widać, że tylko m 2 ma powtórzone 2 ostatnie bity 3. zatem m = (1001) 2 = 9 = F

Chińskie twierdzenie o resztach (Chinese remainder theorem) Jeśli i j NWD(n i, n j ) = 1, to układ kongruencji x a i (mod n i ) (i = 1,, s) ma jedno rozwiązanie x modulo n = n 1 n 2 n s. Algorytm Gaussa Rozwiązanie powyższego układu dane jest wzorem: gdzie x = s i=1 a in i M i mod n 59 N i = n n i M i = Ni 1 mod n i Przykład: Rozwiąż układ kongruencji x 3 (mod 7) x 7 (mod 13)

Rozwiazanie: Dane są a 1 = 3, a 2 = 7, n 1 = 7, n 2 = 13, zatem n = n 1 n 2 = 91 oraz N 1 = 13, N 2 = 7 60 M i N i 1 (mod n i ) M i N i + m i n i = 1 M 1 13 + m 1 7 = 1 q N1 n1 x2 x1 y2 y1 --------------------. 13 7 1 0 0 1 1 7 6 0 1 1-1 1 6 1 1-1 -1 2 6 1 0-1. 2. M 1 = 1, m 1 = 2 TEST: ( 1) 13 + 2 7 = 1 M 2 7 + m 2 13 = 1 M 2 = 2, m 2 = 1 x = a 1 N 1 M 1 + a 2 N 2 M 2 =? x = 3 13 ( 1) + 7 7 2 = 39 + 98 = 59 zatem rozwiązanie to x = 59 mod 91

Algorytmy plecakowe (algorytmy upakowaniowe, ang. knapsack algorithms) 61 alg. Merkle a-hellmana (1978) - został złamany przez Shamira i Zippela (1980) alg. Grahama-Shamira (1979) - został złamany alg. Lu-Lee (1979) - został złamany przez Adlemana i Rivesta (1979) alg. Goodmana-McAuleya (1985) - został złamany alg. Pieprzyka (1986) - został złamany... alg. Chora-Rivesta (1985) - nie został jeszcze złamany, ale jego odmianę (tzw. Powerline System) złamał Lenstra (1991)

Koncepcja algorytmów plecakowych Problem: Jak zapakować plecak niektórymi przedmiotami z danego zbioru, aby plecak miał określony ciężar? m = (m 1, m 2,, m n ) tekst prosty zapisany w systemie binarnym: Jeśli i-ty przedmiot jest w plecaku to m i = 1, a jeśli go nie ma to m i = 0 k=(k 1, k 2,, k n ) klucz (rosnący ciąg ciężarów): k i jest ciężarem i-tego przedmiotu oraz k i < k i+1 c = i m ik i szyfrogram (ciężar zapakowanego plecaka) Przykłady: m = 1 0 0 1 1 0 k = 1 2 5 9 19 40 c = 1 +9 +19 = 29 m = 0 0 0 0 0 0 k = 1 2 5 9 19 40 c = 0 = 0 62

Zad. Zaszyfruj m = 1010 kluczem k z powyższych przykładów. 63 m = 0 0 1 0 1 0 k = 1 2 5 9 19 40 c = 5 +19 = 24 Ciag superrosnacy to taki ciąg (b 1, b 2,, b n ), w którym każdy element jest większy od sumy wszystkich poprzedzających go, b i > i 1 j=1 b j dla i = 2,, n Jak rozwiazać problem plecakowy dla ciagu superrosnacego Dla danych s i (b 1, b 2,, b n ) znaleźć ciąg (m 1, m 2,, m n ) taki, że s = n i=1 m ib i Algorytm 1. for i=n downto 1 do if s b i then m i 1; s s b i ; else m i 0 2. wynik (m 1, m 2,, m n )

Algorytm plecakowy Merkle a-hellmana (1978) 64 I. Generacja kluczy 1. Bolek wybiera ciąg superrosnący b = (b 1, b 2,, b n ) i liczbę (tzw. moduł) M taką, że M > n i=1 b i 2. wybiera losowo liczbę W taką, że NWD(M, W ) = 1 3. wybiera permutację π liczb (1, 2,, n) 4. liczy a = (a 1, a 2,, a n ), gdzie a i = W b π(i) mod M 5. klucz publiczny to a II. Kryptaż klucz prywatny to (π, M, W, b) 1. Alicja zapisuje wiadomość w systemie binarnym m = (m 1, m 2,, m n ) 2. zdobywa klucz publiczny a 3. liczy szyfrogram ze wzoru c = m a = n i=1 m ia i i wysyła go do Bolka

III. Dekryptaż 65 1. Bolek liczy d = W 1 c mod M 2. znajduje takie r = (r 1, r 2,..., r n ), że d = r b = n i=1 r ib i, gdzie r i {0, 1} 3. wiadomość Alicji to m = (m 1, m 2,, m n ), gdzie m i = r π(i) Jak działa dekryptaż? d W 1 c W 1 ( i m ia i ) = i m i(w 1 a i ) i m ib π(i) (mod M) UWAGA: c może być większe od M

Przykład algorytmu Merkle a-hellmana Niech b = (1, 2, 5, 9, 19, 40) i m = 38 (tak jak poprzednio) 66 oraz M = 80, W = 3, π = (4, 3, 2, 6, 1, 5) I. Generacja kluczy 1. wybieramy b = (1, 2, 5, 9, 19, 40) i M = 80: Czy nasz ciąg b jest superrosnący? Tak. Czy M > n i=1 b i? Tak, gdyż M = 80 > 76 2. wybieramy W = 3: Czy NWD(M, W ) = 1? Tak. 3. wybieramy permutację π = (4, 3, 2, 6, 1, 5) 4. liczymy a i = W b π(i) mod M:

a 1 3b π(1) = 3b 4 = 3 9 = 27 (mod 80) a 2 3b π(2) = 3b 3 = 3 5 = 15 (mod 80) itd. Program w Matlabie: b=[1,2,5,9,19,40];pi=[4,3,2,6,1,5];i=1:6;a=mod(3*b(pi(i)),80) zatem 67 5. klucz publiczny to a = (27, 15, 6, 40, 3, 57) II. Kryptaż klucz prywatny to (π, M, W, b) = ((4, 3, 2, 6, 1, 5), 80, 3, (1, 2, 5, 9, 19, 40)) 1. chcemy zaszyfrować wiadomość m = 38 = (1, 0, 0, 1, 1, 0) 2. mamy klucz publiczny a = (27, 15, 6, 40, 3, 57) 3. liczymy szyfrogram c = n i=1 m ia i m = 1 0 0 1 1 0 a = 27 15 6 40 3 57 c = 27 +40 +3 = 70

czyli c = 70 Matlab: m=[1,0,0,1,1,0];c=a*m 68 III. Dekryptaż 1. liczymy d = W 1 c mod M d = 3 1 70 mod 80 3 1 mod 80 =? stosujemy alg. Euklidesa q 80 3 1 0 0 1 26 3 2.. 1-26 1 2 1.. -26 27 test: 27 3 = 81 1 (mod 80) zatem d 27 70 = 1890 50 (mod 80) 2. znajdujemy bity r i takie, że d = n i=1 r ib i stosujemy algorytm z początku zajęć: 50=40+9+1

b = 1 2 5 9 19 40 r = 1 0 0 1 0 1 69 3. permutujemy r = (1, 0, 0, 1, 0, 1) zgodnie z m i = r π(i) m = (r π(1), r π(2), r π(3), r π(4), r π(5), r π(6) ) = (r 4, r 3, r 2, r 6, r 1, r 5 ) = (1, 0, 0, 1, 1, 0) Matlab: r=[1,0,0,1,0,1];m=r(pi(i)) 4. zatem odszyfrowana wiadomość to m = (1, 0, 0, 1, 1, 0) = 38

70 Dlaczego kryptosystem M.-H. wydawał się bezpieczny dla dużych liczb? Pozorne bezpieczeństwo kryptosystemu M.-H. wiąże się z problemem sumy podzbioru (subset sum problem) co jest problemem NP-zupełnym. Jak można złamać kryptosystem Merkle a-hellmana? Znane są algorytmy czasu wielomianowego (polynomial time algorithms) umożliwiające złamanie kryptosystemu M.-H. Algorytmy te pozwalają znaleźć takie liczby U i M, że U /M jest bliskie U/M, gdzie (M, W ) są częścią klucza prywatnego Bolka U = W 1 mod M ciąg (b 1, b 2,, b n), gdzie b i = U a i mod M, jest superrosnący Aby odszyfrować wiadomość Alicji, Ewa może wykorzystać (b 1, b 2,, b n) zamiast (b 1, b 2,, b n ).

Algorytm szyfrowania ElGamala (1985) 71 I. Generacja kluczy 1. wybierz losowo dużą liczbę pierwszą p i generator α Zp 2. wybierz losowo a {1, 2,..., p 2} i policz β = α a mod p 3. klucz publiczny to (p, α, β) klucz prywatny to a II. Kryptaż 1. wiadomość (tekst prosty) jest liczbą m Z p = {0, 1,..., p 1} 2. wybierz losowo k {1, 2,..., p 2} takie, że NWD(k, p 1) = 1 3. policz stosując alg. potęgowania modularnego: γ = α k mod p oraz δ = mβ k mod p 4. szyfrogram to c = (γ, δ)

III. Dekryptaż 72 1. policz Γ = γ p 1 a mod p 2. wiadomość m = Γδ mod p Dowód słuszności dekryptażu zatem γ p 1 1 (mod p) stąd Γ γ p 1 a γ a α ak (mod p) Γδ α ak mβ k α ak mα ak = m (mod p) Dlaczego algorytm ElGamala jest bezpieczny dla dużych liczb? Bezpieczeństwo a. E. wynika z trudności obliczenia dyskretnych logarytmów w Z p. Problem ten jest równoważny problemowi faktoryzacji. Uwaga: Kwantowy algorytm Shora (1994) liczenia dyskretnych logarytmów efektywnie łamie a. E.. Na (nie)szczęście nie skonstruowano jeszcze praktycznych komputerów kwantowych.

Przykład algorytmu szyfrowania ElGamala 73 Niech: p = 11, α = 2, a = 8, m = Ć, k = 9 I. Bolek generuje klucze 1. sprawdźmy czy α = 2 jest generatorem Z 11 metoda nieefektywna (x Z 11) x = 1 2 3 4 5 6 7 8 9 10 x=2^k mod 11 => k = 0 1 8 2 4 9 7 3 6 5 OK metoda efektywna Niech φ(p) = p 1 p 2 p k. Tw. Jeśli pi α φ(p)/p i / 1 (mod p) to α jest generatorem. φ(11) = 10 = 2 5. α φ(p)/p 1 = 2 10/2 = 32 10 (mod 11) / 1 OK α φ(p)/p 2 = 2 10/5 = 4 (mod 11) / 1 OK zatem α = 2 jest generatorem Z 11

74 2. β = α a = 2 8 = 256 3 (mod 11) zatem klucz publiczny to (p, α, β) = (11, 2, 3) i klucz prywatny to a = 8 II. Alicja szyfruje wiadomość m kluczem (p, α, β) 1. m = Ć =5 2. k = 9 {1,..., p 2} oraz NWD(k, p 1) = 1 OK. 3. policzmy γ = α k i δ = mβ k : γ = 2 9 = 512 6 (mod 11) δ = 5 3 9 = 98415 9 (mod 11) 4. zatem szyfrogram to c = (γ, δ) = (6, 9) II. Bolek deszyfruje kryptogram c kluczem a 1. policzmy Γ = γ p 1 a = 6 2 3 (mod 11) 2. m = Γδ =? m = 3 9 = 27 5 (mod 11) 3. zatem rozszyfrowana wiadomość to m = 5 = Ć

Podpis ElGamala 75 I. Jak Alicja może podpisać wiadomość m? 1. Alicja wybiera losowo tajną liczbę k {1, 2,..., p 2} taką, że NWD(k, p 1) = 1. 2. liczy γ = α k mod p 3. liczy k 1 mod (p 1) stosując alg. Euklidesa 4. liczy ɛ = k 1 [h(m) aγ] mod (p 1), gdzie h(m) jest funkcją skrótu (ang. hash function) 5. jawny podpis Alicji to (γ, ɛ) II. Jak Bolek może zweryfikować podpis Alicji (γ, ɛ) pod wiadomością m kluczem publicznym Alicji (p, α, β)? Weryfikacja podpisu: β γ γ ɛ α h(m) (mod p)

Dowód: ɛ k 1 [h(m) aγ] mod (p 1) kɛ h(m) aγ (mod (p 1)) h(m) kɛ + aγ (mod (p 1)) k 76 Ciekawostka β γ γ ɛ (α a ) γ (α k ) ɛ α aγ+kɛ α h(m) (mod p) Algorytm podpisu cyfrowego (Digital Signature Algorithm, DSA) jest wariantem algorytm podpisu ElGamala. DSA stał się Standardem Podpisu Cyfrowego (Digital Signature Standard, DSS) uznawanym przez rządy na całym świecie. FAQ: Czy można używać alg. ElGamala w programach komercyjnych bez uiszczania tantiem? Tak. A. E. jest pierwszym algorytmem z kluczem publicznym nie objętym (od 1997) prawami patentowymi.

Przykład 1. podpisu ElGamala Weźmy dane z przykładu dla alg. szyfrowania ElGamala: JAWNE: wiadomość m = 5 funkcja skrótu h(m), np. dla prostoty załóżmy, że f. tożsamościową h(m) = m [choć w praktyce należy stosować nietrywialne funkcje skrótu, np. MMO (Matyasa-Meyera-Oseasa), MD4, MD5] klucz publiczny (p, α, β) = (11, 2, 3) TAJNE: k = 9 oraz klucz prywatny a = 8 I. Alicja podpisuje wiadomość 77 1. policzmy γ = α k = 2 9 6 (mod 11) 2. k 1 mod (p 1) = 9 1 mod 10 =?

q p-1 k y2 y1 --------------------------- - 10 9 0 1 1 9 1 1-1 9 1 0-1. 78 zatem 9 1 = 1 9 mod 10 3. ɛ = k 1 [h(m) aγ] mod (p 1) =? dla prostoty załóżmy, że h(m) = m, wówczas ɛ = 9[5 8 6] = 9 43 = 387 3 (mod 10) 4. zatem jawny podpis Alicji to (γ, ɛ) = (6, 3) II. Bolek weryfikuje podpis Weryfikacja podpisu (γ, ɛ) = (6, 3) pod wiadomością m = 5 kluczem publicznym (p, α, β) = (11, 2, 3): β γ γ ɛ α h(m) (mod p)

LHS = 3 6 6 3 = 729 216 = 157464 10 (mod 11) RHS = 2 5 = 32 10 (mod 11) LHS=RHS 79 Warunek bezpieczeństwa Alicja szyfrując lub podpisując nową wiadomość m powinna wylosować nową liczbę k k. Dlaczego? Jeśli Ewa ma dwie wiadomości m i m podpisane lub zaszyfrowane tym samym k, to ma szansę policzyć prywatny klucz a Alicji.

Przykład 2. podpisu ElGamala Weźmy dane z poprzedniego przykładu: (p, α, β) = (11, 2, 3), k = 9, a = 8 ale inną wiadomość, np. m = D =6 I. Alicja podpisuje wiadomość 80 1. γ = α k = 2 9 = 6 (mod 11) (jak w przykładzie 1) 2. k 1 mod (p 1) = 9 (jak w przykładzie 1) 3. policzmy ɛ = k 1 [h(m ) aγ] mod (p 1) =? ɛ = 9[6 8 6] 2 (mod 10) 4. zatem podpis Alicji to (γ, ɛ ) = (6, 2) II. Bolek weryfikuje podpis β γ γ ɛ α m (mod p) LHS = 3 6 6 2 9 (mod 11) RHS = 2 6 9 (mod 11) LHS=RHS

Czy Ewa może złamać ten szyfr Alicji? Tak. Alicja była nieostrożna podpisując wiadomości m i m z wykorzystaniem tego samego k. Zatem Ewa ma szansę złamać podpis, tzn. znaleźć a i k z układu kongruencji: m aγ + kɛ (mod (p 1)) m aγ + kɛ (mod (p 1)) Jakie dane ma do dyspozycji Ewa? Ewa zna wiadomości m, m, jawne podpisy Alicji (γ, ɛ, ɛ ) oraz jej klucz publiczny (p, α, β). Choć nie zna wartości k i k, ale wie/zakłada, że k = k. zatem 6 6a + 2k (mod 10) 5 6a + 3k (mod 10) odejmijmy stronami k 1 9 (mod 10) 81

82 policzmy zatem a z kongruencji 5 6a + 3 9 (mod 10) 2 8 6a (mod 10) a 3 oraz 8 (mod 10) sprawdźmy, którą z tych wartości wykorzystała Alicja do generacji kluczy: β α a (mod p) czyli 3 2 a (mod 11) jeśli a = 3 to 2 3 = 8 / 3 (mod 11) jeśli a = 8 to 2 8 = 256 3 (mod 11) zatem a = 8 jest prywatnym kluczem Alicji. Złamaliśmy szyfr Alicji!

Pseudokwadraty modularne a Z n jest pseudokwadratem mod n (tj. a Q n ), jeśli jest nieresztą kwadratową modulo n (tj. a Q n ) taką, że symbol Jacobiego J(y, n) = 1 Przykład: p = 3, q = 5 n = pq = 15 a a 2 mod n L(a, p) L(a, q) J(a, n) 1, 1, 1, 1, 1 kwadrat mod n 2, 4, -1, -1, 1 pseudokwadrat mod n 4, 1, 1, 1, 1 kwadrat mod n 7, 4, 1, -1, -1 8, 4, -1, -1, 1 pseudokwadrat mod n 11, 1, -1, 1, -1 13, 4, 1, -1, -1 14, 1, -1, 1, -1 Mathematica: f[a_]:={a,mod[a^2,15],jacobisymbol[a,3], JacobiSymbol[a,5],JacobiSymbol[a,15]} zatem a = 1, 4 Q 15 oraz a = 2, 8 Q 15 83

Algorytm Goldwassera-Micaliego (1982) 84 przykład szyfrowania przypadkowego (probabilistic encryption) I. Generacja kluczy 1. Bolek wybiera losowo dwie duże liczby pierwsze p q i liczy n = pq 2. wybiera y Z n będące pseudokwadratem modulo n, tzn. y jest nieresztą kwadratową modulo n taką, że symbol Jacobiego J(y, n) = 1 3. klucz publiczny to (n, y) II. Kryptaż klucz prywatny to (p, q) 1. Alicja zapisuje wiadomość w systemie binarnym m = (m 1, m 2,, m t ) 2. zdobywa klucz publiczny (n, y) 3. dla i=1:t wykonuje wybiera losowo x i Z n liczy c i y m ix 2 i mod n

4. szyfrogram c = (c 1, c 2,, c t ) wysyła do Bolka 85 III. Dekryptaż 1. dla i=1:t wykonuje liczy symbol Legendre a L i L(c i, p) jeśli L i = 1 to m i 0 inaczej m i 1 2. rozszyfrowana wiadomość Alicji to m = (m 1, m 2,, m t ) Dlaczego algorytm G.-M. wydaje się bezpieczny dla dużych liczb? Nie znamy efektywnych alg. klasycznych testowania czy dana liczba x, dla której J(x, n) = 1, jest resztą kwadratową modulo n, gdy n jest liczbą złożoną. Tj. tzw. problem reszt kwadratowych (ang. quadratic residuosity problem). Jeśli uda się nam sfaktoryzować n to automatycznie możemy złamać kryptosystem G.-M.

Przykład algorytmu Goldwassera-Micaliego Niech p = 5, q = 7, y = 3, x = (4, 9, 32, 2), m = F 86 I. Generacja kluczy 1. wybieramy p = 5 q = 7 i liczymy n = pq = 35 2. wybieramy y = 3 Z 35 i liczymy J(y, n): J(y, n) = L(y, p)l(y, q) = L(3, 5)L(3, 7) jako, że L(y, p) y (p 1)/2 (mod p) to L(3, 5) = 3 2 1 (mod 5) L(3, 7) = 3 3 = 27 1 (mod 7) zatem J(3, 35) = ( 1)( 1) = 1 czyli y = 3 jest pseudokwadratem modulo n = 35 3. klucz publiczny to (n, y) = (35, 3) klucz prywatny to (p, q) = (5, 7)

II. Kryptaż 87 1. zapisujemy wiadomość w systemie binarnym m = F = 9 = (1, 0, 0, 1) t = 4 2. wykorzystujemy klucz publiczny (n, y) = (35, 3) 3. wybieramy losowo x i Z n np. x = (x 1, x 2, x 3, x 4 ) = (4, 9, 32, 2) 4. liczymy c i = y m ix 2 i mod n c 1 yx 2 1 = 3 16 = 48 13 (mod 35) c 2 y 0 x 2 2 = 81 11 (mod 35) c 3 y 0 x 2 3 = 1024 9 (mod 35) c 4 yx 2 4 = 3 4 = 12 (mod 35) Matlab: m=[1,0,0,1];x=[4,9,32,2];c=mod(3.^m.*x.^2,35) 5. zatem szyfrogram to c = (c 1, c 2, c 3, c 4 ) = (13, 11, 9, 12)

III. Dekryptaż 88 1. liczymy symbol Legendre a L i L(c i, p) dla i=1:4 ze wzoru L i = L(c i, 5) c 2 i (mod 5) L(13, 5) 13 2 = 169 4 1 (mod 5) itd. zatem (L 1, L 2, L 3, L 4 ) = ( 1, 1, 1, 1) 2. jeśli L i = 1 to m i 0 inaczej m i 1 zatem m = (m 1, m 2, m 3, m 4 ) = (1, 0, 0, 1) 3. zatem rozszyfrowana wiadomość Alicji to m = (1, 0, 0, 1) = 9 = F.

Algorytm Bluma-Goldwassera (1985) 89 najefektywniejszy algorytm szyfrowania przypadkowego porównywalny z algorytmem RSA kryptosystem B.-G. wydaje się formalnie bezpieczny z uwagi na to, że nie są znane efektywne klasyczne algorytmy faktoryzacji i rozwiązywania problemu Rabina (zob. alg. Rabina) jednak kryptosystem B.-G. można często złamać metodą ataku z wybranym szyfrogramem (chosen-ciphertext attack) tj. wtedy gdy Ewa może wybrać różne szyfrogramy i ma dostęp do odszyfrowanych tekstów jawnych.

Protokół identyfikacji Fiata-Shamira (FS) 90 przykład dowodu tożsamości o wiedzy zerowej (zero-knowledge proof of identity ) uproszczona wersja protokołu Feigego-Fiata-Shamira PROBLEM: Bolek chce wiedzieć czy Alicja ma klucz prywatny s, I. Etap wstępny ale Alicja nie chce ujawniać wartości s. 1. ZCDK wybiera losowo dwie duże liczby pierwsze p q oraz liczy n = pq. liczby p i q są tajne, a n jest opublikowane. 2. Alicja wybiera losowo liczbę s 1, n 1 i liczy v = s 2 mod n

s klucz prywatny Alicji v klucz publiczny Alicji UWAGA: s musi być względnie pierwsze z n, ale ten warunek jest praktycznie zawsze spełniony (inaczej by się dało sfaktoryzować n) 3. ZCDK rejestruje klucz Alicji v i ewentualnie sprawdza czy NWD(v, n) = 1 NWD(s, n) = 1 II. Protokół (jest powtarzany t razy) 1. Alicja wybiera losowo r 1, n 1 (tj. zobowiązanie / commitment) i wysyła Bolkowi x = r 2 mod n (tj. świadek / witness) 2. Bolek wysyła Alicji bit b = 0 lub b = 1 (tj. test, wyzwanie / challenge) 3. Alicja wysyła Bolkowi y = rs b mod n (tj. odpowiedź / response) 4. Bolek odrzuca dowód jeśli y = 0, inaczej przyjmuje dowód jeśli y 2 xv b (mod n) 91

Jak działa ten protokół? Jeśli Alicja nie zna klucza s, to może wybrać takie r, że: albo oszuka Bolka, gdy ten wyśle b = 1, ale wówczas nie oszuka go dla b = 0, albo na odwrót. Jaką pewność może mieć Bolek, że Alicja go nie oszukuje po jednym (t = 1) upełnomocnieniu (akredytacji)? P = 1/2... a po t upełnomocnieniach? P = 1 1/2 t Dlaczego protokół FS wydaje się bezpieczny dla dużych liczb? Nie znamy efektywnych alg. klasycznych liczenia pierwiastków kwad. modulo n, jeśli n jest liczbą złożoną. Stąd też nie wiadomo jak znaleźć pierwiastki kwad. z v lub xv b modulo n. Problem ten jest matematycznie równoważny problemowi faktoryzacji. 92

Przykład protokołu identyfikacji Fiata-Shamira Niech p = 3, q = 5, s = 8, t = 3, r = 3, 6, 7 odpowiednio dla b = 0, 1, 1 I. Etap wstępny 93 1. ZCDK wybiera p = 3 i q = 5 i publikuje n = 15 2. Alicja wybiera losowo liczbę s = 8 i liczy v = 8 2 mod 15 = 4 zatem s = 8 klucz prywatny Alicji v = 4 klucz publiczny Alicji 3. ZCDK sprawdza czy NWD(v, n) =NWD(s, n) = 1: NWD(v, n) =NWD(4, 15) = 1 OK NWD(s, n) =NWD(8, 15) = 1 OK

II. Protokół - niech t=3 runda 1: 94 1. Alicja wybiera losowo np. r = 3 i wysyła Bolkowi x = r 2 mod n x = 9 2. Bolek wysyła Alicji np. bit b = 0 3. Alicja wysyła Bolkowi y = rs b mod n y = 3 8 b = 3 4. Bolek sprawdza czy y 2 xv b (mod n) 9 9 OK zatem Bolek może przyjąć z prawd. 1/2, że Alicja nie oszukiwała runda 2: 1. Alicja wybiera losowo np. r = 6 i wysyła Bolkowi x = r 2 mod n x = 6

2. Bolek wysyła Alicji np. bit b = 1 95 3. Alicja wysyła Bolkowi y = rs b mod n y 6 8 b = 48 3 (mod 15) 4. Bolek sprawdza czy y 2 xv b (mod n) 9 6 4 (mod 15) zatem Bolek może przyjąć z prawd. 3/4, że Alicja nie oszukiwała runda t = 3: 1. r = 7 x = 4 2. b = 1 3. y 7 8 b = 56 11 (mod 15) 4. 11 2 1 4 4 (mod 15) OK zatem Bolek może przyjąć z prawd. 1 2 t = 7/8, że Alicja nie oszukiwała.

Protokół identyfikacji Feigego-Fiata-Shamira (FFS) (1988) tj. najlepszy znany dowód tożsamości o wiedzy zerowej FFS jest opatentowany I. Etap wstępny 1. ZCDK wybiera losowo dwie duże liczby pierwsze p q takie, że p q 3 (mod 4) oraz liczy n = pq. (takie n nazywa się liczbą Bluma) ZCDK wyznacza też parametry bezpieczeństwa k, t liczby p i q są tajne, a n, k, t są opublikowane. 2. Alicja wybiera losowo wektor s = (s 1, s 2,, s k ) gdzie s i 1, n 1 oraz wektor a = (a 1, a 2,, a k ) o wartościach binarnych. UWAGA: Warunek NWD(s i, n) = 1 musi być spełniony, ale praktycznie zawsze tak jest dla bardzo dużych n. 3. Alicja wyznacza wektor v = (v 1, v 2,, v k ) o elementach v i = ( 1) a i (s 2 i ) 1 mod n 96

klucz prywatny Alicji to s klucz publiczny Alicji v i n 97 4. ZCDK rejestruje klucz Alicji v i (na wszelki wypadek) sprawdza czy NWD(v i, n) = 1 wówczas J(v i, n) = 1, co daje gwarancję, że żadne tajne dane nie wyciekną. II. Protokół (jest powtarzany t razy) 1. Alicja wybiera losowo r 1, n 1 i bit β oraz wysyła Bolkowi x = ( 1) β r 2 mod n 2. Bolek wysyła Alicji wektor b = (b 1, b 2,, b k ) o losowych wartościach binarnych 3. Alicja wysyła Bolkowi y = r k j=1 sb j j mod n 4. Bolek liczy z = y 2 k j=1 vb j j mod n oraz sprawdza, czy z = ±x 0

Przykład dla najmniejszej liczby Bluma, tj. n = 21 R r 2 (mod n) 98 Matlab: n=21;r=1:(n-1);[r;mod(r.^2,n)] r = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 R = 1 4 9 16 4 15 7 1 18 16 16 18 1 7 15 4 16 9 4 1 zatem 1 r 2 (mod n) r = 1, 8, 13, 20 4 r 2 (mod n) r = 2, 5, 16, 19 7 r 2 (mod n) r = 7, 14 9 r 2 (mod n) r = 3, 18 15 r 2 (mod n) r = 6, 15 16 r 2 (mod n) r = 4, 10, 11, 17 18 r 2 (mod n) r = 9, 12 1 ρr (mod n) r = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ρ = 1 11 _ 16 17 8 _ 19 2 _ 13 4 5 _ 10 20

Przykład protokołu identyfikacji FFS I. Etap wstępny 99 1. ZCDK wybiera q = 3 i p = 7 oraz liczy n = pq = 21. ZCDK wyznacza też parametry bezpieczeństwa k = 3, t = 2 wartości n, k, t są opublikowane. 2. Alicja wybiera losowo wektory s i a np. s = (2, 4, 5) i a = (1, 0, 1) sprawdźmy, czy NWD(s i, n) = 1 NWD(2, 21) =NWD(4, 21) =NWD(5, 21) = 1. OK 3. Alicja liczy v i = ( 1) a i(s 2 i ) 1 mod n, gdzie i = 1, 2, 3: v 1 = 4 1 16 5 (mod 21) v 2 = 16 1 4 (mod 21) v 3 = 25 1 4 1 5 (mod 21) zatem

klucz prywatny Alicji to s = (2, 4, 5) klucz publiczny Alicji to v = (5, 4, 5) i n = 21 100 4. ZCDK rejestruje klucz Alicji v i sprawdza czy NWD(v i, n) = 1 NWD(5, 21) =NWD(4, 21) = 1. OK J(v i, 21) =? J(5, 21) = L(5, 3)L(5, 7) = ( 1)( 1) = 1. OK J(4, 21) = L 2 (2, 3)L 2 (2, 7) = ( 1) 2 ( 1) 2 = 1. OK gdyż J(x, p 1 p 2 ) = L(x, p 1 )L(x, p 2 ) L(x 1 x 2, p) = L(x 1, p)l(x 2, p) II. Protokół (powtarzany t = 2 razy) runda 1: 1. Alicja wybiera losowo r = 10 i bit β = 1 oraz wysyła Bolkowi x = ( 1) β r 2 mod n x 10 2 16 5 (mod 21)

101 2. załóżmy, że Bolek wylosował b = (1, 1, 0) i wysłał ten wektor Alicji 3. Alicja wysyła Bolkowi y = r k j=1 sb j j mod n y 10 2 4 5 0 = 80 17 (mod 21) 4. Bolek liczy z = y 2 k j=1 vb j j mod n z 17 2 5 4 5 0 = 16 20 5 (mod 21) runda 2: oraz sprawdza, czy z = ±x 0 z = x = 5. OK 1. tym razem Alicja wybiera losowo r = 2 i bit β = 0 oraz liczy x = ( 1) β r 2 mod n x = 4 i tę liczbę wysyła Bolkowi 2. załóżmy, że Bolek wylosował b = (1, 0, 1) i wysłał ten wektor Alicji 3. Alicja liczy y = r k j=1 sb j j mod n y = 2 2 4 0 5 = 20 i tę liczbę wysyła Bolkowi

4. Bolek liczy z = y 2 k j=1 vb j j mod n z 20 2 5 4 0 5 = 10 4 4 (mod 21) 102 oraz sprawdza, czy z = ±x 0. z = x = 4. OK Dlaczego protokół FFS jest lepszy od FS? W jednej rundzie protokołu FFS nadawanych jest k upełnomocnień (akredytacji), a w przypadku protokołu FS tylko jedno. Jaką pewność może mieć Bolek, że Alicja go nie oszukuje po t powtórzeniach protokołu FFS? P = 1 2 kt Jakie wartości k i t są zalecane dla protokołu FFS? k = 5, t = 4 P = 1 2 20 = 0.99999905

Uwagi końcowe 103 1. Ze względów dydaktycznych, wszystkie przykłady algorytmów asymetrycznych podano dla bardzo małych liczb nie gwarantujących bezpieczeństwa kryptosystemów. 2. Aby zagwarantować bezpieczeństwo kryptosystemów asymetrycznych klucze powinny być o długości kilkuset cyfr dziesiętnych. 3. Pamiętajmy także, że dobry kryptolog jest ultrakonserwatystą w kwestii wyboru długości kluczy publicznych (Schneier), tym bardziej, że tego uczy nas historia: I shall be surprised if anyone regularly factors numbers of size 10 80 without special form during the present century (R. Guy, 1976). Factoring a 125-digit number would take 40 quadrillion years, tj. 4 10 19 lat (R. Rivest, 1977).... ale już w 1994 sfaktoryzowano liczbę 129-cyfrową.

Zalecane długości klucza publicznego 104 Jakie są zalecane długości klucza publicznego, jeśli chcemy się zabezpieczyć przed atakiem: (a) osoby prywatnej, (b) firmy, (c) instytucji rządowych? [wg B. Schneiera] długość w bitach => dł. w cyfrach dziesiętnych Rok (a) (b) (c) (a) (b) (c) 1995 768 1280 1536 231 386 463 2000 1024 1280 1536 308 386 463 2005 1280 1536 2048 386 463 617 2010 1280 1536 2048 386 463 617 2015 1536 2048 2048 463 617 617 National Security Agency (NSA) zaleca używanie kluczy o długości od 512 do 1024 bitów (czyli od 154 do 308 cyfr dziesiętnych) w ich standardzie podpisów cyfrowych (Digital Signature Standard, DSS) Długość liczby (ilość cyfr liczby) Długość L b liczby n przy podstawie b dana jest wzorem L b = [log b n] + 1 = [ln n/ ln b] + 1