Kriptografija sa javnim ključevima
Jan 18, 2016
Kriptografija sa javnim ključevima
Kriptografija sa javnim ključevima
Whitfield Diffie i Martin Hellman, autori prvog rada o kriptografiji sa javnim ključevima
Kriptografija sa javnim ključevima
• Dva ključa– Pošiljalac koristi javni ključ primaoca za šifrovanje– Primaoc koristi svoj privatni (tajni) ključ za
dešifrovanje• Zasniva se na trap door, ili jednosmernim
(one way) funkcijama– Lako se izračunavaju u jednom smeru– Teško se izračunavaju u drugom smeru– “Trap door” se koristi za generisanje tajnog ključa– Primer: Za zadate p i q, proizvod N=pq se lako
računa, ali za dato N, teško je naći p i q
Kriptografija sa javnim ključevima
• Šifrovanje– Pretpostavimo da se M šifruje Bobovim javnim
ključem– Samo Bobov privatni ključ može da dešifruje
poruku M• Digitalni potpis
– Potpisati “šifrovanjem” sa privatnim ključem– Svako može da verifikuje potpis “dešifrovanjem”
sa javnim ključem– Samo je vlasnik privatnog ključaje mogao da
potpiše– Sličan je klasičnom potpisivanju
RSA
Len AdlemanAdi Shamir Ronald Rivest
RSA
• Izumljen od strane Cocks-a (GCHQ –Government Communications Headquarters ), i nezavisno od Rivest-a, Shamir-a i Adleman-a (MIT)
• Neka su p i q dva velika prosta broja• Neka je N = pq modulus• Izabrati broj e uzajamno prost u odnosu na (p1)(q1)• Naći d takvo da je ed = 1 mod (p1)(q1)• Javni ključ: (N,e)• Privatni ključ: d
RSA
• Da bi se šifrovala poruka M računa se– C = Me mod N
• Da bi se dešifrovalo C računa se– M = Cd mod N
• Podsetimo se da su e i N javni• Ukoliko bi napadač faktorisao N, može zatim
da upotrbi e u cilju lakog nalaženja d pošto je ed = 1 mod (p1)(q1)
• Faktorizacija modulusa razbija RSA• Nije poznato da li je faktorizacija jedini način
za razbijanje RSA
Dali RSA zaista radi?• Za zadato C = Me mod N moramo pokazati
– M = Cd mod N = Med mod N• Iskoristićemo Ojlerovu teoremu
– Ako je x uzajamno prost u odnosu na n tada je x(n) = 1 mod n
• Činjenice: – ed = 1 mod (p 1)(q 1) – Po definiciji “mod-a”, ed = k(p 1)(q 1) + 1 (N) = (p 1)(q 1)– Tada je ed 1 = k(p 1)(q 1) = k(N)
• Med = M(ed 1) + 1 = MMed 1 = MMk(N) = M(M(N))k mod N = M1k mod N = M mod N
Jednostavan RSA primer
• Primer RSA– Izabrati “velike” proste brojeve p = 11, q = 3 – Tada je N = pq = 33 i (p1)(q1) = 20 – Izabrati e = 3 (uzajamno prost u odnosu na
20)– Naći d takvo da je ed = 1 mod 20, što daje
d = 7 • Javni ključ: (N, e) = (33, 3)• Privatni ključ: d = 7
Jednostavan RSA primer
• Javni ključ : (N, e) = (33, 3) • Privatni ključ : d = 7• Neka je poruka M = 8• Šifrat C se računa na sledeći način
C = Me mod N = 83 = 512 = 17 mod 33
• Dešifrovanje C u cilju dobijanja M se vrši na sledeći način
M = Cd mod N = 177 = 410,338,673 = 12,434,505 33 + 8 = 8 mod 33
Efikasniji RSA• Modularno stepenovanje - primer
– 520 = 95367431640625 = 25 mod 35 • Bolji način: sukcesivno kvadriranje
o 20 = 10100 base 2o (1, 10, 101, 1010, 10100) = (1, 2, 5, 10, 20)o Primetimo da 2 = 1 2, 5 = 2 2 + 1, 10 = 2 5, 20 = 2
10o 51= 5 mod 35o 52= (51)2 = 52 = 25 mod 35o 55= (52)2 51 = 252 5 = 3125 = 10 mod 35o 510 = (55)2 = 102 = 100 = 30 mod 35o 520 = (510)2 = 302 = 900 = 25 mod 35
• Na ovaj način se ne susrećemo sa velikim brojevima!
Efikasniji RSA
• Neka je e = 3 za sve korisnike (ali ne i isto N ili d) – Operacije vezane za javni ključ zahtevaju samo dva množenja– Operacije vezane za privatni ključ osatju ekstenzivne– Ako je M < N1/3 tada je C = Me = M3 i tada se može preduzeti
napad trećeg korena– Za svako M, ako je C1, C2, C3 poslato trima korisnicima, realan
je napad trećeg korena (uz upotrebu kineske teoreme o ostacima)
– Napad trećeg korena se može izbeći dopunjavanjem poruka slučajnim bitima
• Primedba: e = 216 + 1 se takodje koristi
Diffie-Hellman
Diffie-Hellman
• Predložen od Williamson-a (Government Communications Headquarters - GCHQ) i, nezavisno od Diffie i Hellmana (Stanford)
• Predstavlja algoritam “razmene ključeva”– Koristi se za uspostavljanje zajedničkog simetričnog
ključa• Nije predvidjen za šifrovanje ili digitalno
potpisivanje• Sigurnost se zasniva na težini problema
diskretnog logaritma: za zadate g, p, i gk mod p naći k
Diffie-Hellman
• Neka je p prost broj, i neka je g generator – Za svako x {1,2,…,p-1} postoji n takvo da je x = gn mod p
• Alisa bira tajnu vrednost a• Bob selektuje tajnu vrednost b• Alisa šalje ga mod p Bobu• Bob šalje gb mod p Alisi• Oboje računaju zajedničku tajnu vrednost gab mod p• Ta zajednička tajna vrednost se može koristiti kao
simetričan ključ
Diffie-Hellman
• Pretpostavimo da Bob i Alisa koriste gab mod p kao simetričan ključ
• Trudi može da vidi ga mod p i gb mod p• Primetimo da je ga gb mod p = ga+b mod p gab
mod p• Ako bi Trudi mogla naći a ili b, sistem je razbijen• Ako bi Trudi mogla da reši problem diskretnog
logaritma, tada bi mogla da nadje a ili b
Diffie-Hellman• Javno: g i p• Tajno: Alisin eksponent a i Bobov eksponent b
Alisa, a Bob, b
ga mod p
gb mod p
• Alisa računa (gb)a = gba = gab mod p • Bob računa (ga)b = gab mod p• Mogao bi se K = gab mod p koristiti kao
simetričan ključ
Diffie-Hellman
• Podložan je man-in-the-middle (MiM) napadu
Alisa, a Bob, b
ga mod p
gb mod p
Trudi, t
gt mod p
gt mod p
• Trudi deli tajnu gat mod p sa Alisom • Trudi deli tajnu gbt mod p sa Bobom• Alisa i Bob ne mogu znati da Trudi postoji!
Diffie-Hellman
• Kako osujetiti MiM napad?– Šifrovati DH razmenu sa simetričnim
ključem– Šifrovati DH razmenu sa javnim ključem– Digitalno potpisati DH vrednosti sa
privatnim ključem– Ostale mogućnosti?
• Moramo biti svesni realnosti MiM napada na Diffie-Hellman proceduru
Kriptografija zasnovana na eliptičkim krivama
Kriptografija zasnovana naeliptičkim krivama (Elliptic Curve Crypto - ECC)
• “Eliptičke krive” nisu kriptosistem• Eliptičke krive su samo različiti način obavljanja
matematičkih operacija u kriptosistemima sa javnim ključem
• Stoga imamo verzije DH, RSA, i td.• Eliptičke krive mogu biti znatno efikasnije
– Potreban je manji broj bita za isti nivo tajnosti– Ali, cena za ovo su znatno kompleksnije računske
operacije
Šta su eliptičke krive?
• Eliptička kriva E je grafik jednačine oblika
y2 = x3 + ax + b
• Uključuje “tačku u beskonačnosti”
• Kako izgledaju eliptičke krive?
• Videti naredni slajd!
Slika eliptičkih krivih
• Razmotrimo eliptičku krivuE: y2 = x3 - x + 1
• Ako su P1 i P2 na E, definišimo veličinu
P3 = P1 + P2 kao na slici
• Sve što nam je potrebno je samo operacija sabiranja
P1
P2
P3
x
y
Tačke na eliptičkoj krivoj
• Razmotrimo y2 = x3 + 2x + 3 (mod 5)x = 0 y2 = 3 nema rešenja (mod 5)x = 1 y2 = 6 = 1 y = 1,4 (mod 5)x = 2 y2 = 15 = 0 y = 0 (mod 5)x = 3 y2 = 36 = 1 y = 1,4 (mod 5)x = 4 y2 = 75 = 0 y = 0 (mod 5)
• Stoga su tačke na eliptičkoj krivoj(1,1) (1,4) (2,0) (3,1) (3,4) (4,0) i tačka u beskonačnosti:
Matematika eliptičkih krivih
• Sabiranje na: y2 = x3 + ax + b (mod p)P1=(x1,y1), P2=(x2,y2)
P1 + P2 = P3 = (x3,y3) gde je
x3 = m2 - x1 - x2 (mod p)
y3 = m(x1 - x3) - y1 (mod p)
i m = (y2-y1)(x2-x1)-1 mod p, if P1P2
m = (3x12+a)(2y1)-1 mod p, if P1 = P2
Posebni slučajevi: Ako je m beskonačno, P3 = , i + P = P za svako P
Sabiranje na eliptičkim krivama
• Razmotrimo y2 = x3 + 2x + 3 (mod 5). Tačke na krivoj su (1,1) (1,4) (2,0) (3,1) (3,4) (4,0) i
• Šta je (1,4) + (3,1) = P3 = (x3,y3)?m = (1-4)(3-1)-1 = -32-1
= 2(3) = 6 = 1 (mod 5)x3 = 1 - 1 - 3 = 2 (mod 5)y3 = 1(1-2) - 4 = 0 (mod 5)
• Na ovoj krivoj je (1,4) + (3,1) = (2,0)
ECC Diffie-Hellman• Javni: Eliptička kriva i tačka (x,y) na krivoj• Tajni: Alisin A i Bobov B
Alisa, A Bob, B
A(x,y)
B(x,y)
• Alisa računa A(B(x,y)) • Bob računa B(A(x,y))• Ovi su jednaki, budući da je AB = BA
ECC Diffie-Hellman
• Javni: Kriva y2 = x3 + 7x + b (mod 37) i tačka
(2,5) b = 3• Alisina tajna: A = 4• Bobova tajna: B = 7• Alisa šalje Bobu: 4(2,5) = (7,32)• Bob šalje Alisi: 7(2,5) = (18,35)• Alisa izračunava: 4(18,35) = (22,1)• Bob izračunava: 7(7,32) = (22,1)