Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sveučilište u Splitu Sveučilišni studijski centar za stručne studije

Similar presentations


Presentation on theme: "Sveučilište u Splitu Sveučilišni studijski centar za stručne studije"— Presentation transcript:

1 Sveučilište u Splitu Sveučilišni studijski centar za stručne studije
Autentifikacijske funkcije (hash functions, message authentication codes (MAC), digital signatures, certificates) Mario Čagalj Sveučilište u Splitu Sveučilišni studijski centar za stručne studije 17/4/2012.

2 Autentifikacija poruka
Procedura kojom se moze provjeriti Integritert poruke (podatka) – data integrity Izvoriste (source) poruke – data source Pravovremenost poruke – timeliness Primjer: Napadac snimi poruku te je isporuci u izvornom obliku ali sa odredjenim kasnjenjem (replay napadi) Autentifikacijski mehanizmi imaju dva nivoa funkcionalnosti Na nizem nivou se generira odredjeni autentifikator Na visem nivou imamo autentifikacijski protokol koji koristi autentifikator za provjeru autenticnosti poruke Funkcije nizeg nivoa autentifikacijskih mehanizama klasificiramo u slijedece kategorije Enkripcija poruka Ciphertext cijele poruke sluzi kao autentikator Message Authentication Code (MAC) n bitni autentifikator = [ F(poruka, tajni kljuc) ] n bitova Hash funkcije n bitni autentifikator = [ F(poruka) ] n bitova

3 Autentifikacijske funkcije
Autentifikacija kroz enkripciju

4 Autentifikacija kroz enkripciju (1/3)
Enkripcija simetricnim kljucem Povjerljivost i autentikacija (ali uvjetna) Ako su poruke m struktuirane tako da samo mali skup kodnih rijeci cine legitimne poruke -> autentikacija poruke moguca Npr: samo jedna kodna rijec od ukupno 106 rijeci je legitimna, tada ce slucajna vrijednost ciphertexta desifrirati u legitimnu kodnu rijec sa vjerojatnoscu 10-6 Ako poruka m moze biti bilo koja kodna rijec (bit string) onda autentikacija nije moguca Bilo koji ciphertext, desifriran, daje legitiman plaintext (poruku) m m E D E(K, m) K K

5 Autentifikacija kroz enkripciju (2/3)
Struktuiranje plaintext poruka Moguce dodavanjem “error-detection codes” Treba biti ekstremno oprezan WEP protokol za zastitu Wireless LANa (IEEE b) probijen m m m F  E D Usporedi F(m) F(m) K E(K, m  F(m)) K F Enkripcija javnim kljucem Povjerljivost (confidentiality). Q: Sto je sa autentikacijom? m PUB E PRB D E(PUB, m) Source A Destination B Notacija:  oznacava (sekvencijalno) grupiranje dvije poruke u jednu

6 Autentifikacija kroz enkripciju (3/3)
Enkripcija privatnim kljucem Autentikacija i digitalni potpis (uz pretpostavku da su legitimne poruke – plaintext – struktuirane) Povjerljivost, autentikacija i digitalni potpis Q: Ovaj pristup je: a) efikasan ili b) neefikasan. Zasto? Source A Destination B m m E D E(PRA, m) PRA PUA Source A Destination B m m E E D D E(PRA, m) E(PUB, E(PRA, m)) E(PRA, m) PRA PUB PRB PUA

7 Autentifikacijske funkcije
Message Authentication Code (MAC)

8 Message Authentication: Introduction
Encryption protects against passive attack (snooping) Message authentication protects against active attacks (falsification of data and transactions) By verifying that received messages are authentic (unaltered) The message source/origin is authentic Also, possible to ensure message delivery in time and in sequence (1,2,3...) General approach An authentication tag is generated and appended to each message in transmission The message itself does not have to be encrypted

9 Definicija MAC funkcije*
Funkcija koja uzima dvije ulazne vrijednosti: poruku i tajni kljuc Vrijednost funkcije je (kriptografski) autentikactor fiksne duljine (npr. n bitova) -> MAC 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 = message authentication code; MAC = C(K, m) ... poruka m proizvoljne duljine ... MAC function tajni kljuc K MAC fiksne duljine *Nemojte zamjeniti sa Media Access Control (MAC) funkcijom iz podrucja mreznih komunikacija.

