Upload
parry
View
54
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Autentifikacijske funkcije (eng. hash functions, message authentication codes, digital signatures, certificates ). Mario Čagalj [email protected] FESB 8/4/2014. Autentifikacija poruka. Procedura kojom se moze provjeriti Integritert poruke ( data integrity ) - PowerPoint PPT Presentation
Citation preview
Autentifikacijske funkcije(eng. hash functions, message authentication codes,
digital signatures, certificates)
Mario Č[email protected]
FESB
8/4/2014.
::2::
Autentifikacija poruka
o Procedura kojom se moze provjeritio Integritert poruke (data integrity )o Izvoriste poruke (source integrity )o Pravovremenost poruke (timeliness )
o Primjer: Napadac snimi poruku te je isporuci u izvornom obliku ali sa odredjenim kasnjenjem (replay attack )
o Autentifikacijski mehanizmi imaju dva nivoa funkcionalnostio Na nizem nivou se generira odredjeni autentifikator
o Na visem nivou imamo autentifikacijske protokole koji koriste autentifikatore za provjeru autenticnosti poruke
o Autentifikatore poruka generiramo na sljedece nacineo Enkripcijom poruka (ciphertext se koristi kao autentifikator)
o Primjenom kriptografskih hash funkcija
o Primjenom Message Authentication Code (MAC) funkcija
Autentifikacija putem enkripcije
::4::
Autentifikacija putem enkripcije (1/3)
o Enkripcija simetricnim kljucem
o Povjerljivost i autentifikacija (ali uvjetna)
o Ako su poruke struktuirane tako da samo dio svih mogucih kodnih rijeci cine legitimne poruke -> autentifikacija poruke mogucao Primjer: skup svih 128-bitnih poruka ima 2128 elemenata; ako
legitimnim porukama proglasimo samo one koje imaju prvih 100 bitova 0, skup legitimnih poruka ce imati 228 elemenata, a vjerojatnost da se slucajno generirani ciphertext dekriptira u legitimnu poruku samo 2-100
o Ako navedenom primjeru legitimna poruka moze biti bilo koja 128-bitna kodna rijec, onda autentifikacija putem enkripcije nije moguca (proizvoljan ciphertext uvijek se dekriptira u legitimnu poruku)
o Q. Je li navedena strategija primjenjiva za slijedne sifre?
m
K
E
K
D m
EK(m)
::5::
Autentifikacija putem enkripcije (2/3)
o Kod struktuiranja plaintext poruka, treba biti jako oprezano Los primjer je “probijeni” WEP protokol
o WEP koristi error-detection codes (funkcija F na slici ispod)
m
K
E
K
D
EK(m F(m))
F
m
F(m)
m
F(m)
F
Usporedi
Notacija: oznacava (sekvencijalno) grupiranje dvije poruke u jednu
o Enkripcija javnim kljucemo Povjerljivost (confidentiality). Q: Sto je sa autentifikacijom?
m
PUB
E
PRB
D m
EPU (m)
Source A Destination B
B
::6::
Autentifikacija putem enkripcije (3/3)
o Enkripcija privatnim kljucemo Autentifikacija i digitalni potpis (samo ako su legitimne poruke struktuirane)
o Ako je prihvatljiva bilo koja poruka ovaj pristup je nesiguran
o Primjer napada: Malice ne poznaje privatan kljuc PRA od Alice
1. Malice pripremi proizvoljan ciphertext SM (slucajna vrijednost)
2. Malice racuna mM = DPU (SM), koristeci javni kljuc PUA od Alice
3. Malice salje (mM,SM) Bobu, koji provjeri autenticnost poruke koristeci PUA
o Buduci da Malice ne poznaje PRA, mM ce biti neka slucajna vrijednost
o Odgovarajucim struktuiranjem poruka, vjerojatnost da Malice nadje SM takav da poruka mM bude ispravno struktuirana je zanemariva
m
PRA
E
PUA
D m
Source A Destination B
EPR (m)B
A
Kriptografske hash funkcije
::8::
Kriptografske hash funkcije u praksi
o Poznate hash funkcije: MD4, MD5, SHA-1, SHA-256, SHA-512,…
o Digitalni potpisi
o Certifikatio Kripto-valuta Bitcoins
o http://blockexplorer.como Proof of work (SHA-256)
o Pohrana lozinkio Windows (MD4, MD5, AES)o Linux (MD5, SHA-512, Blowfish)
o Password to enc key
o PBKDF2 (Password-Based Key Derivation Function 2)
o Hash based data deduplication
o Osiguranje integriteta softvera
::9::
Kriptografske hash funkcije u praksi
o Aplikacije za Android OS se distribuiraju u APK datotekamao APK datoteke su ZIP arhive koje vezu zajedno kompajlirane Android klase,
metapodatke (u META-INF/ direktoriju) i razne resusrse koje kod koristi
C:\FESB>aapt list HelloFESB.apk
res/drawable/fesb_button.xmlres/layout/activity_main.xmlres/menu/main.xmlAndroidManifest.xmlresources.arscres/drawable-hdpi/ic_launcher.pngres/drawable-mdpi/ic_launcher.pngres/drawable-xhdpi/ic_launcher.pngres/drawable-xxhdpi/ic_launcher.pngclasses.dexMETA-INF/MANIFEST.MFMETA-INF/CERT.SFMETA-INF/CERT.RSA
C:\FESB>aapt list HelloFESB.apk
res/drawable/fesb_button.xmlres/layout/activity_main.xmlres/menu/main.xmlAndroidManifest.xmlresources.arscres/drawable-hdpi/ic_launcher.pngres/drawable-mdpi/ic_launcher.pngres/drawable-xhdpi/ic_launcher.pngres/drawable-xxhdpi/ic_launcher.pngclasses.dexMETA-INF/MANIFEST.MFMETA-INF/CERT.SFMETA-INF/CERT.RSA
C:\FESB>more MANIFEST.MF
Name: res/drawable-xhdpi/ic_launcher.pngSHA1-Digest: vWrq4ApK74D3ktrs7+elAA8A1a8=
Name: AndroidManifest.xmlSHA1-Digest: zdtiD7i7BR8in+Iu1oE3Hv3GlnY=
…
Name: res/layout/activity_main.xmlSHA1-Digest: cg8ZwPxIycCc6xS0P6DEjhCBusA=
Name: classes.dexSHA1-Digest: IBvlm6sUhzUibItLsfEdRAnQ0zg=
C:\FESB>more MANIFEST.MF
Name: res/drawable-xhdpi/ic_launcher.pngSHA1-Digest: vWrq4ApK74D3ktrs7+elAA8A1a8=
Name: AndroidManifest.xmlSHA1-Digest: zdtiD7i7BR8in+Iu1oE3Hv3GlnY=
…
Name: res/layout/activity_main.xmlSHA1-Digest: cg8ZwPxIycCc6xS0P6DEjhCBusA=
Name: classes.dexSHA1-Digest: IBvlm6sUhzUibItLsfEdRAnQ0zg=
::10::
Definicija hash funkcije
o Kriptografska funkcija/algoritam koji sazima/komprimira ulazne poruke proizvoljne duljine u “prividno” jedinstvene izlazne vrijednosti fiksne duljine
o Notacija: h=H(m)
o Kolizije izmedju dvije i vise ulaznih poruka neizbjezne m,m’ (m m’) takve da H(m) = H(m’) (Q. Zasto?)
o Za kripto hash funkcije pronalazak kolizija je tezak problemo Stoga hash vrijednost poruke sluzi kao kompaktna slika te poruke (slicno
otisku prsta kod covjeka) – hash fingerprint
h
ulazna poruka proizvoljne duljine (m) ...
hash value / hash code / message digest (fiksna duljina – od 128 do 512 bitova)
Hash functionH
::11::
Primjer: OpenSSL
o “OpenSSL is an open-source implementation of the SSL and TLS protocols. The core library ... implements the basic cryptographic functions” – Wikipedia (2014.)
C:\FESB>echo kriptografija| openssl sha1 -c(stdin)= 47:1a:0b:e0:cc:29:18:19:36:46:e1:c7:e8:ce:e5:69:e2:17:58:af
C:\FESB>echo kriptografij a| openssl sha1 -c(stdin)= c8:de:b3:be:6e:4b:70:0d:15:fd:c5:01:8d:b3:ea:60:19:15:05:32
C:\FESB>echo kriptografija kriptografija kriptografija | openssl sha1 -c(stdin)= 87:50:7f:2e:1a:a1:45:80:fb:02:1b:0d:08:67:aa:66:b7:76:c2:1c
C:\FESB>echo kriptografija| openssl md5 -c(stdin)= ba:40:d1:e4:5d:c1:ee:32:d6:a4:30:b2:7f:ed:69:de
C:\FESB>echo kriptografija| openssl sha1 -c(stdin)= 47:1a:0b:e0:cc:29:18:19:36:46:e1:c7:e8:ce:e5:69:e2:17:58:af
C:\FESB>echo kriptografij a| openssl sha1 -c(stdin)= c8:de:b3:be:6e:4b:70:0d:15:fd:c5:01:8d:b3:ea:60:19:15:05:32
C:\FESB>echo kriptografija kriptografija kriptografija | openssl sha1 -c(stdin)= 87:50:7f:2e:1a:a1:45:80:fb:02:1b:0d:08:67:aa:66:b7:76:c2:1c
C:\FESB>echo kriptografija| openssl md5 -c(stdin)= ba:40:d1:e4:5d:c1:ee:32:d6:a4:30:b2:7f:ed:69:de
::12::
Sigurnosni zahtjevi hash funkcija
o Hash funkcija H(.) generira reprezentativni otisak (fingerprint) poruke, datoteke i sl., te stoga mora imati sljedeca svojstvao H(.) na ulazu prihvaca poruke proizvoljne duljine
o H(.) na izlazu daje hash vrijednost fiksne duljine (npr. 160 bitova)
o H(m) se moze lako izracunati za bilo koju ulaznu vrijednost m
Tri centralna svojstva za sigurnost hash funkcija
1. One-way property - za zadanu (slucajnu) hash vrijednost h, prakticno je nemoguce naci ulaznu porku m takvu da vrijedi H(m) = h
2. Weak collision resistance - za bilo koju zadanu poruku m1, prakticno je nemoguce naci poruku m2 m1 takvu da vrijedi H(m1) = H(m2)
3. Strong collision resistance - prakticno je nemoguce naci par poruka (m1, m2) takav da vrijedi H(m1) = H(m2)
o Hash fukncije koje imaju navedena svojstva (ili barem 1. i 2.) nazivamo kriptografskim hash funkcijama
::13::
Nacini koristenja hash funkcije H(.)
o Autentifikacija poruke i izvorista poruke (uz povjerljivost poruke)o H(.) moze detektirati promjene u ulaznoj poruci
o Promjena u jednom ili vise bitova rezultira promjenom hash vrijednosti
m
K
E
K
D
EK(m H(m))
H
m
H(m)
m
H(m)
HUsporedi
Source A Destination B
::14::
Nacini koristenja hash funkcije H(.)
o Autentifikacija poruke i izvorista porukeo H(.) moze detektirati promjene u ulaznoj poruci
o Promjena u jednom ili vise bitova rezultira promjenom hash vrijednosti
m
H
K
E
m
EK(H(m))
H
Usporedi
K
D
Source A Destination B
::15::
Nacini koristenja hash funkcije H(.)
o Autentifikacija bez enkripcijeo Hash algoritmi (npr. SHA funkcije) su u praksi puno efikasniji
odnosno brzi od enkripcijskih algoritama (AES, 3DES)
o Pretpostavimo da izvoriste i odrediste poruke dijele tajnu S (secret)
o Moguce je kombinirati H(.) sa asimetricnim kriptosustavomo Efikasna realizacija digitalnog potpis
o Q. Kako digitalno potpisati poruke poruku dugu npr. 10,000 bitova u 2048-bitnom RSA kriptosustavu?
m
S H
m
H(m S)
S H
Usporedi
Source A Destination B
::16::
The Birthday Attack
o Napad na strong collision resistance svojstvo hash funkcijeo Definira minimalnu duljinu izlaza hash funkcija (hash vrijednosti)
o Dan je skup od N elemenata. Biramo, na slucajan nacin, k elemenata iz skupa (odabrani element svaki put vracamo nazad u skup). Kolika je vjerojatnost da odaberemo bar jedan element dva ili vise puta?
1. Racunamo vjerojatnost da se u k biranja ne ponovi nijedan elemento Prvi element x1 moze biti bilo koji
o Kada biramo drugi element x2, vjerojatnost da je x2 x1 iznosi 1-1/N
o Kada biramo treci element x3, vjerojatnost x3 x2 i x3 x1 je 1-2/N
o Kada biramo k-ti element, vjerojatnost neponavljanja je 1-(k-1)/N o Dakle: Pr[nema ponavljanja u k biranja] = (1 - 1/N)(1 - 2/N)…(1 – (k-1)/N)
Pr[nema ponavljanja u k biranja] = 1ik-1(1 - i/N) = e-k(k-1)/2N, (za a<<1, (1-a) e-a)
2. Konacno, vjerojatnost da se ponovi bar jedan element iznosi
Pr[ponavljanje u k biranja] = 1 – e-k(k-1)/2N
::17::
The Birthday Attack
o Kolika elemenata (k) trebamo odabrati da bi vrijedilo Pr[ponavljanje u k biranja] = p?
o Racunamo: p = 1 – e-k(k-1)/2N k(k-1) = 2N ln(1/1-p)
o Primjeri:
p = 0.5 p = 0.75 p = 0.9
o Birthday paradox:o Elementi skupa su dani u godini (N = 365)
o Zakljucujemo, izmedju 1.18 sqrt(365) 23 slucajno odabrane osobe, najmanje dvije osobe ce imati rodjendan na isti datum sa vjerojatnoscu od priblizno 0.5
p1
1ln 2Nk
N 1.18k N1.67 k
N 2.15k
::18::
Odredjivanje duljine hash vrijednosti
o Kripto hash funkcije mogu se modelirati na sljedeci nacino Za danu hash vrijednost H(m1) (duljine n bitova), vjerojatnost da
je hash vrijednost poruke m2 m1,H(m2), jednaka H(m1) iznosi 2-n
o The birthday attack – implikacije na hash funkcijeo N = 2n
o Izmedju ~ razlicite poruke (elemenata), postoje dvije poruke koje se daju istu hash vrijednost sa velikom vjerojatnoscu
o Kompromitira strong collision resistance svojstvo hash funkcije
o Da bi se osigurali od birthday napada na hash funkcije, duljina
hash vrijednosti n mora biti najmanje 128 bitova (prekratko u nekim slucajevima), u praksi n 160 bitova
n/2n 22N
::19::
Napad na weak-collision resistance
o Za fiksiran x, prakticno je nemoguce naci y x takav da H(y) = H(x)
o Fiksiramo x odnosno H(x). Primjenimo H(.) na k poruka yi x. Trazimo k takav da bi vjerojatnost da barem jedna poruka yi x zadovoljava H(x) = H(yi) bila 0.5? Duljina hash vrijednosti je n.
o Za slucajno odabrani element (k=1), vjerojatnost H(y1) = H(x) je 2-n
o Obrnuto, vjerojatnost da H(y1) H(x) iznosi (1- 2-n)
o Za k poruka yi, vjerojatnost da su svi H(yi) razliciti od H(x) iznosi (1- 2-n)k
o Obrnuto, vjerojatnost da za barem jednu yi vrijedi H(yi) =H(x) je 1-(1- 2-n)k
o Koristeci aproksimaciju (1-a)k (1-ak) za male vrijednosti a (Taylor-ov red), dobijamo da vjerojatnost, da za barem jednu yi vrijedi H(yi) = H(x),
iznosi
1-(1- 2-n)k 1-(1-k2-n) = k2-n
Pr[barem jedna od k poruka yi generira koliziju s H(x)] k2-n
o Konacno, iz 0.5 = k2-n proizlazi k = 2n-1 (lakse je naci koliziju - 2n/2)o Q. Bitcoins ovo svojstvo hash funkcija koristi za proof-of-work.
::20::
Struktura tipicne hash funkcije
o Hash algoritam ukljucuje iteraciju kompresijskih funkcija f (b > n)
o Notacijao CV = chaining variableo L = broj ulaznih blokova (poruka se razbija na blokove)o mi = i-ti blok ulazne poruke
o n = duljina hash vrijednosti
o Prikazana struktura naziva se Merkle-Damgard struktura
o Vazsno svojstvo: ako je kompresijska funkcija f otporna na kolizije onda je otporna i prikazana iterativna struktura
f f f
m0
b
n
CV0
m1
b
n
CV1
n
mL-1
b
n
CVL-1
n
CVL
::21::
Poznate hash funkcije
o Secure Hash Algorithm (SHA)o SHA-1
o Uzima poruku od najvise 264 bitova te daje 160 bitnu hash vrijednost
o 2005. pronadjeni kriptografski napadi sa slozenoscu 269
(puno manja slozenost nego teoretskih 280 zbog birthday napada)
o Preporuka je koristiti SHA-2 (SHA-256, SHA-384, SHA-512)
o Zbog navedenih napada dizajnirana SHA-3 (October 2, 2012)o Nije zamjena za SHA-2 familiju kriptografskih hash funkcija
o Message Digest (MD)
o MD2, MD4 – nisu u upotrebi
o MD5 se jos uvijek koristi (pronadjene kolizije!)
::22::
Primjer: mentalni poker
o Kako implementirati sljedecu mentalnu igru na siguran nacin (eliminirati mogucnost varanja od strane igraca – zanemarite mogucnost udruzivanja)
o Igraci A, B i C zamisle po jedan broj iz predefiniranog skupa. Igrac C prvi objavljuje svoj broj c. Nakon toga, A i B objavljuju svoje brojeve a i b. Igraci ostvaruju bodove na sljedeci nacin:o A ostvaruje bodove ako |c-a| < |c-b| (odnosno dijeli bodove sa B ako |c-a| = |c-b|)o B ostvaruje bodove ako |c-b| < |c-a| (odnosno dijeli bodove sa A ako |c-a| = |c-b|)o C ostvaruje bodove ukoliko vrijedi |c-a| > 10 i |c-b| > 10
A: Pick a and large random number rA
B: Pick b and large random number rB
C: Pick c and large random number rC
A to B,C: hA = H(a,rA)B to A,C: hB = H(b,rB)C to A,B: hC = H(c,rC)
A to B,C: a,rA
B to A,C: b,rB
C to A,B: c,rC
Phase 1:
Phase 2:
Message Authentication Code (MAC)
::24::
Definicija MAC funkcije*
o Funkcija koja uzima dvije ulazne vrijednosti: poruku i tajni kljuc
o Vrijednost funkcije na izlazu je autentifikator (MAC) fiksne duljine
o Prakticno, funkcija treba biti takva da netko tko ne poznaje tajni kljuc ne moze izracunati vrijednost MAC-a za danu poruku
o Notacijao m = ulazna poruka o C(.) = MAC funkcijao K = dijeljeni tajni kljuc
o MAC = CK(m)*Nemojte zamjeniti sa Media Access Control (MAC) funkcijom.
ulazna poruka proizvoljne duljine (m) ...
MAC (message authentication code) (fiksna duljina, ~100 bits)
MAC functionC tajni kljuc
K
::25::
Svojstva MAC funkcije
o Moze se lako izracunatio Za dani tajni kljuc K i poruku m, lako je izracunati MAC = C(K,m)
o Slicno enkripcijskoj funkciji, s tim da MAC ne mora biti reverzibilna f.
o Kompresijao MAC vrijednost je fiksne duljine (neovisno o velicini ulazne poruke)
o Tajnost kljucao Prakticno je nemoguce otkriti tajni kljuc K poznavanjem jednog ili
vise parova (mi, MACi) = (mi, CK(mi))
o Bez kljuca K prakticno je nemoguce izracunati MAC za novu porukuo Poznavanjem jednog ili vise parova (mi, MACi), prakticno je
nemoguce naci par (m, MAC) za bilo koju novu poruku m mi
o MAC je uniformno distribuirano Vjerojatnost da dvije slucajno generirane poruke m1 i m2 imaju isti
MAC, CK(m1) = CK(m2), je 2-n, gdje je n broj bitova u MAC vrijednosti
o Brute-force napad nefikasan za veliki n (npr. n=100)
::26::
Nacini koristenja MAC-a
o Autentifikacija poruke
o Autentifikacija i povjerljivost poruke (koristi Enc-then-MAC u praksi!)
m
K
C
mC
Usporedi
MAC = CK(m)
K
Source A Destination B
m
EK1(m)
K1
E
Source A Destination B
K2
C
MAC = CK2(EK1(m))
C
Usporedi.
Ako je MAC OK dekriptiraj ciphertext EK1(m) sa K1,
u protivnom odbaci EK1(m).
K2
::27::
Primjeri primjene MAC-a
o Alice salje Bobu poruku (m, CK(m)); K tajni kljuc izmedju A i
Bo B provjerava MAC vrijednost CK(m) za poruku m (Q. Kako?)
o Ako je provjera uspjesna B zna sljedece:o Integritet poruke je sacuvan (svaka promjena poruke bi implicirala
razlicite MAC vrijedsnosit, s velikom vjerojatnoscu)
o Integritet izvora poruke (samo A zna tajni kljuc K)
o Ako m ukljucuje sekvencijski broj (kao npr. kod TCP protokola), B zna da je m stigla dobrim redosljedom (zastita od replay napada kod WLAN-a)
o Alice salje e-mail poruku Bobu i pri tome koristi MAC izracunat preko cijele poruke da bi osigurala integritet porukeo Provjerom MAC-a, B provjerava autenticnost e-mail poruke
o Q: Kako se Alice moze osigurati od replay napada u kojem napadac namjerno kasni isporuku poruke?
::28::
Cipher Block Chaining MAC (CBC-MAC)
o Ulazna poruka m razbija se na blokove duljine jednake duljini bloka koristenog enkripcijskog algoritma (npr. u slucaju AES-a, 128 bita)o Ulaz: m = m1 m2 ... mN
o Izlaz: MAC = CN
o MAC za poruku m odgovara zadnjem ciphertext bloku CBC enkriptirane poruke m pod tajnim kljucem Ko Generalno, nije sigurno koristiti isti tajni kljuc K tajni kljuc za racunanje
CBC-MACa i CBC enkripciju
EE
m1
K EE
m2
K EE
m3
K EE
mN
CN
K
0 CN-1
…
C1 C2 C3
::29::
Sigurnost CBC-MACa
o CBC-MAC je siguran samo za poruke fiksne duljineo Napadac ne zna tajni kljuc K, ali ima dva para (mA, MACA) i (mB,
MACB)
o Napadac zeli izracunati MAC za novu poruku m (m mA, m mB)
o Napadac kombinira (mA, MACA) i (mB, MACB) na nacin da generira poruku
m = mA (MACA mB1) mB2 ... mBN
o Posljedica: MACB je ispravan CBC-MAC za poruku m (m mA, m mB)
EE
mA1
K EE
mAN
MACA
K
0
… EE
MACA mB1
K EE
mBN
MACB
K…
::30::
Sigurnost CBC-MACa
o Problem sa CBC-MAC jednostavno rjesivo Rjesenje 1: U prvi blok CBC-MACa dodati duljinu poruke
o Rjesenje 2: CMAC (Cipher-based Message Authentication Code)
o CMAC (koristi vise enkripcijskih kljuceva K,K1)
o Zadnji plaintext blok zbroji (mod 2) sa K1
EE
m1
K EE
m2
K EE
m3
K EE
mN
CN
K
0 CN-1
…
C1 C2 C3
K1
::31::
Hash MAC (HMAC)
o Realizacija MAC funkcije primjenom kriptografske hash funkcijeo Hash funkcije su efikasnije od enkripcijskih algoritama (CBC-MAC)
HMAC(K, m) = H( (K+ opad) H( (K+ ipad) m ) )
o K+ je tajni kljuc prosiren nizom nula do duljine 512 bitovao Ako je K duzi od 512 bitova, H(K) se uzima kao kljuc (160 bitova)
o opad i ipad su specijalne konstanteo Koriste se za formalni dokaz sigurnosti ove konstrukcije
o opad = 3616 (ponovljeno b/8 puta; b je duljina bloka)
o ipad = 5c16 (ponovljeno b/8 puta; b je duljina bloka)
o HMAC se koristi npr. za zastitu integritea SSL/TLS prometao http://tools.ietf.org/html/rfc4346 (TLS 1.1)
Inner hash
Outer hash
Digitalni potpisi
::33::
Definicija
o Digitalni potpis je slican MAC funkcijio Ali ga primatelj ne moze promjenitio Treci entitet ga moze provjeriti (nema tajnog kljuca)
o Digitalni potpis se koristi za autentikaciju poruka i non-repudiation (hrv. ne-nijekanje:-) izvorista poruke
o Bazira se na asimetricnoj kriptografijio Privatni kljuc definira transformaciju potpisa SA
o SA(m) =
o Javni kljuc definira transformaciju verifikacije VA
o VA(m, ) = true if SA(m) =
o VA(m, ) = false otherwise
::34::
Hash and Sign paradigma
o Motivacija: operacije koje koriste javni/privatni kljuc su spore
o Efikasniji pristup: digitalno potpisi hash vrijednost poruke
HH EncEnc
private key (PR)of the sender
message hash signature
HHmessage hash
DecDec
public key (PU)of the sender
signature
CompareCompare
yes/no
gen
era
tion
veri
ficati
on hash
signed message
::35::
Primjer: RSA signature
o Generiranje potpisa (ulaz: poruka m)o Izracunaj h = H(m)o (PKCS #1 formatting)o Izracunaj = hd mod n
o Provjera potpisa (ulaz: poruka m, potpis )o Uzmi autenticni javni kljuc (n, e)o Izracunaj h’ = e mod no (PKCS #1 procesiranje, odbaci ako h’ nije dobro
formatirana)o Izracunaj h = H(m)o Usporedi h i h’
o Ako se slazu, prihvati digitalni potpis o Ako ne, odbaci potpis
Digitalni certifikati
::37::
Public-key certificates
o Asimetricni enkripcijski kriptosustavi imaju vaznu ulogu u rjesavanju problema distribucije enkripcijskih kljucevao Distribucija javnih kljuceva (npr. javni kljucevi web servera)o Distribucija tajnih kljuceva
o Izazov: kako znati da dani javni kljuc pripada danom korisnikuo Ovaj problem se rjesava uvodjenjem Certificate Authority-a (CA)
o Npr. FINA u Hrvatskoj igra ulogu CA (za financijske transakcije, e-
porez)
o CA su entiteti kojima vjerujemo, a koji izdaju cerifikate za javne kljuceve (certifikati sadrze identitet vlasnika javnog kljuca i njen/njegov javni kljuc, sve skupa digitalno potpisano od strane CA)
o Certifikati mogu biti distribuirani putem web-ao Svatko moze provjeriti vjerodostojnost javnog kljuca iz certifikata
Public-Key CertificatesCertificate structure
Public keyPublic key ownerCertificate IssuerDate of issuingCertificate validity periodOther information (type,
standards,...)Digital signature of the
certificate issuer
38
Certification Authority’s (CA)private key
Unsigned certificate
Signed certificate:Recipient can verify signature using CA’s public key
H
Hash function
E
Public-key encryption algorithm
Verifying Public-Key Certificates
39
Bob’s ID information
Bob’s public key PUB
Certification Authority (CA) Info.
Signed certificate
H
Hash function
Generate hash value of unsigned certificate
Encrypt hash value with CA’s private key PRCA to form signature
E
H
D
Decrypt signature with CA’s public key PUCA to recover hash value
Compare
Create signed digital certificate Use certificate to verify Bob’s public key PUB
Self-signed CertificatesCertificate structure
Public key (your key)Public key owner (you)Certificate IssuerDate of issuingCertificate validity periodOther information (type,
standards,...)Digital signature of the
certificate issuer
40
Unsigned certificate
Signed certificate:Recipient can verify signature using the Public key owner’s (your) public key
H
Hash function
ECertification Authority’s (CA)private key
Public key owner’s (your) private key
Public-key encryption algorithm
::41::
X.509 autentikacijski okvir
o Dio X.500 okvira koji je repozitorij (direktorij) o Server (skup distribuiranih servera) koji odrzavaju bazu
podataka sa informacijama o korisnicimao Informacije ukljucuju maprianje korisnickih imena i mreznih
adresa, certifikata i drugih informacija o korisnicima
o X.509 definira skup usluga za autentikaciju korisnikao Certifikate, autentikacijske protokoleo Bazira se na kriptografiji javnog kljuca i digitalnim potpisima
(preporuka RSA i hash and sign paradigma)
o Osnovna funkcija X.509 sheme jesu public-key certifikati povezani sa svakim korisnikomo Certifikate kreiraju trusted Certification Authorities (CA)
::42::
Struktura CA: centralizirani CA
o Svaki javni kljuc je certificiran samo jednim centralnim CAo Svaki korisnik zna autenticni javni kljuc CAo Svaki korisnik koze provjeriti svaki drugi certifikat (Q. Kako?)o Napomena: CA mora biti entitet od povjerenja (eng. trusted );
vjerujemo da izdaje korektne certifikate
o Problem: ovaj pristup nije skalabilan - veliki broj korisnika
CA
… public key
certificate
::43::
Lanac certifikata
o Prvi certifikat moze biti provjeren sa poznatim javnim kljucem KCA0
o Drugi certifikat moze biti provjeren javnim kljucem KCA1
dostupnim i provjerenim u prethodnom certifikatuo Zadnji certifikat sadrzi zeljeni javni kljuc (Bobov javni kljuc KBob)
o Vazno: svi izdavaci certifikata u lancu (CA0, CA1, CA2) moraju biti
trusted
CA1
KCA1
KCA0-1
CA2
KCA2
KCA1-1
BobKBob
KCA2-1
KCA0
::44::
Vise CA organiziranih u stablo
o Svaki korisnik zna javni kljuc koji pripada root CA0
o Da bi provjerio autenticnost nekog drugog javnog kljuca, korisnik treba lanac certifikata koji zapocinja sa root certifikatom i zavrsava sa zeljenim kljucem
CA0
CA1 CA2 CA3
CA11 CA12 CA23CA31 CA32
KAlice KBob