44
Autentifikacijske funkcije (eng. hash functions, message authentication codes, digital signatures, certificates) Mario Čagalj [email protected] FESB 8/4/2014.

Mario Čagalj [email protected] FESB 8/4/2014

  • Upload
    parry

  • View
    54

  • Download
    5

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

Page 1: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Autentifikacijske funkcije(eng. hash functions, message authentication codes,

digital signatures, certificates)

Mario Č[email protected]

FESB

8/4/2014.

Page 2: Mario Čagalj mariogalj@fesb.hr 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

Page 3: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Autentifikacija putem enkripcije

Page 4: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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)

Page 5: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 6: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 7: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Kriptografske hash funkcije

Page 8: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 9: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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=

Page 10: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 11: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 12: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 13: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 14: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 15: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 16: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 17: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 18: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 19: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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.

Page 20: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 21: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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!)

Page 22: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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:

Page 23: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Message Authentication Code (MAC)

Page 24: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 25: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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)

Page 26: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 27: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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?

Page 28: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 29: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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…

Page 30: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 31: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 32: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Digitalni potpisi

Page 33: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 34: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 35: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 36: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

Digitalni certifikati

Page 37: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 38: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

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

Page 39: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

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

Page 40: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

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

Page 41: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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)

Page 42: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 43: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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

Page 44: Mario Čagalj mariogalj@fesb.hr FESB 8/4/2014

::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