Presentation is loading. Please wait.

Presentation is loading. Please wait.

Autentikacijske funkcije (eng

Similar presentations


Presentation on theme: "Autentikacijske funkcije (eng"— Presentation transcript:

1 Autentikacijske funkcije (eng
Autentikacijske funkcije (eng. hash functions, message authentication codes, digital signatures, certificates) Mario Čagalj FESB

2 Autentikacija poruka Procedura kojom se moze provjeriti
Integritert poruke (data integrity ) Izvoriste poruke (source integrity ) Pravovremenost poruke (timeliness ) Primjer: Napadac snimi poruku te je isporuci u izvornom obliku ali sa odredjenim kasnjenjem (replay attack ) Autentifikacijski mehanizmi imaju dva nivoa funkcionalnosti Na nizem nivou generira se odredjeni autentikator (npr. digitalni potpis, message authentication code) Na visem nivou imamo autentikacijske protokole koji koriste autentifikatore za provjeru autenticnosti poruke

3 Autentikacija poruka Autentikatore poruka generiramo na sljedece nacine Enkripcijom poruka (ciphertext se koristi kao autentikator) Primjenom kriptografskih hash funkcija Primjenom Message Authentication Code (MAC) funkcija Primjenom digitalnih potpisa

4 Autentikacija putem enkripcije

5 Autentikacija putem enkripcije
Enkripcija simetricnim kljucem Povjerljivost i autentifikacija (ali uvjetna) Ako su poruke struktuirane tako da samo dio svih mogucih kodnih rijeci cine legitimne poruke 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 je svega 2-100 Ako u navedenom primjeru legitimna poruka moze biti bilo koja 128-bitna kodna rijec, onda autentikacija putem enkripcije nije moguca (proizvoljan ciphertext uvijek se dekriptira u legitimnu poruku) m K E D EK(m)

6 Autentikacija putem enkripcije
Kod struktuiranja plaintext poruka, treba biti jako oprezan Los primjer je “nesigurni” WEP protokol iz WiFi mreža WEP koristi error-detection codes (funkcija F na slici ispod) m K E D EK(m  F(m))  F F(m) Usporedi Enkripcija javnim kljucem Povjerljivost (confidentiality). Q: Je li osiguran integritet? Source A Destination B m m E D EPU (m) B PUB PRB Notacija:  oznacava (sekvencijalno) grupiranje dvije poruke u jednu

7 Autentikacija putem enkripcije
Enkripcija privatnim kljucem Autentikacija i digitalni potpis (samo ako su legitimne poruke struktuirane) Ako je prihvatljiva bilo koja poruka ovaj pristup je nesiguran Primjer napada: Mallory ne poznaje privatan kljuc PRA od Alice Mallory pripremi proizvoljan ciphertext ΣM (slucajna vrijednost) Mallory racuna mM = DPUA(ΣM), koristeci javni kljuc PUA od Alice Mallory salje (mM, ΣM) Bobu, koji provjeri autenticnost poruke koristeci PUA Buduci da Mallory ne poznaje PRA, mM ce biti neka slucajna vrijednost Odgovarajucim struktuiranjem poruka, vjerojatnost da Mallory nadje ΣM takav da poruka mM bude ispravno struktuirana je zanemariva m PRA E PUA D Source A Destination B EPR (m) B

8 Kriptografske hash funkcije

9 Kriptografske hash funkcije u praksi
Poznate hash funkcije: MD4, MD5, SHA-1, SHA-256, SHA-512, SHA3, … Digitalni potpisi Certifikati Bitcoin Proof of work (SHA-256) Merkle tree (primjena i u BitTorrent) Pohrana lozinki Windows (MD4, MD5) Linux (MD5, SHA-512, Blowfish, scrypt) Key Derivation Functions (KDF) PBKDF2  (Password-Based Key Derivation Function 2) HKDF Hash based data deduplication Osiguranje integriteta softvera ...

10 Kriptografske hash funkcije u praksi
Aplikacije za Android OS se distribuiraju u APK datotekama 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.xml res/layout/activity_main.xml res/menu/main.xml AndroidManifest.xml resources.arsc res/drawable-hdpi/ic_launcher.png res/drawable-mdpi/ic_launcher.png res/drawable-xhdpi/ic_launcher.png res/drawable-xxhdpi/ic_launcher.png classes.dex META-INF/MANIFEST.MF META-INF/CERT.SF META-INF/CERT.RSA C:\FESB>more MANIFEST.MF Name: res/drawable-xhdpi/ic_launcher.png SHA1-Digest: vWrq4ApK74D3ktrs7+elAA8A1a8= Name: AndroidManifest.xml SHA1-Digest: zdtiD7i7BR8in+Iu1oE3Hv3GlnY= Name: res/layout/activity_main.xml SHA1-Digest: cg8ZwPxIycCc6xS0P6DEjhCBusA= Name: classes.dex SHA1-Digest: IBvlm6sUhzUibItLsfEdRAnQ0zg=

11 Definicija hash funkcije
Kriptografska funkcija/algoritam koji sažima/komprimira ulazne poruke proizvoljne duljine u “prividno” jedinstvene izlazne vrijednosti fiksne duljine Notacija: h = H(m) h ulazna poruka proizvoljne duljine (m) ... Hash function H hash value / hash code / message digest (fiksna duljina – od 128 do 512 bitova)

12 Definicija hash funkcije
Notacija: h=H(m) Kolizije izmedju dvije i vise ulaznih poruka neizbjezne  m, m’ (m  m’) takve da H(m) = H(m’) ( Q. Zasto? ) Pronalazak kolizije tezak problem za kriptografsku hash funkciju Stoga hash vrijednost poruke sluzi kao kompaktna slika te poruke (slicno otisku prsta kod covjeka) – hash fingerprint h ulazna poruka proizvoljne duljine (m) ... Hash function H

13 Primjer: OpenSSL C:\> 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:\> 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:\> 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:\> echo kriptografija| openssl md5 -c (stdin)= ba:40:d1:e4:5d:c1:ee:32:d6:a4:30:b2:7f:ed:69:de C:\> echo kriptografija| openssl sha256 -c (stdin)= c5:dc:dc:97:ef:ee:0b:79:6a:78:c9:cc:be:e4:c0:48:32:b4:fd:be:0d:92:30:66:0b:55:a3:fd:67:60:d9:a9

14 Hash in hash-tables ≠ crypto hash
Hash tables enable fast lookup of a given piece of info in a large data structure; the average access time is independent on the size of the data structure. They are usually used to implement associative arrays. IMPORTANT: Hash functions used with hash-tables are usaully not cryptographic hash functions (crypto hash functions are often slower to compute) Source: Wikipedia

15 Svojstva kriptografskih hash funkcija
Hash funkcija H(.) generira reprezentativni otisak (fingerprint) poruke, datoteke i sl., te stoga mora imati sljedeca svojstva H(.) na ulazu prihvaca poruke proizvoljne duljine H(.) na izlazu daje hash vrijednost fiksne duljine (npr. 160 bitova) H(m) se moze lako izracunati za bilo koju ulaznu vrijednost m Tri osnovna svojstva važna za sigurnost hash funkcija: One-way property - za zadanu (slucajnu) hash vrijednost h, prakticno je nemoguce naci ulaznu poruku m takvu da vrijedi H(m) = h Weak collision resistance - za bilo koju zadanu poruku m1, prakticno je nemoguce naci poruku m2  m1 takvu da vrijedi H(m1) = H(m2) Strong collision resistance - prakticno je nemoguce naci par poruka (m1, m2) takav da vrijedi H(m1) = H(m2) Hash fukncije koje imaju navedena svojstva (ili barem 1. i 2.) nazivamo kriptografskim hash funkcijama

16 Nacini koristenja hash funkcije H(.)
Autentkacija poruke i izvorista poruke (uz povjerljivost poruke) H(.) moze detektirati promjene u ulaznoj poruci Promjena ulazne poruke rezultira promjenom hash vrijednosti m K E D EK(m  H(m))  H H(m) Usporedi Source A Destination B

17 Nacini koristenja hash funkcije H(.)
Autentikacija poruke i izvorista poruke H(.) moze detektirati promjene u ulaznoj poruci Promjena ulazne poruke rezultira promjenom hash vrijednosti m  H K E EK(H(m)) Usporedi D Source A Destination B

18 Nacini koristenja hash funkcije H(.)
Autentikacija bez enkripcije Hash algoritmi (npr. SHA funkcije) često su u praksi puno efikasniji odnosno brži od enkripcijskih algoritama (AES, 3DES) Pretpostavimo da izvoriste i odrediste poruke dijele tajnu S (secret) Moguce je kombinirati H(.) s asimetricnim kriptosustavom Efikasna realizacija digitalnog potpisa: H(.) dodaje strukturu (slide 7) Q. Kako digitalno potpisati poruku dugu npr. 10,000 bitova u 2048-bitnom RSA kriptosustavu? m  S H H(m  S) Usporedi Source A Destination B

19 Nacini koristenja hash funkcije H(.)
Važno: u praksi ćete za potrebe autentikacije često koristiti HMAC funkcije umjesto direktno hash fukncija

20 Pr[ponavljanje u k biranja] = 1 – e-k(k-1)/2N
The Birthday Attack Napad na strong collision resistance svojstvo hash funkcije Definira minimalnu duljinu izlaza hash funkcija (hash vrijednosti) 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? Racunamo vjerojatnost da se u k biranja ne ponovi nijedan element Prvi element x1 moze biti bilo koji Kada biramo drugi element x2, vjerojatnost da je x2 ¹ x1 iznosi 1-1/N Kada biramo treci element x3, vjerojatnost x3 ¹ x2 i x3 ¹ x1 je 1-2/N Kada biramo k-ti element, vjerojatnost neponavljanja je 1-(k-1)/N Dakle: Pr[nema ponavljanja u k biranja] = (1 - 1/N)(1 - 2/N)…(1 – (k-1)/N) Pr[nema ponavljanja u k biranja] = 1ik-1(1 - i/N) = e-k(k-1)/2N, (za a<<1, (1-a) » e-a) Konacno, vjerojatnost da se ponovi bar jedan element iznosi Pr[ponavljanje u k biranja] = 1 – e-k(k-1)/2N

21 The Birthday Attack p = 0.5 
Kolika elemenata (k) trebamo odabrati da bi vrijedilo Pr[ponavljanje u k biranja] = p? Racunamo: p = 1 – e-k(k-1)/2N  k(k-1) = 2N ln(1/1-p)  Primjer: p = 0.5  p = 0.75  p = 0.9  Birthday paradox: Elementi skupa su dani u godini (N = 365) 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

22 Minimalna duljine hash vrijednosti
Kripto hash funkcije mogu se modelirati na sljedeci nacin Za danu hash vrijednost H(m1) (duljine n bitova), vjerojatnost da vrijedi H(m2) = H(m1), za m2  m1, iznosi 2-n The birthday attack – implikacije na hash funkcije N = 2n Izmedju ~ razlicite poruke (elemenata), postoje dvije poruke koje se daju istu hash vrijednost s velikom vjerojatnoscu Kompromitira strong collision resistance svojstvo hash funkcije Da bi se osigurali od birthday napada na hash funkcije, duljina hash vrijednosti n mora biti dovoljno velika, u praksi n  160 bitova

23 Napad na weak-collision resistance
Za dani x, prakticno je nemoguce naci y  x takav da H(y) = H(x) Za dani x, H(x) je fiksiran. Primjenimo H(.) na k različitih poruka yi  x. Trazimo k takav da bi vjerojatnost da barem jedna poruka yi  x zadovoljava H(x) = H(yi) bila 0.5? Za slucajno odabrani element (k = 1), vjerojatnost da je H(y1) = H(x) je 2-n Obrnuto, vjerojatnost da vrijedi H(y1)  H(x) iznosi (1 - 2-n) Za k poruka yi, vjerojatnost da su svi H(yi) razliciti od H(x) iznosi (1 - 2-n)k Obrnuto, vjerojatnost da za barem jednu yi vrijedi H(yi) = H(x) je 1 - (1 - 2-n)k 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 x] » k2-n Slučajna varijabla K=k ima tzv. geometrijsku razdiobu (već ste susreli geometrijsku slučajnu varijablu u okviru jedne lab. vježbe)

24 Napad na weak-collision resistance
Pr[barem jedna od k poruka yi generira koliziju s x] » k2-n Konacno, iz ½ = k2-n proizlazi k = 2n-1 Primjetite da je lakši problem pronalazak kolizije: O(2n/2) Q. Bitcoins ovo svojstvo hash funkcija koristi za proof-of-work

25 Struktura tipicne hash funkcije
Hash algoritam ukljucuje iteraciju kompresijskih funkcija f (b > n) Notacija CV = chaining variable L = broj ulaznih blokova (poruka se razbija na blokove) mi = i-ti blok ulazne poruke n = duljina hash vrijednosti Prikazana struktura naziva se Merkle-Damgard struktura Vazsno svojstvo: ako je kompresijska funkcija f otporna na kolizije onda je otporna i prikazana iterativna struktura m0 m1 mL-1 b b b n n n n n f f f CV0 CV1 CVL-1 CVL

26 Poznate hash funkcije Secure Hash Algorithm (SHA)
Uzima poruku od najvise 264 bitova te daje 160 bitnu hash vrijednost 2005. pronadjeni kriptografski napadi sa slozenoscu 269 (puno manja slozenost nego teoretskih 280 zbog birthday napada) Preporuka je koristiti SHA-2 (SHA-256, SHA-384, SHA-512) Primjer: Želite generirati 256-bitni AES ključ iz uspostavljenog dijeljenog Diffie-Hellman ključa. Sa SHA-512 hashirate DH ključ (+ plus salt), te od 512 bitova na izlazu uzmete prvih 256. Zbog navedenih napada dizajnirana SHA-3 (October 2, 2012) Nije zamjena za SHA-2 familiju kriptografskih hash funkcija Message Digest (MD) MD2, MD4 – nisu u upotrebi MD5 se jos uvijek koristi (pronadjene kolizije!) Izbjegavajte

27 Primjer: mentalni poker
Kako implementirati sljedecu mentalnu igru na siguran nacin (eliminirati mogucnost varanja od strane igraca – zanemarite mogucnost udruzivanja) 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: A ostvaruje bodove ako |c-a| < |c-b| (odnosno dijeli bodove sa B ako |c-a| = |c-b|) B ostvaruje bodove ako |c-b| < |c-a| (odnosno dijeli bodove sa A ako |c-a| = |c-b|) 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 -> B, C: hA = H(a || rA) B -> A, C: hB = H(b || rB) C -> A, B: hC = H(c || rC) A -> B, C: a, rA B -> A, C: b, rB C -> A, B: c, rC Phase 1: Phase 2:

28 Primjer: Merkle tree Efikasna provjeru integriteta podataka (pohranjenih ili razmjenjenih između računala) H hash The Merkle root H H hash H1234 H5678 H H hash H12 H34 hash H56 H78 H910 H1112 H1314 H1516 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 hash B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 A long message split in 16 blocks

29 Primjer: Merkle tree By knowing only the Merkle root and after having received only a small subset of intermediate hashes we can authenticate the given block H hash The Merkle root H H hash H1234 H5678 H H hash H12 H34 hash H56 H78 H910 H1112 H1314 H1516 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 hash B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 A long message split in 16 blocks

30 Primjer: Merkle tree Many other uses
To better appreaciate the Merkle tree construction consider a file of size 256MB that you download over a costly GSM mobile link You could download the whole file at once and then before running it locally verify the file integrity (if verification fails, you discard the file) Alternatively, we could split the file into 16 blocks each of size 16MB You download a single 16MB block, including the 4 intermediate hash values By combining the received hash values you re-calculate the Merkle root and compare it with the Merkle root that you already hold locally If the two match, you accept the block as genuine, otherwise you discard the block and mark the given source as hostile; you save some money by not downloading the whole file Many other uses In Bitcoins to add transactions (their Merkle root) to the blockchain BitTorrent network (torrent file comprises the Merkle root of a given file) Efficient digital signatures, databases, Git trees are Merkle trees

31 Message Authentication Code (MAC)

32 Definicija MAC funkcije*
Funkcija koja uzima dvije ulazne vrijednosti: poruku i tajni kljuc Vrijednost funkcije na izlazu je autentikator (MAC) fiksne duljine Prakticno, funkcija treba biti takva da netko tko ne poznaje tajni kljuc ne moze izracunati vrijednost MAC-a za danu poruku Notacija m = ulazna poruka C(.) = MAC funkcija K = dijeljeni tajni kljuc MAC = CK(m) ulazna poruka proizvoljne duljine (m) ... MAC function C tajni kljuc K MAC (message authentication code) (fiksna duljina, ~100 bits) *Nemojte zamjeniti sa Media Access Control (MAC) funkcijom.

33 Svojstva MAC funkcije Moze se lako izracunati Kompresija
Za dani tajni kljuc K i poruku m, lako je izracunati MAC = C(K,m) Slicno enkripcijskoj funkciji, s tim da MAC ne mora biti reverzibilna f. Kompresija MAC vrijednost je fiksne duljine (neovisno o velicini ulazne poruke) Tajnost kljuca Prakticno je nemoguce otkriti tajni kljuc K poznavanjem jednog ili vise parova (mi, MACi) = (mi, CK(mi)) Bez kljuca K prakticno je nemoguce izracunati MAC za novu poruku Poznavanjem jednog ili vise parova (mi, MACi), prakticno je nemoguce naci par (m, MAC) za bilo koju novu poruku m  mi MAC je uniformno distribuiran 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 Brute-force napad nefikasan za veliki n (npr. n=100)

34 Nacini koristenja MAC-a
Autentikacija poruke Autentikacija i povjerljivost poruke (primjer Enc-then-MAC kompozicija) Source A Destination B m C  m K Usporedi K C MAC = CK(m) m EK1(m) K1 E Source A Destination B K2  C MAC = CK2(EK1(m)) Usporedi. Ako je MAC OK dekriptiraj ciphertext EK1(m) sa K1, u protivnom odbaci EK1(m).

35 Kompozicija Enc and MAC funkcija
Odabir ispravnog redosljeda/kompozicije kriptografskih funkcija krucijalan je za sigurnost podataka. Postoji nekoliko mogućnosti kompozicije enkripcijskih i autentikacijskih funkcija: Encrypt-and-Authenticate (EaA): c=EKe(M),tag=MACKa(M) (send [c,tag]) Authenticate-than-Encrypt (AtE): tag=MACKa(M),c=EKe(M||tag) (send [c]) Encrypt-than-Authenticate (EtA): c=EKe(M),tag=MACKa(c) (send [c, tag]) U praksi se koriste sve tri kompozicije, ali preporuča se korištenje Encrypt-than-Authenticate (EtA) EtA kompozicija, ispravno primjenjena, osigurava zaštitu od najjače kategorije napada na kriptografske sustave: chosen ciphertext attacks Npr., TLS 1.2 definira AES-CBC i HMAC u AtE kompoziciji – nesiguran zbog tzv. padding oracle napada; EtA kompozicija bila bi sigurna Zbog navedenog razloga, TLS 1.3 je potpuno izbacio ovu enkripcijsku metodu iz standarda (koriste se isključivo tzv. authenticated encryption modovi)

36 Authnticated encrpytion (AE) modovi
Alternativa navedenim kompozicijama su tzv. authenticated encryption modovi Karakteristike/prednosti u odnosu na klasične modove: AE modovi istovremeno osiguravaju povjerljivost i autentičnost podataka Korisnik ne treba sam odlučivati o redosljedu primjene enkripcijskih i autentikacijskih funkcija, već to za njega radi sam enkripcijski mod Jedan te isti ključ koristi se za enkripciju i za autentikaciju Poznati AE modovi CCM (Counter with CBC-MAC) Nalazi primjenu WiFi mrežama (WPA2), ZigBee, IPsec, TLS 1.2, 1.3, ... GCM (Galois/Counter Mode) TLS 1.2, 1.3, IPsec, ... ChaCha20 (stream cipher) i Poly1305 (autentikator) TLS 1.2,

37 Primjeri primjene MAC-a
Alice salje Bobu poruku (m, CK(m)); K tajni kljuc izmedju A i B B provjerava MAC vrijednost CK(m) za poruku m (Q. Kako?) Ako je provjera uspjesna B zna sljedece: Integritet poruke je sacuvan (svaka promjena poruke bi implicirala razlicite MAC vrijedsnosit, s velikom vjerojatnoscu) Integritet izvora poruke (samo A zna tajni kljuc K) Ako m ukljucuje sekvencijski broj (kao npr. kod TCP protokola), B zna da je m stigla dobrim redosljedom (zastita od replay napada u WiFi mrežama) Alice salje poruku Bobu i pri tome koristi MAC izracunat preko cijele poruke da bi osigurala integritet poruke Provjerom MAC-a, B provjerava autenticnost poruke Q: Kako se Alice moze osigurati od replay napada u kojem napadac namjerno kasni isporuku poruke?

38 Cipher Block Chaining MAC (CBC-MAC)
Ulazna poruka m razbija se na blokove duljine jednake duljini bloka koristenog enkripcijskog algoritma (npr. u slucaju AES-a, 128 bita) Ulaz: m = m1  m2  ...  mN Izlaz: MAC = CN MAC za poruku m odgovara zadnjem ciphertext bloku CBC enkriptirane poruke m pod tajnim kljucem K Generalno, nije sigurno koristiti isti tajni kljuc K za racunanje CBC-MAC-a i CBC enkripciju m1 m2 m3 mN CN-1 E E E E K K K K C1 C2 C3 CN

39 Sigurnost CBC-MACa CBC-MAC je siguran samo za poruke fiksne duljine
Napadac ne zna tajni kljuc K, ali ima dva para (mA, MACA) i (mB, MACB) Napadac zeli izracunati MAC za novu poruku m (m  mA, m  mB) Napadac kombinira (mA, MACA) i (mB, MACB) na nacin da generira poruku m = mA  (MACA  mB1)  mB2  ...  mBN Posljedica: MACB je ispravan CBC-MAC za poruku m (m  mA, m  mB) mA1 mAN MACA  mB1 mBN E E E E K K K K MACA MACB

40 Sigurnost CBC-MACa Problem sa CBC-MAC jednostavno rjesiv
Rjesenje 1: U prvi blok CBC-MACa dodati duljinu poruke Rjesenje 2: CMAC (Cipher-based Message Authentication Code) CMAC (koristi vise enkripcijskih kljuceva K, K1) Zadnji plaintext blok zbroji (mod 2) sa K1 m1 m2 m3 mN CN-1 K1 E E E E K K K K C1 C2 C3 CN

41 HMAC(K, m) = H(K+  opad  H(K+  ipad  m))
Hash MAC (HMAC) Realizacija MAC funkcije primjenom kriptografske hash funkcije Hash funkcije su efikasnije od enkripcijskih algoritama (CBC-MAC) HMAC(K, m) = H(K+  opad  H(K+  ipad  m)) K+ je tajni kljuc prosiren nizom nula do duljine 512 bitova Ako je K duzi od 512 bitova, H(K) se uzima kao kljuc (160 bitova) opad i ipad su specijalne konstante Koriste se za formalni dokaz sigurnosti ove konstrukcije opad = 3616 (ponovljeno b/8 puta; b je duljina bloka) ipad = 5c16 (ponovljeno b/8 puta; b je duljina bloka) HMAC se koristi npr. za zastitu integritea SSL/TLS prometa (TLS 1.1) Inner hash Outer hash

42 Digitalni potpisi

43 Definicija Digitalni potpis slican je MAC funkciji
Ali ga primatelj ne moze promjeniti (važna razlika) Treci entitet ga moze provjeriti (ne ovisi o tajnom ključu) Digitalni potpis se koristi za autentikaciju poruka i non-repudiation (hrv. ne-nijekanje:-) izvorista poruke Zasnovan je na asimetricnoj kriptografiji Privatni kljuc definira transformaciju potpisa SA SA(m) = s Javni kljuc definira transformaciju verifikacije VA VA(m, s) = SA(m) == s ? True : False

44 Hash and Sign paradigma
Motivacija: operacije koje koriste javni/privatni kljuc su spore Efikasniji pristup: digitalno potpisi hash vrijednost poruke private key (PR) of the sender generation message hash signature Enc H signed message message hash hash signature Dec H verification Compare public key (PU) of the sender yes/no

45 Primjer: RSA signature
Generiranje potpisa (ulaz: poruka M) Izracunaj h = H(M) (PKCS #1 formatiranje) Izracunaj: Σ  hd (mod n) Provjera potpisa (ulaz: poruka M, potpis Σ) Uzmi autenticni javni kljuc (n, e) Izracunaj h’  Σe (mod n) (PKCS #1 procesiranje, odbaci ako h’ nije dobro formatirana) Usporedi h i h’ Ako se slazu, prihvati digitalni potpis Σ Ako ne, odbaci potpis Σ

46 Digitalni certifikati

47 Public-key certificates
Asimetricni enkripcijski kriptosustavi imaju vaznu ulogu u rjesavanju problema distribucije enkripcijskih kljuceva Distribucija javnih kljuceva (npr. javni kljucevi web servera) Distribucija tajnih kljuceva Kako znati da dani javni kljuc pripada danom korisniku? Ovaj problem se rjesava uvodjenjem Certificate Authority-a (CA) Npr. FINA u Hrvatskoj igra ulogu CA (za financijske transakcije, e-porez) 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) Certifikati mogu biti distribuirani putem web-a Svatko moze provjeriti vjerodostojnost javnog kljuca iz certifikata

48 Public-Key Certificates
Unsigned certificate Certificate structure Public key Public key owner Certificate Issuer Date of issuing Certificate validity period Other information (type, standards,...) Digital signature of the certificate issuer Hash function H Certification Authority’s (CA) private key E Public-key encryption algorithm Signed certificate: Recipient can verify signature using CA’s public key

49 Verifying Public-Key Certificates
Bob’s ID information Bob’s public key PUB Certification Authority (CA) Info. Hash function H H Compare E D Generate hash value of unsigned certificate Signed certificate Encrypt hash value with CA’s private key PRCA to form signature Decrypt signature with CA’s public key PUCA to recover hash value Create signed digital certificate Use certificate to verify Bob’s public key PUB

50 Self-signed Certificates
Unsigned certificate Certificate structure Public key (your key) Public key owner (you) Certificate Issuer Date of issuing Certificate validity period Other information (type, standards,...) Digital signature of the certificate issuer Hash function H Public key owner’s (your) private key Certification Authority’s (CA) private key E Public-key encryption algorithm Signed certificate: Recipient can verify signature using the Public key owner’s (your) public key

51 X.509 autentikacijski okvir
Dio X.500 okvira koji je repozitorij (direktorij) Server (skup distribuiranih servera) koji odrzavaju bazu podataka sa informacijama o korisnicima Informacije ukljucuju maprianje korisnickih imena i mreznih adresa, certifikata i drugih informacija o korisnicima X.509 definira skup usluga za autentikaciju korisnika Certifikate, autentikacijske protokole Bazira se na kriptografiji javnog kljuca i digitalnim potpisima (preporuka RSA i hash and sign paradigma) Osnovna funkcija X.509 sheme jesu public-key certifikati povezani sa svakim korisnikom Certifikate kreiraju trusted Certification Authorities (CA)

52 Struktura CA: centralizirani CA
Public key certificate Public key Svaki javni kljuc je certificiran samo jednim centralnim CA Svaki korisnik zna autenticni javni kljuc CA Svaki korisnik moze provjeriti svaki drugi certifikat (Q. Kako?) Napomena: CA mora biti entitet od povjerenja (eng. trusted); vjerujemo da izdaje korektne certifikate Problem: ovaj pristup nije skalabilan - veliki broj korisnika

53 Lanac certifikata (chain of trust)
digital certificate CA1 PuCA1 CA2 PuCA2 Bob PuBob PuCA0 PrCA0 PrCA1 PrCA2 digital signature Prvi certifikat moze biti provjeren sa poznatim javnim kljucem PuCA0 Drugi certifikat moze biti provjeren javnim kljucem PuCA1 koji je provjerent u prethodnom certifikatu Zadnji certifikat sadrzi zeljeni javni kljuc (Bobov javni kljuc PuBob) Svi izdavaci certifikata u lancu (CA0, CA1, CA2) moraju biti trusted

54 Vise CA organiziranih u stablo
PuAlice PuBob Svaki korisnik zna javni kljuc koji pripada root CA0 Da bi provjerio autenticnost nekog drugog javnog kljuca, korisnik treba lanac certifikata koji zapocinja sa root certifikatom i zavrsava sa zeljenim kljucem


Download ppt "Autentikacijske funkcije (eng"

Similar presentations


Ads by Google