420 likes | 601 Views
Kriptografija zasnovana na asimetri č nim klju č evima (eng. public-key or asymmetric cryptography ). Mario Čagalj mario.cagalj@fesb.hr FESB 25/3/2014. Kriptografski sustav. Ciphertext. Plaintext. Plaintext. Encryption. Decryption. Message Channel. Key Channel. k e. k d.
E N D
Kriptografija zasnovana na asimetričnim ključevima(eng. public-key or asymmetric cryptography) Mario Čagalj mario.cagalj@fesb.hr FESB 25/3/2014.
Kriptografski sustav Ciphertext Plaintext Plaintext Encryption Decryption Message Channel Key Channel ke kd Key Generation
Public-key Cryptosystems (1/3) • Entitet B generira par enkripcijskih kljuceva (PUB, PRB) • PUB– javni kljuc (eng. public key), PRB– privatni kljuc (eng. private key) • Javni kljuc PUB javna je informacija (dostupna je i poznata entitetu A) • Privatni kljuc PRB zna samo entitet B (B cuva PRB tajnim) • Entitet A zeli poslati tajnu poruku mentitetu B (zastita tajnosti) • A enkriptira poruku m javnim kljucem PUB: c = E(PUB, m) • B dekriptira ciphertext c privatnim kljucem PRB: m=D(PRB, c) • Samo entitet B moze dekriptirati ciphertext c (samo B poznaje PRB) c m m Encryption Decryption Message Channel Key Channel PUB PRB Key Generation Source A Destination B
Public-key Cryptosystems (2/3) • A zeli poslati autentificiranu poruku m entitetu B (autentifikacija) • A enkriptira m svojim privatnim kljucemPRA: c = E(PRA, m) • B prima (m,c) te dekriptira ciphertext c javni kljucem PUA : m’ = D (PUA, c) • B provjerava je li vrijedi m’ = m • Svojstva enkripcije privatnim kljucem • Source integrity - samo A zna PRA, stoga je samo A mogla pripremiti poruku m • Data integrity - ako bi bilo nemoguce promjeniti m bez poznavanja PRA • Digital signature - ciphertext c sluzi kao digitalan potpis (m,c) m m’ Encryption Decryption Message Channel Key Channel PRA PUA Key Generation Source A Destination B
Public-key Cryptosystems (3/3) • A zeli poslati autentificiranu 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 (zastita tajnosti) • Posiljalac enkriptira poruku koristeci javni kljuc primaoca • Digitalni potpis (zastita integriteta) • Posiljalac “potpisuje” poruku koristeci svoj privatni kljuc • Najcesce se ne potpisuje cijela poruka vec mali blok podataka (message digest) koji se dobije primjenom “one-way” funkcijena originalnu poruku • 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)
Modularna aritmetika: zbrajanje • Primjer: zbrajanje modulo 10 (a + b mod 10) • Q: Zbrajanje modulo 10 sa tajnom konstantom k daje sifru. Koju?
Modularna aritmetika: mnozenje (1/3) • Primjer: mnozenje modulo 10 (a x b mod 10) • 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: • Dekripcija: • Multiplikativni inverzni broj (eng. multiplicative inverse)modulo n broja a (pisano a-1 ) je broj b za koji vrijedi: • 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. 600-znamenkasti broj) racunanje inverza “brute-force” metodom neizvedivo • Euklidovalgoritam - efikasan algoritam za racunanje inverznih brojeva • Euklidov algoritam razvijen za racunanje najveceg zajednickog djelitelja
Modularna aritmetika: mnozenje (3/3) • Brojevi 1, 3, 7 i 9 su relativno prosti (eng. relatively prime) brojevi u odnosu na broj 10 • Nemaju zajednickih faktora sa brojem 10 (osim naravno 1) • gdc(a,10) = 1, a {1,3,7,9} (gdc – greatest common divisor) • Samo oni brojevi a za koje vrijedi gdc(a,m) = 1 imaju multiplikativne inverze modulo m • Euler-ova f(n) funkcija(“phi” funkcija) • 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: Izvedite izraz za f(n).
Modularna aritmetika: potenciranje (1/2) • Primjer: potenciranje modulo 10 (ab mod 10) • 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 identicni? • Zbog zanimljivog svojstva Euler-ovef(n) funkcije • U slucaju n = 10, {1, 3, 7, 9} su relativno prosti -> f(n) = 4 • Stoga su stupci s te s + 4i (i=1,2,...)identicni • Vazna napomena: Ovo svojstvo f(n) funkcije vrijedi za sve proste brojeve n, te za sve n = pq, gdje su p i q razliciti prosti brojevi • RSA koristi specijalan slucaj gore navedene jednadzbe • U ovom slucaju, za svaki a imamo: ab=a(1 mod f(n)) a mod n • U slucaju n = 10, a(1 mod f(n)) a(5 mod f(n)) a(9 mod f(n)) a 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 2048 bita (> 600 dekatskih znamenki)
Ispravnost RSA algoritma • M < n, javni kljuc PU = {e, n}, privatni kljuc PR = {d, n} • Enkripcija: • Dekripcija: • Digitalni potpis poruke M < n (primjer: https protokol) • Entitet A potpise M svojim privatnim kljucem PR={d,n}: • Entitet B prima (M, S) te provjerava da li je zadovoljeno: • Ciphertext S predstavlja digitalni potpis poruke M • Entitet B koristi javni kljuc PU={e,n} entiteta A za provjeru potpisa S
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: Sto predstavlja f(187)? ) • Odaberi e < f(n), tako da je e relativno prost obzirom na f(n); e = 7 • Odredi d < 160, tako da; d = 23 (jer 23 x 7=161) • 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 mozerastaviti n na proste faktore p i q • Moze izracunati f(n) = (p-1)(q-1), te naci privatni kljuc d • Poznavajci f(n) i javni kljuc e, napadac moze odrediti privatni kljuc primjenom prosirenog Euklidovog algoritma • Postojeci algoritmi za faktorizaciju ne mogu napraviti faktorizaciju u polinomnom vremenu ako je n velik • Jako tezak problem za npr. 2048-bitni n
Sigurnost RSA algoritma • RSA enkripcija u izvornom obliku je deterministicka • Za fiksni enkripcijski (javni) kljuc, isti plaintext se uvijek mapira u isti ciphertext (slicno kao kod monoalfabetskih sifri) • Plaintext vrijednosti 0 i 1 daju identicne ciphertext vrijednosti (0 i 1) • Mali plaintextovi i mali javni kljucevi podlozni brute-force napadu • RSA enkripcija u izvornom obliku ima sljedece nezeljeno svojstvo E(PU, M1) x E(PU, M2) = E (PU, M2 xM2) • Primjer: napadac ne zna d, azelidekriptirati • Napadac izracuna: • Trazi od “zrtve” da digitalno potpise X (“zrtva” izracuna i vrati napadacu ) Posljedica: • U praksi se zbog navedenih problema plaintext-u uvijek dodajeslucajna (eng. random)vrijednostprijeenkripcije
RSA enkripcija u praksi • Public Key Cryptography Standard (PKCS) • Definira nacin enkodiranja informacija koje ce biti potpisivane ili enkriptirane upotrebom RSA algoritma • Standardizira Optimal Asymmetric Encryption Padding (OAEP) • PKCS#1 v2.0 encoding hashed label some 0x00 bytes 0x01 message to be encrypted random seed MGF + MGF – Mask Generating Function (a hash function, e.g., SHA-1) MGF + 0x00 masked seed masked message
Encrypting and Decrypting Efficiently • RSA relies on modular exponentiations for encryption and decryption • Straightforward approach • Multiply C by itself d times • For k-bit integers C,d and n, the number of multiplications ~2k • It we don’t “reduce mod n”, memory requirements ~2k • For security reasons, n must be large (e.g., k=2048 bits long) • Clearly, this approach does not work (or is inefficient) • Efficient approach utilizes thesquare and multiply algorithm
RSA with Square and Multiply C20 =(C10)2 = ((C5)2)2 = (((C4 x C)2)2 = (((C2)2 x C))2)2 (only 5 multiplications v.s. 19) C25 = C24 x C = (C12)2 x C = ((C6)2)2 x C = (((C3)2)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 M = 1 fori = 1 to k M = Mx M mod n (square and reduce mod n) if di == 1 M = M x C mod n (multiply and reduce mod n) returnM RSA k-bits long decryption key: d = d1,…,dk • Complexity: at most 2log2(d) = 2k multiplications and divisions • Important: the decryption execution time depends on the key
Simple Timing Attack on RSA • Timing attacks • Measure the time of the decryption execution • The measured time corresponds to the number of 1s in the key • In other words, time leaks the Hamming weight (w) of the key • Simple attack • Key search complexity is reduced from 2k to • In other words, from all possible k-bit combinations to those with w bits equal to 1 • The best case for the attacker: w=1, the search space onlyk keys • The worst case for the attacker: w=k/2
Simple Power Analysis • (Kocher 1998) Attacker directly uses power consumption to learn bits of secret key • Many implementations of modern cryptosystems (DES, AES, RSA) vulnerable to timing and power analysis attacks • Side-channel attacks
Experiment: SPA on Exponentiation • Attack on the 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 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
RSA timing attacks over the network • “Remote timing attacks are practical”, by D. Boneh and D. Brumley, 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 prime factor q (n=pq) • Time measurement indicates if a bit of q is 1 or 0 c measuretime Attacker Server RSAK(c)
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, 1976 • 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 for Zp* • Zp* oznacava (za prosti broj p) konacnu multiplikativnu grupu velicine |Zp*| = p-1 (i.e., Zp*={1,2,...,p-1} ) • Broj g Zp*, cije potencije “mod p” generiraju sve cijele brojeve grupe Zp*nazivamo primitivanelement ili generatorgrupe Zp* • Zagenerator grupe Zp* vrijedi: (gimod p) Zp*, (i = 1, 2, ..., p-1) • Pri tome: (gi mod p) (gj mod p), za i j • Primjer: p = 7, g = 3 -> {313, 322,336,344, 355,361} • Za danu grupu Zp*, generator te grupe g Zp* i drugi clan/element y Zp*, discrete logarithm problem (DLP) je problem odredjivanja cijelog broja x Zp* takovog da vrijedi: y gxmod p • Racunanje diskretnih logaritama je vrlo tezak problem za veliki p • Za razliku od potenciranja (za koje postoje efikasni algoritmi) • Diffie-Hellman algoritam koristi ovu cinjenicu
Ispravnost Diffie-Hellman algoritma • 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 poznaje p = 353, g = 3, YA = 40, te YB = 248 • Napadac moze otkriti zajednicki kljuc K tako da nadje rjesenje jednadzbe 3a mod 353 = 40 ili jednadzbe 3b mod 353 = 248 • Napadac provjeravaza a = 1, 2, ..., 96, 97...vrijedi li 3a mod 353 = 40 • Za velike brojeve XA,XB i p (npr., 2048-bitni), 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: Opisite MITM napad na DH protokol
Diffie-Hellman protokol: MITM napad • Mallory za napadpripremi dva privatna kljuca XM1 i XM2 , te izracuna odgovarajuce DH javne kljuceve YM1 i YM2. • Alice transmitira YA Bobu. • Mallory presretne YA te prosljedi YM1 Bobu. Mallory izracuna KAM =(YA)XM2. • Bob primi YM1 te izracuna KBM =(YM1) XB. • Bob transmitira YB Alice. • Mallory presretne YB te prosljedi YM2 Alice. Mallory izracuna KBM =(YB) XM1. • Alice primi YM2 te izracuna KAM =(YM2) XA mod p. • Alice i Bob misle da dijele zajednicki kljuc, ali zapravo Alice i Mallory dijele kljuc KAM, dok Bob i Mallory dijele kljuc KBM • Sada Malice moze dekriptirati i modificirati sve poruke koje Alice i Bob salju jedno drugome (preko Mallory)
The Station-to-Station Protocol Alice Bob odaberi slucajan XB izracunaj gXB mod p K = (gXA)XBmod p gXA mod p gXB mod p,EK(EPR_B(gXB,gXA)) EK( EPR_A(gXB,gXA) ) 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) digitalni potpis
RSA i Diffie-Hellman: primjene • SSL/TLS (https) • SSH, SFTP (secure remote access) • IPSec (Internet Key Exchange - IKE) • PGP (e-mail) • ...