Upload
newton
View
38
Download
4
Embed Size (px)
DESCRIPTION
Kriptografija javnog (asimetri č nog) klju č a (Public-key or Asymmetric Cryptography). Mario Č agalj [email protected] 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 - PowerPoint PPT Presentation
Citation preview
Mario Č[email protected]
Sveučilište u SplituSveučilišni studijski centar
za stručne studije
4/3/2012.
Kriptografija javnog (asimetričnog) ključa
(Public-key or Asymmetric Cryptography)
::2::
Kriptografski sustav
Encryption Decryption
Key Generation
Plaintext Ciphertext Plaintext
Ke
Kd
o Kriptografija simetricnog (tajnog) kljuca: Ke = Kdo Kriptografija javnog (asimetricnog) kljuca: Ke Kd
MessageChannelKey
Channel
::3::
Public-key Cryptosystems (1/4)
o Entitet B generira par kljuceva (PUB, PRB)
o PUB – javni kljuc (public key), PRB – privatni kljuc (private key)
o PUB je javna informacija (dostupna je svima, npr. entitetu A)
o Kljuc PRB zna samo entitet B (B cuva PRB tajnim, npr. A ne zna PRB)
o Zastita tajnosti: Entitet A zeli poslati tajnu poruku m entitetu Bo A enkriptira m javnim kljucem PUB: c = E(PUB, m)
o B dekriptira c koristeci privatni kljuc PRB: m=D(PRB, c) = D(PRB, E(PUB, m))
o Nitko drugi tko ne poznaje PRB ne moze dekriptirati sifriranu poruku c
Encryption Decryption
Key Generation
m c m
PUB PRB
MessageChannelKey
Channel
Source A Destination B
::4::
Public-key Cryptosystems (2/4)
Encryption Decryption
Key Generation
m c m
PRA PUA
MessageChannel Key
Channel
Source A Destination B
o Autentikacija: Entitet A zeli poslati autenticiranu poruku m entitetu Bo A enkriptira m koristeci svoj privatni (tajni) kljuc PRA: c = E(PRA, m)
o B dekriptira poruku c koristeci javni kljuc PUA : m = D (PUA, c)
o Samo A zna PRA, stoga je samo A mogla pripremiti poruku m - source integrity
o Cijela enkriptirana poruka c sluzi kao digitalni potpis (digital signature)o Ako bi bilo nemoguce promjeniti poruku m bez poznavanja privatnog kljuca
PRA, m je takodjer autenticiran u smislu data integrity
o Q: Je li osigurana tajnost poruke m u ovo primjeru?
::5::
Public-key Cryptosystems (3/4)
Key Generation
Source A Destination B
Encryptionm
Encryption Decryption Decryptionm
Key Generation
PUB PRBPRA PUA
o Autentikacija i tajnost: Entitet A zeli poslati autenticiranu i tajnu poruku m entitetu Bo Realizacija dvostrukim koristenjem kripto-sustava baziranog na javnom
kljucu
o A enkriptira m kako slijedi: c = E(PRA, m), c’ = E(PUB, E(PRA, m))
o B dekriptira poruku c’: c = D (PRB, c’), m = D (PUA, c)
o Q: Pretpostavite da A i B zamjene uloge. Koristeci standardnu notaciju, opisite proceduru koju izvrsavaju A i B.
c c’ c
::6::
Klasifikacija kriptosustava prema namjeni
o Enkripcija/dekripcijao Posiljalac enkriptira poruku koristeci javni kljuc primaoca.
o Digitalni potpiso 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.
o Razmjena kljuceva (key exchange)o Dva entiteta (korisnika, racunala) zele uspostaviti sesijski
(tajni) kljuc za upotrebu u simetricnom kriptosustavuo Najpoznatiji protokol iz ove kategorije: Diffie-Hellman Key
Exchange Protocol
RSA(Rivest, Shamir and Adleman)
Kriptografija asimetričnog (javnog) ključa
::8::
RSA u praksi
o Webmail (Secure Socket Layer - SSL)
PKCS: Public Key Cryptography Standard
::9::
Modularna aritmetika: zbrajanje
o Primjer: zbrajanje modulo 105 + 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
o Q: Zbrajanje modulo 10 sa tajnom konstantom K daje sifru. Koju?
+ 0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9 0
2 2 3 4 5 6 7 8 9 0 1
3 3 4 5 6 7 8 9 0 1 2
4 4 5 6 7 8 9 0 1 2 3
5 5 6 7 8 9 0 1 2 3 4
6 6 7 8 9 0 1 2 3 4 5
7 7 8 9 0 1 2 3 4 5 6
8 8 9 0 1 2 3 4 5 6 7
9 9 0 1 2 3 4 5 6 7 8
::10::
Modularna aritmetika: mnozenje (1/3)
o Primjer: mnozenje modulo 105 5 mod 10 = 5, 3 9 mod 10 = 7
o Q: Samo mnozenje sa 1, 3, 7 ili 9 moze raditi kao sifra. Zasto?
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 0 2 4 6 8
3 0 3 6 9 2 5 8 1 4 7
4 0 4 8 2 6 0 4 8 2 6
5 0 5 0 5 0 5 0 5 0 5
6 0 6 2 8 4 0 6 2 8 4
7 0 7 4 1 8 5 2 9 6 3
8 0 8 6 4 2 0 8 6 4 2
9 0 9 8 7 6 5 4 3 2 1
::11::
Modularna aritmetika: mnozenje (2/3)
o Primjer: poruka m = 3, tajni kljuc K = 7o Enkripcija: c = m K = 3 7 = 21 mod 10 = 1 o Dekripcija: m = c K-1 = 1 7-1 = 1 3 = 3 mod 10 = 3
o 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)
o U nasem primjeru (prethodna tablica) samo brojevi 1, 3, 7 ili 9 imaju multiplikativne inverzne brojeve modulo 10o Q: Nadjite 9-1 i 1-1 modulo 10.
o Napomena: za vrlo velike brojeve n (npr. 100 znamenkasti broj) racunanje inverza “brute-force” metodom neizvedivoo Euclid’s Algorithm - efikasan algoritam za racunanje inverznih brojeva
::12::
Modularna aritmetika: mnozenje (3/3)
o Brojevi 1, 3, 7 i 9 su relativno prosti (relatively prime) brojevi u odnosu na broj 10o Nemaju zajednickih faktora sa brojem 10 (osim naravno 1)
o Euler-ova (n) funkcija (totient function)o Oznacava broj relativno prostih brojeva, u odnosu na n, koji su manji od
n
o Velicina funkcije (n)o Ako je n prost broj onda (n) = n – 1. Q: Zasto?
o Ako je n produkt dva razlicita prosta broja p i q, onda (n) = (p-1)(q-1). Q: Je li n prost broj? Izvedite izraz za (n).
::13::
Modularna aritmetika: potenciranje (1/2)
o Primjer: potenciranje modulo 10311 = 177147 mod 10 = 7
o Primjer: eksponent 3 se moze koristiti za enkripciju, ali broj 2 ne moze. Q: Zasto?
xy 0 1 2 3 4 5 6 7 8 9 10 11 12
0 - 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1 2 4 8 6 2 4 8 6 2 4 8 6
3 1 3 9 7 1 3 9 7 1 3 9 7 1
4 1 4 6 4 6 4 6 4 6 4 6 4 6
5 1 5 5 5 5 5 5 5 5 5 5 5 5
6 1 6 6 6 6 6 6 6 6 6 6 6 6
7 1 7 9 3 1 7 9 3 1 7 9 3 1
8 1 8 4 2 6 8 4 2 6 8 4 2 6
9 1 9 1 9 1 9 1 9 1 9 1 9 1
::14::
Modularna aritmetika: potenciranje (2/2)
o Zasto su stupci 1 i 5, 2 i 6, 3 i 7 isti?o Zbog zanimljivog svojstva (n) funkcije: xy mod n = x( y mod (n) )
mod n
o U slucaju n = 10, {1, 3, 7, 9} su relativno prosti -> (n) = 4. Stoga su stupci s te s + 4 jednaki.
o Vazna napomena: Ovo svojstvo (n) funkcije vrijedi za sve primarne brojeve n, te za sve n = pq, gdje su p i q razliciti prosti brojevi.
o Za nas (RSA) je interesantan specijalan slucaj: y = 1 mod (n)o U ovom slucaju, za svaki x imamo: xy = x( 1 mod (n) ) = x mod n
::15::
RSA algoritam
o Ron Rivest, Adi Shamir i Len Adlemam. MIT, 1977.o RSA je blok sifra gdje su plaintext i ciphertext cijeli brojevi iz {1,...,
n-1}o Tipicna velicina za n je 1024 bita ili 309 decimalnih znamenki
Generiranje kljuceva
Odaberi brojeve p i q ( p q ) p i q su prosti i razliciti (p q)
Izracunaj n = pq
Izracunaj (n) = (p-1)(q-1)
Odaberi cijeli broj e e je relativno prost u odnosu na (n); 1 < e < (n)
Izracunaj d ed mod (n) = 1, d je multiplikativan inverz od e
Javan kljuc (public key) PU = {e, n}
Privatni kljuc (private key) PR = {d, n}Enkripcija
Plaintext: M < n
Ciphertext: C = Me mod n
Dekripcija
Ciphertext: C
Plaintext: M = Cd mod n
::16::
Zašto RSA algoritam radi
o M < no PU = {e, n}o PR = {d, n}
o Enkripcija: C = Me mod no Dekripcija:
o Digitalni potpis poruke M < n (primjer naseg Webmail-a)o Entitet A potpise M svojim privatnim kljucem {d,n}: S = Md mod no Entitet B prima (M, S) te provjerava da li je zadovoljeno: M = Se mod n
(M = Se mod n = Mde mod n = M)
M = Cd mod n
= Med mod n
= M(ed mod (n)) mod n
= M1 mod n
= M
::17::
RSA: Toy Example
1. Odaberi proste brojeve, p = 17 i q = 112. Izracunaj n = pq = 17 x 11 = 187
3. Izracunaj (187) = 16 x 10 = 160. Q: Objasnite sto predstavalja (187).
4. Odaberi e < (n), tako da je e relativno prost obzirom na (n); e = 7
5. Odredi d < 160, tako da ed mod (n) = 1; d = 23 (jer 23 x 7 = 161 = 160 + 1)
6. PU = {7, 187} i PR = {23, 187}
887 mod 187plaintext
88
ciphertext 11
1123 mod 187plaintext
88
Encryption Decryption
PU = {7, 187} PR = {23, 187}
::18::
Sigurnost RSA algoritma
o Ako napadac moze rastaviti n na faktore p i qo Moze izracunati (n) = (p-1)(q-1), te naci privatni kljuc d = e-1 (mod (n))o Postojeci algoritmi za faktorizaciju ne mogu izvrsiti faktorizaciju u
polinomnom vremenu ako je n dovoljno velik (tezak problem za n veci od 1024 bitova)
o Timing Attackso Paul Kocher je pokazao da napadac moze otkriti privatni kljuc tako da biljezi
koliko vremena treba racunalu da dekriptira enkriptiranu poruku.o Chosen Ciphertext Attack
o Napadac bira poruku koju ce enkriptirati “zrtvinim” javnim kljucem te od “zrtve” prima poruku dekriptiranu “zrtvinim” privatnim kljucem
o Svojstvo RSA: E(PU, M1) x E(PU, M2) = E (PU, M2 x M2). Q: Uvjerite se.o 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?
1. Izracunaj X = (C x 2e) mod n2. Daj “zrtvi” X, te od nje primi Y = Xd mod nSlijedi: Xd = ((C mod n) x (2e mod n))d
= ((Me mod n) x (2e mod n))d
= ((2M)e mod n)d
= (2M) ed mod n = 2M mod n
o Prakticni RSA kriptosustavi dodaju random vrijednost plaintext-u prije same enkripcije (Optimal Asymmetric Encryption Padding - OAEP)
::19::
RSA enkripcija u praksi
o Public Key Cryptography Standard (PKCS)o Definira enkodiranje informacija koje ce biti potpisivane ili enkriptirane
upotrebom RSA algoritmao PKCS je dizajniran na nacin da sprijecava mnoge poznate napade na
“textbook” RSA algoritam
o PKCS#1 v2.0 encoding
message to be encryptedsome 0x00bytes
hashedlabel
masked message
randomseed
maskedseed0x00
MGFMGF
MGFMGF
+
+
0x01
MGF – Mask Generating Function (hash function)
::20::
How to “break” RSA despite all the protections
o Assumptions: o the algorithm is flawlesso it is implemented as it was
designed
RSA relies on modular exponentiations
for encryption and decryption
Decryption
Ciphertext: C
Plaintext: m = cd mod n
o Brute force:o Multiply c by itself d times. o If c,d and n are n-bit integers, number of multiplications
proportional to 2n !o It we don’t “mod out”, memory requirements 2n ! o For security reasons, n must be a large number, e.g.
n=134454746427671370568340195448570911966902998629125654163. . .
o Modular exponentiation is usually implemented using a (bit by bit) square and multiply algorithm
::21::
RSA with square and multiply
Decryption
Ciphertext: C
Plaintext: M = Cd mod n
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)
2010 = 101002
(1, 10, 101, 1010, 10100) = (1, 2, 5, 10, 20)
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)
2510 = 110012
(1, 11, 110, 1100, 11001) = (1, 3, 6, 12, 25)
::22::
RSA with square and multiply
x = 1
for j = 1 to w
x = x·x mod N (square)if dj == 1
then x = x·C mod N (multiply)end if
next j
return x
Decryption
Ciphertext: C
Plaintext: M = Cd mod n
Decryption key: d = d1,…,dw
This means that the decryption execution time depends on the key !!!
::23::
Simple Timing Attack on RSA
o Timing attack:o Measure the time of the decryption executiono The measured time corresponds to the number of 1s in the key => i.e.,
time leaks the Hamming weight of the key!!!
o Attack: o 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)
o 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)!
o Example: a 2^1024 now reduced to 2^612
::24::
(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.
Simple Power Analysis
::25::
o Attack on the top-down square and multiply exponentiation algorithm during signing or decryption
o Record a power trace of the operationo Visually confirm if multiplications were executed in each
step
Experiment: SPA on exponentiation
::26::
o If a squaring is followed by another squaring, this bit of the exponent is zero
o If the squaring is followed by a multiplication, this bit of the exponent is one
Experiment: SPA on exponentiation
::27::
o If the squaring is followed by another squaring, this bit of the exponent is zero
o If the squaring is followed by a multiplication, this bit of the exponent is one
Experiment: SPA on exponentiation
::28::
RSA timing attacks over the network
o 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
o The attack was performed over the campus network
o The attacks extracts the bits of the factor q (n=pq)o time measurement indicates if a bit of q is 1 or 0
Attacker Servermeasure
time
n
RSAK(n)
Diffie-Hellman kriptografski sustav
Kriptografija asimetričnog (javnog) ključa
::30::
Diffie-Hellman: uvod
o Prvi algoritam zasnovan na javnom kljucu objavili su Diffie i Hellman 1976. godineo “New Directions in Cryptography.” W. Diffie and M. Hellman, IEEE
Transactions on Information Theory, Vol. 22 #6, 1976, pp. 644-654o Ovaj rad je prvi uveo pojam kriptografije javnog kljuca
o Diffie-Hellman (DH) algoritam omogucuje “sigurnu” uspostavu simetricnog kljuca izmedju dva korisnikao Diffie-Hellman Key Exchange (Agreement) Protocolo Postoje eksenzije za uspostavu simetricnih kljuceva izmedju
vise od dva korisnika tzv. Group Key Agreement
o DH algoritam se zasniva na problemu odredjivanja (racunanja) diskretnog logaritma (discrete logarithm problem)
::31::
Discrete Logarithm Problem
o 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).o Ako je g primitivan korijen prostog broja p tada su brojevi gi mod p, (i = 1,
2, ..., p-1), razliciti i daju neku permutaciju niza 1, 2,..., p-1
o 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?
o 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) )
o Eksponent i nazivamo diskretnim logaritmom broja b po bazi g, mod p
o Racunanje diskretnih logaritama modulo prosti broj je vrlo tezak problemo Za razliku od potenciranja (postoje efikansi algoritmi)o Diffie-Hellman algoritam koristi ovu cinjenicu
::32::
Diffie-Hellman algoritam
Dijeljeni javni elementi
p prosti broj
g g < p; g je primitivni korijen broja p
Korisnik A generira kljuceve
Odaberi privatan kljuc XA XA < p
Izracunaj javni kljuc YA YA = g XA mod p
Korisnik B generira kljuceve
Odaberi privatan kljuc XB XB < p
Izracunaj javni kljuc YB YB = g XB mod p
Korisnik A generira tajni (simetricni) kljuc
KAB = (YB) XA mod pKorisnik B generira tajni (simetricni)
kljuc
KBA = (YA) XB mod p
::33::
Zasto Diffie-Hellman algoritam radi
o Korisnik A racuna:
o Korisnik B racuna:
o Dakle A i B se dogovore oko zajednickog tajnog kljuca
K = KAB = KBA = g XAXB mod p
KAB = (YB) XA mod p
= (g XB mod p) XA mod p
= (g XB) XA mod p
= g XBXA mod p
KBA = (YA) XB mod p
= (g XA mod p) XB mod p
= (g XA) XB mod p
= g XAXB mod p
::34::
Diffie-Hellman: Toy Example
1. p = 353, g = 32. A izabere privatan (tajan) kljuc XA = 97
3. B izabere privatan (tajan) kljuc XB = 233
4. A racuna javan kljuc YA = 397 mod 353 = 40
5. B racuna javan kljuc YB = 3233 mod 353 = 248
6. A racuna zajednicki tajni kljuc K= 24897 mod 353 = 1607. B racuna zajednicki tajni kljuc K= 40233 mod 353 = 160
o Sigurnosni aspekti: Potencijalan napadac zna slijedece informacije: p = 353, g = 3, YA = 40, te YB = 248
o Napadac moze lako otkriti zajednicki kljuc K tako da otkrije rjesenje jednadzbe 3a mod 353 = 40 ili jednadzbe 3b mod 353 = 248
o Napadac provjerava da li je 3a mod 353 = 40 za razlicite vrijednosti a = 1, 2, ..., 95, 96, 97
o Sa velikim brojevima XA,XB i p, ovaj napad je nepraktican
::35::
Diffie-Hellman Key Exchange Protocol
o Protokol nije autenticiran -> Man-In-The-Middle (MITM) napad.
o Q: Dajte primjer MITM napada na DH protokol.
odaberi slucajan XA
izracunaj gXA mod p
odaberi slucajan XB
izracunaj gXB mod p
gXA mod p
gXB mod p
BobAlice
K = (g XB)XA mod p K = (g XA)XB mod p
::36::
Diffie-Hellman protokol: MITM napad
1. Napadac Malice pripremi za napad dva privatna kljuca XM1 i XM2 te izracuna odgovarajuce javne kljuceve YM1 i YM2.
2. Alice transmitira YA Bobu.
3. Malice presretne YA te prosljedi YM1 Bobu. Malice izracuna KAM =(YA) XM2 mod p.
4. Bob primi YM1 te izracuna KBM =(YM1) XB mod p.
5. Bob transmitira YB Alice.
6. Malice presretne YB te prosljedi YM2 Alice. Malice izracuna KBM =(YB) XM1 mod p.
7. Alice primi YM2 te izracuna KAM =(YM2) XA mod p.
o 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.
o Sada Malice moze dekriptirati i modificirati sve poruke koje Alice i Bob salju jedno drugome (preko Malice).
::37::
The Station-to-Station Protocol
o Rjesava problem neautenticiranog Diffie-Hellman protokolao Mutual entity authentication, mutual explicit key authentication
o Pretpostavka je da Alice i Bob posjeduju autenticirane javne kljuceve PUB odnosno PUA (npr., RSA javni kljucevi)
BobAlice
odaberi slucajan XA
izracunaj gXA mod p
odaberi slucajan XB
izracunaj gXB mod p
K = (gXB
)XA
mod p
gXA mod p
gXB mod p,EK( E(PRB,gX
B,gXA) )
K = (gXB
)XA
mod p
EK( E(PRA,gXB,gX
A) )
digitalni potpis
::38::
RSA i Diffie-Hellman: primjene
o SSL (e.g., Webmail)o SSH (secure remote access)o IPSec (Internet Key Exchange - IKE)o PGP (e-mail)
::39::
Slef-study: CrypTool
o http://www.cryptool.org