10 Message Authentication Codes
Source and destination share a secret key K Source calculates the message authentication code (of a fixed length) as a function of the message m and the shared key K: MACm = F(K, m) Recipient receives MACm and M and also calculates MACm = F(K, m) If the two matches and the key is secret, the recipient accepts m as authentic Source Destination K Message m Message m Message m MAC algorithm Transmit Compare MAC algorithm K MACm = F(K, m)

11 Nacini koristenja MAC-a
Autentifikacija poruke Autentifikacija i povjerljivost poruke Source A Destination B m C  m K Usporedi K C MAC = C(K, m) m K1  C E(K2, (m  C(K1, m)) Usporedi D K2 E Source A Destination B

12 Svojstva MAC funkcije Moze se lako izracunati Kompresija
Za dani tajni kljuc K i poruku m, lako je izracunati MAC = C(K,m) MAC funkcija je slicna enkripcijskoj funkciji, s razlikom da MAC funkcija ne mora biti reverzibilna (moze biti surjekcija) Kompresija MAC funkcija mapira ulaznu poruku proizvoljne duljine u izlaznu vrijednost fiksne duljine (npr. n bitova) Tajnost kljuca Prakticno je nemoguce otkriti tajni kljuc K poznavanjem jednog ili vise parova (mi, C(K,mi)) Bez poznavanja kljuca prakticno je nemoguce izracunati ispravan MAC za “novu” poruku m Poznavanjem jednog ili vise parova (mi, C(K,mi)), prakticno je nemoguce naci par poruka-MAC (m, C(K,m)) za bilo koju novu poruku m  mi MAC je uniformno distribuiran Vjerojatnost da dvije slucajno generirane poruke m i m’ generiraju isti MAC, tj. C(K, m) = C(K, m’), je 2-n, gdje je n broj bitova u MAC-u “Brute-force” napad nefikasan

13 Primjene MAC-a Alice (A) salje Bobu (B) poruku (m, C(K,m)); K tajni kljuc izmedju A i B B racuna MAC za poruku m, te ga usporedjuje sa primljenim MAC-om, C(K,m) Ako se podudaraju B zna slijedece: Integritet poruke je sacuvan (svaka promjena bi implicirala razlicite MAC-ove, s velikom vjerojatnoscu) Integritet izvora poruke (samo A zna tajni kljuc K) Ako poruka m ukljucuje sekvencijski broj (kao npr. kod TCP protokola), B zna da je primljena poruka stigla dobrim redosljedom (zastita od replay napada kod WLAN-a) Primjer 1: Alice napise novi racunalni program te ga salje Bobu zajedno sa MAC-om izracunatim “preko” cijelog programa Provjerom MAC-a, B provjerava autenticnost programa Program nije potrebno enkriptirati (usteda) Primjer 2: Alice salje poruku Bobu zeleci osigurati integritet poruke; Alice takodjer salje MAC izracunat preko cijele poruke Provjerom MAC-a, B provjerava autenticnost poruke Q: Kako se Alice moze osigurati od napada u kojem napadac namjerno kasni isporuku poruke? Navedite jedan primjer gdje ovakav “replay” ima ozbiljne posljedice.

14 Cipher Block Chaining MAC (CBC-MAC)
CBC-MAC ( m = m1  m2  ...  mN ) CBC-MAC je siguran samo za poruke fiksne duljine Pretpostavimo da napadac ne zna K ali moze saznati MAC za bilo koju poruku m’ Napadac zeli izracunati MAC za novu poruku m  m’ Napadac kombinira dva para (mA, MACA) i (mB, MACB) na nacin da generira par (mA  (MACA  mB), MACB); mB je duga samo jedan blok MACA je CBC-MAC za poruku m = ( mA  (MACA  mB) )  mB mB je duga samo jedan blok -> MACB = E(K, mB  0) = E(K, mB) MAC za poruku m -> MAC = E( K, MACA  MACA  mB ) = E(K, mB) = MACB CMAC rjesava problem i moze se koristiti za poruke varijabilne duljine Nije sigurno koristiti isti tajni kljuc za CBC-MAC i CBC enkripciju m1 m2 m3 mN + + + CN-1 + E E E E K K K K MAC = CN

15 Autentifikacijske funkcije
Hash funkcije

16 Definicija hash funkcije
Slicna MAC funkciji, s razlikom da hash funkcija uzima samo jednu ulaznu vrijednost: poruku proizvoljne duljine Notacija m = ulazna poruka, h = message digest/hash value, H = hash funkcija h = H(m) Surjekcija (many-to-one mapping) -> kolizije izmedju dvije i vise ulaznih poruka neizbjezne ( m, m’ (m  m’) takve da H(m) = H(m’) ) Otkrivanje kolizija je tezak problem -> hash vrijednost neke poruke sluzi kao kompaktna slika (prikaz) te poruke (slicno otisku prsta – fingerprint) ... poruka m proizvoljne duljine ... Hash function hash vrijednost/hash code/message digest (fiksne duljine)

17 Nacini koristenja hash funkcije H(.)
Autentikacija i povjerljivost koristeci enkripciju H(.) moze detektirati bilo kakvu pogresku/promjenu u ulaznoj poruci Promjena u jednom ili vise bitova rezultira promjenom hash vrijednosti Autentikacija: realizacija MAC funkcije pomocu H(.) Q: Zasto E(K, H(m)) predstavlja MAC funkciju? Source A Destination B m m m H  E D Usporedi H(m) H(m) K E(K, m  H(m)) K H Source A Destination B H m  m Usporedi D H E E(K, H(m)) K K

18 Nacini koristenja hash funkcije H(.)
Autentikacija bez enkripcije Racunanje H(.) je puno efikasnije od enkripcije Izvoriste i odrediste dijele tajnu S Moguce je kombinirati H(.) sa asimetricnim kriptosustavom Digitalni potpis Source A Destination B m  m  H S Usporedi  H S H(m  S)

19 Svojstva hash funkcije H(.)
Hash funkcija H(.) generira reprezentativni otisak (fingerprint) poruke, datoteke i sl. Stoga H(.) mora zadovaljavati slijedeca svojstva: H(.) se moze primjeniti na poruku proizvoljne duljine H(.) daje hash vrijednost fiksne duljine H(x) se moze lako izracunati za bilo koju vrijednost x One-way property Za bilo koju vrijednost h, prakticno je nemoguce naci x takav da H(x) = h Weak collision resistance Za bilo koji x, prakticno je nemoguce naci y  x takav da H(y) = H(x) Strong collision resistance Prakticno je nemoguce naci par (x, y) takav da H(y) = H(x)

20 Primjene hash funkcije
Password hashing Sustav pohranjuje hash vrijednost lozinke umjesto same lozinke Napadac ne moze invertirati hash funckciju -> onemogucen direktan pristup lozinci Ako na autenticiran nacin dobijete “fingerprint” nekakvog programa koji je javno dostupan, mozete provjeriti da li je izvorni program modificiran Efikasan digitalan potpis Umjesto da se potpisuje cijela poruka, potpisuje se samo njena hash vrijednost (njen fingerprint) Autentikacija Kombinirajuci hash funkciju i djeljenu tajnu, mozemo realizirati MAC funkcionalnost “Commitment” Primjer: A i B zamisle po jedan broj. C objavljuje svoj broj n. Broj koji je blizi n pobjedjuje. A->B: hA = H(xA) B->A: hB = H(xB) C->A, B: c A->B: xA B->A: xB

21 “Birthday” napad Napad usmjeren na “strong collision resistance” svojstvo hash funkcije Definira minimalnu duljinu hash vrijednosti/message digest/fingerprint-a Dan je skup od N elemenata. Biramo, na slucajan nacin, k elemenata iz skupa (sa tim da odabrani element svaki put vracamo nazad u skup). Kolika je vjerojatnost da odaberemo bar jedan element dva ili vise puta? Najprije 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, vjerojatnost da nema nijednog ponavljanja u k biranja je (1 - 1/N)(1 - 2/N)…(1 – (k-1)/N) Za male vrijednosti x, vrijedi aproksimacija (1-x) » e-x (1 - 1/N)(1 - 2/N)…(1 – (k-1)/N) = e-1/Ne-2/N … e-(k-1)/N = e-k(k-1)/2N Konacno, vjerojatnost da se ponovi bar jedan element iznosi 1 – e-k(k-1)/2N

22 “Birthday” napad e = 1 – e-k(k-1)/2N
Kolika treba biti vrijednost k (broj biranih elemenata) da bi vjerojatnost da se bar jedan ponovi bila e ? Racunamo: e = 1 – e-k(k-1)/2N k(k-1) = 2N ln(1/1-e) k » sqrt(2N ln(1/1-e)) Primjeri: e = ½  k » sqrt(N) e = ¾  k » sqrt(N) e = 0.9  k » sqrt(N) “Birthday paradox”: Elementi su dani u godini (N = 365) Izmedju sqrt(365) » 23 slucajno odabranih ljudi, najmanje dva covjeka ce imati rodjendan na isti datum, sa vjerojatnoscu ½

23 Odredjivanje duljine hash vrijednosti
Hash funkcije (dobre) mogu se modelirati na slijedeci nacin Za danu hash vrijednost H(x) (duljine n bitova), vjerojatnost da je hash vrijednost slucajno odabranog elementa (podatka) y, H(y), jednaka H(x) iznosi priblizno 2-n “Birthday” napad N = 2n Izmedju ~sqrt(2n) = 2n/2 slucajno odabranih poruka (elemenata), dvije ce dati istu hash vrijednost (kolizija) sa velikom vjerojatnoscu Kompromitira “strong collision resistance” svojstvo hash funkcije Prakticno je nemoguce naci par (x, y) takav da H(y) = H(x) Da bi sprijecili “birthday” napad na hash funkcije, n (duljina hash vrijednosti) mora biti najmanje 128, u praksi se uzima 160 i vise.

24 Napad na “weak-collision resistance”
Za bilo koji (fiksirani) x, prakticno je nemoguce naci y  x takav da H(y) = H(x) Fiksiramo x i H(x). Primjenimo H(.) na k slucajno odabranih podataka. Koliki mora biti k da bi vjerojatnost da barem jedan podatak y  x zadovoljava H(y) = H(x) bila ½? Duljina H(.) je n bitova. Za jedan slucajno odabrani element (k=1), vjerojatnost H(y) = H(x) je 2-n Obrnuto vjerojatnost da H(y)  H(x) iznosi (1- 2-n) Za k generiranih hash vrijednosti, vjerojatnost da su sve razlicite od H(x) iznosi (1- 2-n)k Obrnuto, vjerojatnost da barem jedna od k vrijednosti odgovara H(x) iznosi 1-(1- 2-n)k Koristeci aproksimaciju (1-a)k » (1-ak) za male vrijednosti a (Taylor-ov red), dobijamo da vjerojatnost da barem jedna od k hash vrijednosti odgovara H(x) iznosi 1-(1- 2-n)k » 1-(1-k2-n) = k2-n Konacno, iz ½ = k2-n proizlazi k = 2n-1 Dakle, lakse je naci koliziju (2n/2), nego “2nd preimage” (za fiskiranu x, naci y  x takav da H(x) = H(y))

25 Struktura tipicne hash funkcije
Hash algoritam ukljucuje iteraciju kompresijskih funkcija f (b > n) Notacija CV = chaining variable L = broj ulaznih blokova Yi = i-ti ulazni blok n = duljina hash vrijednosti/fingerprint-a Motivacija za koristenje Merkle-Damgard strukture Ako je kompresijska funkcija otporna na kolizije onda je i hash algoritam u gornjoj iterativnoj strukturi Y0 Y1 YL-1 b b b CVL n f f f n n n n CV0 CV1 CVL-1

26 Poznate hash funkcije Secure Hash Algorithm (SHA) Message Digest (MD)
Uzima poruku od najvise 264 bitova te daje 160 bitnu hash vrijednost Nedavno pronadjeni kriptografski napadi sa slozenoscu 269 (puno manja slozenost nego 280 zbog “birthday” napada) SHA-256, SHA-384, SHA-512 Duljine hash vrijednosti 256, 384, 512 Message Digest (MD) MD2, MD4 – nisu u upotrebi MD5 se jos uvijek koristi (pronadjeni kriptografski napadi)

27 HMAC(K, m) = H[(K+  opad)  H[(K+  ipad)  M]]
Hash MAC Iz predhodnih lekcija znamo da se MAC funkcija moze realizirati pomocu simetricne blok sifre (CBC-MAC) HMAC je MAC funkcija realizirana pomocu hash funkcije Hash funkcije su puno brze od enkripcije (CBC-MAC) HMAC(K, m) = H[(K+  opad)  H[(K+  ipad)  M]] K+ predstavlja tajni kljuc prosiren sa nizom nula da kreira 512 bitni string 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)

