Sigurnost bezicnih racunalnih mreza

Download Report

Transcript Sigurnost bezicnih racunalnih mreza

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
Plaintext
Encryption
Ke
Key
Channel
Ciphertext
Message
Channel
Decryption
Plaintext
Kd
Key
Generation
o
o
Kriptografija simetricnog (tajnog) kljuca: Ke = Kd
Kriptografija javnog (asimetricnog) kljuca: Ke  Kd
::2::
Public-key Cryptosystems (1/4)
m
c
Encryption
PUB
Key
Channel
Message
Channel
Source A
o
m
PRB
Key
Generation
Destination B
Entitet B generira par kljuceva (PUB, PRB)
o
o
o
o
Decryption
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 m entitetu B
o
o
o
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
::3::
Public-key Cryptosystems (2/4)
m
Encryption
PRA
Source A
o
Key
Generation
c
Message
Channel
Decryption
Key
Channel
m
PUA
Destination B
Autentikacija: Entitet A zeli poslati autenticiranu poruku m entitetu B
o
o
o
o
o
o
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?
::4::
Public-key Cryptosystems (3/4)
m
Encryption
PRA
Source A
c
Encryption
PUB
c’
Decryption
PRB
Key
Generation
c
Decryption
m
PUA
Destination B
Key
Generation
o
Autentikacija i tajnost: Entitet A zeli poslati autenticiranu i tajnu poruku
m entitetu B
o
o
o
o
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.
::5::
Klasifikacija kriptosustava prema namjeni
o
Enkripcija/dekripcija
o
o
Digitalni potpis
o
o
Posiljalac enkriptira poruku koristeci javni kljuc primaoca.
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)
o
o
Dva entiteta (korisnika, racunala) zele uspostaviti sesijski (tajni)
kljuc za upotrebu u simetricnom kriptosustavu
Najpoznatiji protokol iz ove kategorije: Diffie-Hellman Key
Exchange Protocol
::6::
Kriptografija asimetričnog (javnog) ključa
RSA
(Rivest, Shamir and Adleman)
RSA u praksi
o
Webmail (Secure Socket Layer - SSL)
PKCS: Public Key Cryptography Standard
::8::
Modularna aritmetika: zbrajanje
o
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
o
+
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
Q: Zbrajanje modulo 10 sa tajnom konstantom K daje sifru. Koju?
::9::
Modularna aritmetika: mnozenje (1/3)
o
Primjer: mnozenje modulo 10
5  5 mod 10 = 5, 3  9 mod 10 = 7
o

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
Q: Samo mnozenje sa 1, 3, 7 ili 9 moze raditi kao sifra. Zasto?
::10::
Modularna aritmetika: mnozenje (2/3)
o
Primjer: poruka m = 3, tajni kljuc K = 7
o
o
o
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)
o
U nasem primjeru (prethodna tablica) samo brojevi 1, 3, 7 ili 9 imaju
multiplikativne inverzne brojeve modulo 10
o
o
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
o
Euclid’s Algorithm - efikasan algoritam za racunanje inverznih brojeva
::11::
Modularna aritmetika: mnozenje (3/3)
o
Brojevi 1, 3, 7 i 9 su relativno prosti (relatively prime) brojevi u odnosu
na broj 10
o
o
Euler-ova f(n) funkcija (totient function)
o
o
Nemaju zajednickih faktora sa brojem 10 (osim naravno 1)
Oznacava broj relativno prostih brojeva, u odnosu na n, koji su manji od n
Velicina funkcije f(n)
o
Ako je n prost broj onda f(n) = n – 1. Q: Zasto?
o
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).
::12::
Modularna aritmetika: potenciranje (1/2)
o
Primjer: potenciranje modulo 10
311 = 177147 mod 10 = 7
o
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
Primjer: eksponent 3 se moze koristiti za enkripciju, ali broj 2 ne moze. Q:
Zasto?
::13::
Modularna aritmetika: potenciranje (2/2)
o
Zasto su stupci 1 i 5, 2 i 6, 3 i 7 isti?
o Zbog zanimljivog svojstva f(n) funkcije: xy mod n = x( y mod f(n) ) mod n
o U slucaju n = 10, {1, 3, 7, 9} su relativno prosti -> f(n) = 4. Stoga su
stupci s te s + 4 jednaki.
o
o
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)
o
U ovom slucaju, za svaki x imamo: xy = x( 1 mod f(n) ) = x mod n
::14::
RSA algoritam
o
o
Ron Rivest, Adi Shamir i Len Adlemam. MIT, 1977.
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 f(n) = (p-1)(q-1)
Odaberi cijeli broj e
e je relativno prost u odnosu na f(n); 1 < e < f(n)
Izracunaj d
ed mod f(n) = 1, d je multiplikativan inverz od e
Javan kljuc (public key)
PU = {e, n}
Privatni kljuc (private key)
PR = {d, n}
Enkripcija
Plaintext:
Ciphertext:
Dekripcija
M<n
C = Me mod n
Ciphertext:
Plaintext:
C
M = Cd mod n
::15::
Zašto RSA algoritam radi
o
o
o
o
o
M<n
PU = {e, n}
PR = {d, n}
Enkripcija: C = Me mod n
Dekripcija:M = Cd mod n
= Med mod n
= M(ed mod f(n)) mod n
= M1 mod n
= M
o
Digitalni potpis poruke M < n (primjer naseg Webmail-a)
o
o
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)
::16::
RSA: Toy Example
1.
2.
Odaberi proste brojeve, p = 17 i q = 11
Izracunaj n = pq = 17 x 11 = 187
3.
Izracunaj f(187) = 16 x 10 = 160. Q: Objasnite sto predstavalja f(187).
4.
Odaberi e < f(n), tako da je e relativno prost obzirom na f(n); e = 7
5.
6.
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
plaintext
88
887 mod 187
PU = {7, 187}
ciphertext
11
Decryption
1123 mod 187
plaintext
88
PR = {23, 187}
::17::
Sigurnost RSA algoritma
o
Ako napadac moze rastaviti n na faktore p i q
o Moze izracunati f(n) = (p-1)(q-1), te naci privatni kljuc d = e-1 (mod f(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 Attacks
o
Chosen Ciphertext Attack
o
o
o
o
Paul Kocher je pokazao da napadac moze otkriti privatni kljuc tako da biljezi
koliko vremena treba racunalu da dekriptira enkriptiranu poruku.
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 x M2). 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?
1. Izracunaj X = (C x 2e) mod n
2. 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)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)
::18::
RSA enkripcija u praksi
o
Public Key Cryptography Standard (PKCS)
o
o
o
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 some 0x00
label
bytes
0x01
message to be encrypted
random
seed
MGF
+
0x00
+
MGF
masked
seed
MGF – Mask Generating Function (hash function)
masked message
::19::
How to “break” RSA despite all the protections
o
Assumptions:
o
o
the algorithm is flawless
it is implemented as it was
designed
Decryption
Ciphertext:
Plaintext:
o
C
m = cd mod n
RSA relies on modular
exponentiations
for encryption and decryption
Brute force:
o
o
o
o
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.
o
. .
Modular exponentiation is usually implemented using a (bit by
bit) square and multiply algorithm
::20::
RSA with square and multiply
Decryption
Ciphertext:
Plaintext:
C20 = C16 x C4
C
M = Cd mod n
C25 = C16 x C8 x C
= (C8)2 x (C2)2
= (C8)2 x (C4)2 x C
= (C8 x C2)2
= (C8 x C4)2 x C
= ((C4)2 x C2)2
= ((C4)2 x (C2)2)2 x C
= ((C4 x C))2)2
= ((C4 x C2))2)2 x C
= (((C2)2 x C))2)2
= (((C2)2 x C2))2)2 x C
(only 5 multiplications v.s. 19)
= (((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)
::21::
RSA with square and multiply
Decryption
Ciphertext:
Plaintext:
C
M = Cd mod n
Decryption key: d = d1,…,dw
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
This means that the decryption execution time depends on the key !!!
::22::
Simple Timing Attack on RSA
o
Timing attack:
o
o
o
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:
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
::23::
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.
::24::
Experiment: SPA on exponentiation
o Attack on the top-down square and multiply exponentiation
algorithm during signing or decryption
o Record a power trace of the operation
o Visually confirm if multiplications were executed in each step
::25::
Experiment: SPA on exponentiation
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
::26::
Experiment: SPA on exponentiation
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
::27::
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, 2003
http://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
measure
time
n
Attacker
RSAK(n)
Server
::28::
Kriptografija asimetričnog (javnog) ključa
Diffie-Hellman
kriptografski sustav
Diffie-Hellman: uvod
o
Prvi algoritam zasnovan na javnom kljucu objavili su Diffie i
Hellman 1976. godine
o
o
o
Diffie-Hellman (DH) algoritam omogucuje “sigurnu” uspostavu
simetricnog kljuca izmedju dva korisnika
o
o
o
“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 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)
::30::
Discrete Logarithm Problem
o
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?
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
o
Eksponent i nazivamo diskretnim logaritmom broja b po bazi g, mod p
Racunanje diskretnih logaritama modulo prosti broj je vrlo tezak
problem
o
o
Za razliku od potenciranja (postoje efikansi algoritmi)
Diffie-Hellman algoritam koristi ovu cinjenicu
::31::
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
Izracunaj javni kljuc YA
XA < p
YA = g XA mod p
Korisnik B generira kljuceve
Odaberi privatan kljuc XB
Izracunaj javni kljuc YB
XB < p
YB = g XB mod p
Korisnik A generira tajni (simetricni) kljuc
KAB = (YB) XA mod p
Korisnik B generira tajni (simetricni) kljuc
KBA = (YA) XB mod p
::32::
Zasto Diffie-Hellman algoritam radi
o
Korisnik A racuna:KAB = (YB) XA mod p
=
=
=
o
(g XB) XA mod p
g XBXA mod p
Korisnik B racuna:KBA = (YA) XB mod p
=
=
=
o
(g XB mod p) XA mod p
(g XA mod p) XB mod p
(g XA) XB mod p
g XAXB mod p
Dakle A i B se dogovore oko zajednickog tajnog kljuca
K = KAB = KBA = g XAXB mod p
::33::
Diffie-Hellman: Toy Example
1.
2.
3.
4.
5.
6.
7.
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
o
Sigurnosni aspekti: Potencijalan napadac zna slijedece informacije:
p = 353, g = 3, YA = 40, te YB = 248
o
o
o
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
::34::
Diffie-Hellman Key Exchange Protocol
Alice
odaberi slucajan XA
izracunaj gXA mod p
Bob
gXA mod p
gXB mod p
K = (g XB)XA mod p
o
o
odaberi slucajan XB
izracunaj gXB mod p
K = (g XA)XB mod p
Protokol nije autenticiran -> Man-In-The-Middle (MITM) napad.
Q: Dajte primjer MITM napada na DH protokol.
::35::
Diffie-Hellman protokol: MITM napad
1.
2.
3.
4.
5.
6.
7.
o
o
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).
::36::
The Station-to-Station Protocol
o
Rjesava problem neautenticiranog Diffie-Hellman protokola
o
Mutual entity authentication, mutual explicit key authentication
Alice
Bob
odaberi slucajan XA
izracunaj gXA mod p
gXA mod p
odaberi slucajan XB
izracunaj gXB mod p
K = (gXB )XA mod p
gXB mod p,EK( E(PRB,gXB,gXA) )
K = (gXB )XA mod p
digitalni potpis
EK( E(PRA,gXB,gXA) )
o
Pretpostavka je da Alice i Bob posjeduju autenticirane javne kljuceve
PUB odnosno PUA (npr., RSA javni kljucevi)
::37::
RSA i Diffie-Hellman: primjene
o
o
o
o
SSL (e.g., Webmail)
SSH (secure remote access)
IPSec (Internet Key Exchange - IKE)
PGP (e-mail)
::38::
Slef-study: CrypTool
o
http://www.cryptool.org
::39::