400 likes | 570 Views
Kriptografija javnog (asimetri č nog) klju č a (Public-key or Asymmetric Cryptography). Mario Č agalj mario.cagalj@fesb.hr Sveučilište u Splitu Sveučilišni studijski centar za stručne studije 4/3/2012. Kriptografski sustav. Kriptografija simetricnog (tajnog) kljuca: Ke = Kd
E N D
Kriptografija javnog (asimetričnog) ključa(Public-key or Asymmetric Cryptography) Mario Čagalj mario.cagalj@fesb.hr Sveučilište u SplituSveučilišni studijski centar za stručne studije 4/3/2012.
Kriptografski sustav • Kriptografija simetricnog (tajnog) kljuca: Ke = Kd • Kriptografija javnog (asimetricnog) kljuca: Ke Kd Ciphertext Plaintext Plaintext Encryption Decryption Message Channel Key Channel Ke Kd Key Generation
Public-key Cryptosystems (1/4) • Entitet B generira par kljuceva (PUB, PRB) • PUB – javni kljuc (public key), PRB – privatni kljuc (private key) • PUB je javna informacija (dostupna je svima, npr. entitetu A) • Kljuc PRB zna samo entitet B (B cuva PRB tajnim, npr. A ne zna PRB) • Zastita tajnosti: Entitet A zeli poslati tajnu poruku mentitetu B • A enkriptira m javnim kljucem PUB: c = E(PUB, m) • B dekriptira c koristeci privatni kljuc PRB: m=D(PRB, c) = D(PRB, E(PUB, m)) • Nitko drugi tko ne poznaje PRB ne moze dekriptirati sifriranu poruku c c m m Encryption Decryption Message Channel Key Channel PUB PRB Key Generation Source A Destination B
Public-key Cryptosystems (2/4) • Autentikacija: Entitet A zeli poslati autenticiranu poruku m entitetu B • A enkriptira m koristeci svoj privatni (tajni) kljuc PRA: c = E(PRA, m) • B dekriptira poruku c koristeci javni kljuc PUA : m = D (PUA, c) • Samo A zna PRA, stoga je samo A mogla pripremiti poruku m - source integrity • Cijela enkriptirana poruka c sluzi kao digitalni potpis (digital signature) • Ako bi bilo nemoguce promjeniti poruku m bez poznavanja privatnog kljuca PRA, m je takodjer autenticiran u smislu data integrity • Q:Je li osigurana tajnost poruke m u ovo primjeru? c m m Encryption Decryption Message Channel Key Channel PRA PUA Key Generation Source A Destination B
Public-key Cryptosystems (3/4) • Autentikacija i tajnost: Entitet A zeli poslati autenticiranu i tajnu poruku m entitetu B • Realizacija dvostrukim koristenjem kripto-sustava baziranog na javnom kljucu • A enkriptira m kako slijedi: c = E(PRA, m), c’ = E(PUB, E(PRA, m)) • B dekriptira poruku c’: c = D (PRB, c’), m = D (PUA, c) • Q: Pretpostavite da A i B zamjene uloge. Koristeci standardnu notaciju, opisite proceduru koju izvrsavaju A i B. c c c’ m m Decryption Encryption Decryption Encryption PRA PUB PRB PUA Key Generation Source A Destination B Key Generation
Klasifikacija kriptosustava prema namjeni • Enkripcija/dekripcija • Posiljalac enkriptira poruku koristeci javni kljuc primaoca. • Digitalni potpis • Posiljalac “potpisuje” poruku koristeci svoj privatni kljuc. Najcesce se ne potpisuje cijela poruka vec mali blok podataka (message digest) koji se dobije kao “one-way” funkcija originalne poruke. • Razmjena kljuceva (key exchange) • Dva entiteta (korisnika, racunala) zele uspostaviti sesijski (tajni) kljuc za upotrebu u simetricnom kriptosustavu • Najpoznatiji protokol iz ove kategorije: Diffie-Hellman Key Exchange Protocol
Kriptografija asimetričnog (javnog) ključa RSA(Rivest, Shamir and Adleman)
RSA u praksi PKCS: Public Key Cryptography Standard • Webmail (Secure Socket Layer - SSL)
Modularna aritmetika: zbrajanje • Primjer: zbrajanje modulo 10 5 + 5 mod 10 = 0, 3 + 9 mod 10 = 2, 9 - 2 mod 10 = 9 + 8 mod 10 = 7, 4 - 6 mod 10 = 4 + 4 mod 10 = 8 • Q: Zbrajanje modulo 10 sa tajnom konstantom K daje sifru. Koju?
Modularna aritmetika: mnozenje (1/3) • Primjer: mnozenje modulo 10 5 5 mod 10 = 5, 3 9 mod 10 = 7 • Q: Samo mnozenje sa 1, 3, 7 ili 9 moze raditi kao sifra. Zasto?
Modularna aritmetika: mnozenje (2/3) • Primjer: poruka m = 3, tajni kljuc K = 7 • Enkripcija: c = m K = 3 7 = 21 mod 10 = 1 • Dekripcija: m = c K-1 = 1 7-1 = 1 3 = 3 mod 10 = 3 • Multiplikativni inverzni broj (multiplicative inverse) modulo n broja X (pisano X-1 ) je broj za koji vrijedi: X X-1 = 1 mod n, (npr., n = 10) • U nasem primjeru (prethodna tablica) samo brojevi 1, 3, 7 ili 9 imaju multiplikativne inverzne brojeve modulo 10 • Q: Nadjite 9-1 i 1-1 modulo 10. • Napomena: za vrlo velike brojeve n (npr. 100 znamenkasti broj) racunanje inverza “brute-force” metodom neizvedivo • Euclid’s Algorithm - efikasan algoritam za racunanje inverznih brojeva
Modularna aritmetika: mnozenje (3/3) • Brojevi 1, 3, 7 i 9 su relativno prosti (relatively prime) brojevi u odnosu na broj 10 • Nemaju zajednickih faktora sa brojem 10 (osim naravno 1) • Euler-ova f(n) funkcija (totient function) • Oznacava broj relativno prostih brojeva, u odnosu na n, koji su manji od n • Velicina funkcije f(n) • Ako je n prost broj onda f(n) = n – 1. Q: Zasto? • Ako je n produkt dva razlicita prosta broja p i q, onda f(n) = (p-1)(q-1). Q: Je li n prost broj? Izvedite izraz za f(n).
Modularna aritmetika: potenciranje (1/2) • Primjer: potenciranje modulo 10 311 = 177147 mod 10 = 7 • Primjer: eksponent 3 se moze koristiti za enkripciju, ali broj 2 ne moze. Q: Zasto?
Modularna aritmetika: potenciranje (2/2) • Zasto su stupci 1 i 5, 2 i 6, 3 i 7 isti? • Zbog zanimljivog svojstva f(n) funkcije: xy mod n = x( y mod f(n) ) mod n • U slucaju n = 10, {1, 3, 7, 9} su relativno prosti -> f(n) = 4. Stoga su stupci s te s + 4 jednaki. • Vazna napomena: Ovo svojstvo f(n) funkcije vrijedi za sve primarne brojeve n, te za sve n = pq, gdje su p i q razliciti prosti brojevi. • Za nas (RSA) je interesantan specijalan slucaj: y = 1 mod f(n) • U ovom slucaju, za svaki x imamo: xy = x( 1 mod f(n) ) = x mod n
RSA algoritam • Ron Rivest, Adi Shamir i Len Adlemam. MIT, 1977. • RSA je blok sifra gdje su plaintext i ciphertext cijeli brojevi iz {1,..., n-1} • Tipicna velicina za n je 1024 bita ili 309 decimalnih znamenki
Zašto RSA algoritam radi • M < n • PU = {e, n} • PR = {d, n} • Enkripcija: C = Me mod n • Dekripcija: • Digitalni potpis poruke M < n (primjer naseg Webmail-a) • Entitet A potpise M svojim privatnim kljucem {d,n}: S = Md mod n • Entitet B prima (M, S) te provjerava da li je zadovoljeno: M = Se mod n (M = Se mod n = Mde mod n = M)
RSA: Toy Example • Odaberi proste brojeve, p = 17 i q = 11 • Izracunaj n = pq = 17 x 11 = 187 • Izracunaj f(187) = 16 x 10 = 160. Q: Objasnite sto predstavalja f(187). • Odaberi e < f(n), tako da je e relativno prost obzirom na f(n); e = 7 • Odredi d < 160, tako da ed mod f(n) = 1; d = 23 (jer 23 x 7 = 161 = 160 + 1) • PU = {7, 187} i PR = {23, 187} Encryption Decryption ciphertext 11 887 mod 187 1123 mod 187 plaintext 88 plaintext 88 PU = {7, 187} PR = {23, 187}
Sigurnost RSA algoritma • Ako napadac moze rastaviti n na faktore p i q • Moze izracunati f(n) = (p-1)(q-1), te naci privatni kljuc d = e-1 (mod f(n)) • Postojeci algoritmi za faktorizaciju ne mogu izvrsiti faktorizaciju u polinomnom vremenu ako je n dovoljno velik (tezak problem za n veci od 1024 bitova) • Timing Attacks • Paul Kocher je pokazao da napadac moze otkriti privatni kljuc tako da biljezi koliko vremena treba racunalu da dekriptira enkriptiranu poruku. • Chosen Ciphertext Attack • Napadac bira poruku koju ce enkriptirati “zrtvinim” javnim kljucem te od “zrtve” prima poruku dekriptiranu “zrtvinim” privatnim kljucem • Svojstvo RSA: E(PU, M1) x E(PU, M2) = E (PU, M2 xM2). Q: Uvjerite se. • Primjer: napadac ne zna d te zeli dekriptirati C = Me mod n. Kako napadac moze dekriptirati C ako “zrtva” ne dekriptira C direktno za napadaca? • Izracunaj X = (C x 2e) mod n • Daj “zrtvi” X, te od nje primi Y = Xd mod n Slijedi: Xd = ((C mod n) x (2e mod n))d = ((Me mod n) x (2e mod n))d = ((2M)emod n)d = (2M) edmod n = 2M mod n • Prakticni RSA kriptosustavi dodaju random vrijednost plaintext-u prije same enkripcije (Optimal Asymmetric Encryption Padding - OAEP)
RSA enkripcija u praksi • Public Key Cryptography Standard (PKCS) • Definira enkodiranje informacija koje ce biti potpisivane ili enkriptirane upotrebom RSA algoritma • PKCS je dizajniran na nacin da sprijecava mnoge poznate napade na “textbook” RSA algoritam • PKCS#1 v2.0 encoding hashed label some 0x00 bytes 0x01 message to be encrypted random seed MGF + MGF + 0x00 masked seed masked message MGF – Mask Generating Function (hash function)
How to “break” RSA despite all the protections • Assumptions: • the algorithm is flawless • it is implemented as it was designed RSA relies on modular exponentiations for encryption and decryption • Brute force: • Multiply c by itself d times. • If c,d and n are n-bit integers, number of multiplications proportional to 2n ! • It we don’t “mod out”, memory requirements 2n ! • For security reasons, n must be a large number, e.g.n=134454746427671370568340195448570911966902998629125654163. . . • Modular exponentiation is usually implemented using a (bit by bit) square and multiplyalgorithm
RSA with square and multiply C20 = C16 x C4 = (C8)2 x (C2)2 = (C8 x C2)2 = ((C4)2 x C2)2 = ((C4 x C))2)2 = (((C2)2 x C))2)2 (only 5 multiplications v.s. 19) C25 = C16 x C8 x C = (C8)2 x (C4)2 x C = (C8 x C4)2 x C = ((C4)2 x (C2)2)2 x C = ((C4 x C2))2)2 x C = (((C2)2 x C2))2)2 x C = (((C2 x C)2)2)2 x C (only 6 multiplications vs. 24) 2010 = 101002 (1, 10, 101, 1010, 10100) = (1, 2, 5, 10, 20) 2510 = 110012 (1, 11, 110, 1100, 11001) = (1, 3, 6, 12, 25)
RSA with square and multiply x = 1 forj = 1 to w x = x·x mod N(square) ifdj == 1 thenx = x·C mod N (multiply) end if nextj returnx Decryption key: d = d1,…,dw This means that the decryption execution time depends on the key !!!
Simple Timing Attack on RSA • Timing attack: • Measure the time of the decryption execution • The measured time corresponds to the number of 1s in the key => i.e., time leaks the Hamming weight of the key!!! • Attack: • 2|k| key search is now reduced to (|k| over w), where w is the measured Hamming weight of the key and |k| is the size of the key. (i.e., key combinations with w bits equal to 1) • Best case for the attacker: w=1 => the search space is |k|The worst case for the attacker: w=|k|/2 => the search space is |k|!/(|k|/2)!x(|k|/2)! • Example: a 2^1024 now reduced to 2^612
Simple Power Analysis • (E.g., Kocher 1998) Attacker directly uses power consumption to learn bits of secret key. Wave forms visually examined. • Big features like rounds of DES, square vs. multiply in RSA exponentiation, and small features, like hamming weight of words. • Relatively easy to defend against.
Experiment: SPA on exponentiation • Attack on the top-down square and multiply exponentiation algorithm during signing or decryption • Record a power trace of the operation • Visually confirm if multiplications were executed in each step
Experiment: SPA on exponentiation • If a squaring is followed by another squaring, this bit of the exponent is zero • If the squaring is followed by a multiplication, this bit of the exponent is one
Experiment: SPA on exponentiation • If the squaring is followed by another squaring, this bit of the exponent is zero • If the squaring is followed by a multiplication, this bit of the exponent is one
RSA timing attacks over the network • Remote timing attacks are practical. by D. Boneh and D. Brumley, In proceedings of the 12th Usenix Security Symposium, 2003http://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf • The attack was performed over the campus network • The attacks extracts the bits of the factor q (n=pq) • time measurement indicates if a bit of q is 1 or 0 n measuretime Attacker Server RSAK(n)
Kriptografija asimetričnog (javnog) ključa Diffie-Hellman kriptografski sustav
Diffie-Hellman: uvod • Prvi algoritam zasnovan na javnom kljucu objavili su Diffie i Hellman 1976. godine • “New Directions in Cryptography.” W. Diffie and M. Hellman, IEEE Transactions on Information Theory, Vol. 22 #6, 1976, pp. 644-654 • Ovaj rad je prvi uveo pojam kriptografije javnog kljuca • Diffie-Hellman (DH) algoritam omogucuje “sigurnu” uspostavu simetricnog kljuca izmedju dva korisnika • Diffie-Hellman Key Exchange (Agreement) Protocol • Postoje eksenzije za uspostavu simetricnih kljuceva izmedju vise od dva korisnika tzv. Group Key Agreement • DH algoritam se zasniva na problemu odredjivanja (racunanja) diskretnog logaritma (discrete logarithm problem)
Discrete Logarithm Problem • Za dani prosti broj p, broj cije potencije modulo p generiraju sve cijele brojeve iz skupa {1,2,..., p-1} nazivamo primitivan korijen (primitive root). • Ako je g primitivan korijen prostog broja p tada su brojevi gimod p, (i = 1, 2, ..., p-1), razliciti i daju neku permutaciju niza 1, 2,..., p-1 • Za p = 7, g = 3 -> {31= 3, 32 = 2,33 = 6,34 = 4, 35 = 5,36 = 1}. Q. Je li g primitivni korijen za broj p? • Za bilo koji cijeli broj b i primitivni korijen g prostog broja p, mozemo naci jedinstveni eksponent i takav da b mod p = gi mod p ( skraceno b gi (mod p) ) • Eksponent i nazivamo diskretnim logaritmom broja b po bazi g, mod p • Racunanje diskretnih logaritama modulo prosti broj je vrlo tezak problem • Za razliku od potenciranja (postoje efikansi algoritmi) • Diffie-Hellman algoritam koristi ovu cinjenicu
Zasto Diffie-Hellman algoritam radi • Korisnik A racuna: • Korisnik B racuna: • Dakle A i B se dogovore oko zajednickog tajnog kljuca K = KAB = KBA = gXAXB mod p
Diffie-Hellman: Toy Example • p = 353, g = 3 • A izabere privatan (tajan) kljuc XA = 97 • B izabere privatan (tajan) kljuc XB = 233 • A racuna javan kljuc YA = 397 mod 353 = 40 • B racuna javan kljuc YB = 3233 mod 353 = 248 • A racuna zajednicki tajni kljuc K= 24897 mod 353 = 160 • B racuna zajednicki tajni kljuc K= 40233 mod 353 = 160 • Sigurnosni aspekti: Potencijalan napadac zna slijedece informacije: p = 353, g = 3, YA = 40, te YB = 248 • Napadac moze lako otkriti zajednicki kljuc K tako da otkrije rjesenje jednadzbe 3a mod 353 = 40 ili jednadzbe 3b mod 353 = 248 • Napadac provjerava da li je 3a mod 353 = 40 za razlicite vrijednosti a = 1, 2, ..., 95, 96, 97 • Sa velikim brojevima XA,XB i p, ovaj napad je nepraktican
Diffie-Hellman Key Exchange Protocol Alice Bob gXA mod p K = (g XB)XA mod p K = (g XA)XB mod p gXB mod p odaberi slucajan XB izracunaj gXB mod p odaberi slucajan XA izracunaj gXA mod p • Protokol nije autenticiran -> Man-In-The-Middle (MITM) napad. • Q: Dajte primjer MITM napada na DH protokol.
Diffie-Hellman protokol: MITM napad • Napadac Malice pripremi za napad dva privatna kljuca XM1 i XM2 te izracuna odgovarajuce javne kljuceve YM1 i YM2. • Alice transmitira YA Bobu. • Malice presretne YA te prosljedi YM1 Bobu. Malice izracuna KAM =(YA) XM2 mod p. • Bob primi YM1 te izracuna KBM =(YM1) XB mod p. • Bob transmitira YB Alice. • Malice presretne YB te prosljedi YM2 Alice. Malice izracuna KBM =(YB) XM1 mod p. • Alice primi YM2 te izracuna KAM =(YM2) XA mod p. • U ovom trenutku Alice i Bob misle da dijele zajednicki kljuc, ali zapravo Alice i Malice dijele kljuc KAM, dok Bob i Malice dijele kljuc KBM, gdje vjerojatno KAM KBM. • Sada Malice moze dekriptirati i modificirati sve poruke koje Alice i Bob salju jedno drugome (preko Malice).
The Station-to-Station Protocol Alice Bob odaberi slucajan XB izracunaj gXB mod p K = (gXB)XAmod p gXA mod p gXB mod p,EK( E(PRB,gXB,gXA) ) EK( E(PRA,gXB,gXA) ) digitalni potpis K = (gXB)XAmod p odaberi slucajan XA izracunaj gXA mod p • Rjesava problem neautenticiranog Diffie-Hellman protokola • Mutual entity authentication, mutual explicit key authentication • Pretpostavka je da Alice i Bob posjeduju autenticirane javne kljuceve PUB odnosnoPUA (npr., RSA javni kljucevi)
RSA i Diffie-Hellman: primjene • SSL (e.g., Webmail) • SSH (secure remote access) • IPSec (Internet Key Exchange - IKE) • PGP (e-mail)
Slef-study: CrypTool • http://www.cryptool.org