28 Autentifikacijske funkcije
Digitalni potpisi

29 Definicija Digitalni potpis je slican MAC funkciji
Ali ga primatelj ne moze promjeniti Treci entitet ga moze provjeriti (nema tajnog kljuca) Digitalni potpis se koristi za autentikaciju poruka i “non-repudiation” izvorista poruke (odnosno potpisa) Bazira se na asimetricnoj kriptografiji (javnog kljuca) Privatni kljuc definira transformaciju potpisa SA SA(m) = s Javni kljuc definira transformaciju verifikacije VA VA(m, s) = true if SA(m) = s VA(m, s) = false otherwise

30 “Hash and sign” paradigma
Motivacija: operacije koje koriste javni/privatni kljuc su spore Pristup: izracunaj hash vrijednost poruke, te primjeni operacije javnog/privatnog kljuca na izracunatu hash vrijednost private key of sender generation message hash signature Enc H message hash signature Dec H verification Compare public key of sender yes/no

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

32 Autentikacijske funkcije
Certifikati

33 Public-key certificates
Struktura certifikata Javni kljuc Ime vlasnika javnog kljuca (user ID) Ime izdavaca certifikata Datum izdavanja certifikata Datum isteka certifikata Drugi podaci Digitalni potpis izdavaca certifikata Izdavaci su obicno “trusted third parties” (entiteti od povjerenja) koji se nazivaju Certification Authorities (CA) Ne trebaju biti on-line Certifikati mogu biti distribuirani preko “on-line” baza podataka koje nazivamo Certificate Directories Ne moraju biti “trusted” (od povjerenja). Q: Zasto?

34 Public-Key Certificates
One of the major roles of public-key encryption is to address the problem of key distribution Distribution of public keys Use of public-key encryption to distribute secret keys The public key is public but “how do we know that the public key belongs to the specified user” This is solved through Certificate Authority (CA) – goverment or a finacial institution (e.g., FINA in Croatia) CA acts as a trusted third party and issues public-key certificates, which consists of a public key plus User ID, all signed by the CA (using CA’s private key) User can publish her certificate (e.g., on the web) Anyone can then verify her pubic key using the trusted signature

35 Public-Key Certificates
Unsigned certificate Certificate structure Public key Public key owner (User ID) Certificate Issuer Date of issuing Certificate validity period Other information (type, standards,...) Digital signature of the certificate issuer The X.509 standard IPSec (network) SSL (web) S/MIME ( )... 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

36 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

37 Public-Key Certificates: Examples

38 Digital Envelopes Use of public-key encryption to distribute secret keys Secret keys are more efficient and faster B wishes to send a confidential message m to A A and B do not share any symmetric key B holds an authentic public key PUA of A B prepares the message m and generates a one-time (session) symmetric key K B encrypts m: cm = E[K,m] B encrypts the session key K using A’s PUA: cK = E[PUA,K] B forms a digital envelope Env = (cm,cK) and sends it to A Only A is capable of decrypting the session key from cK and therefore of recovering the original message m from cm Example: Windows© XP Encrypting File System (EFS)

39 Digital Envelopes Encryption process (sender B)
Symmetric encryption m cm=E[K,m] E Encryption process (sender B) PUA Public-key encryption One-time symmetric key K E cK=E[PUA,K] Symmetric decryption m D Decryption process (recipient A) Public-key decryption PRA D K

40 Public-key certificates
Unsigned certificate Contains: user ID, user’s public key H Certification Authority’s (CA) private key E Signed certificate: Recipient can verify signature using CA’s public key

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

42 X.509 certifikat Certificate Certificate Revocation List (CRL)

43 Primjer: Webmail

44 Struktura CA: centralizirani CA
certificate public key Svaki javni kljuc je certificiran samo jednim centralnim CA Svaki korisnik zna autenticni javni kljuc CA Svaki korisnik koze provjeriti svaki certifikat Napomena: CA mora biti entitet od povjerenja – izdaje korektne certifikate Problem sa ovim pristupom: ne skalira dobro sa velikim brojem korisnika

45 Lanac certifikata CA1 KCA1 CA2 KCA2 Bob KBob KCA0 KCA0-1 KCA1-1 KCA2-1 Prvi certifikat moze biti provjeren sa poznatim (autenticnim) javnim kljucem Svaki drugi certifikat moze biti provjeren sa javnim kljucem iz prethodnog certifikata Zadnji certifikat sadrzi zeljeni javni kljuc (Bobov javni kljuc) Napomena: svaki izdavac certifikata u lancu mora biti od povjerenja (trusted CA0, CA1, CA2)

46 Vise CA organiziranih u stablo
Kalice Kbob Svaki korisnik zna javni kljuc “root” CA0 Da bi provjerili autenticnost nekog drugog kljuca, svaki korisnik treba lanac certifikata koji zapocinja sa “root” certifikatom i zavrsava sa zeljenim kljucem


Download ppt "Sveučilište u Splitu Sveučilišni studijski centar za stručne studije"

Similar presentations


Ads by Google