330 likes | 711 Views
Hash Funkcije. Emina Domjan • Juren Jurica • Toma Mlikota. Sadržaj. Definicija Kolizija Primjene Hash tablice Hash liste Hash stabla Kriptografske hash funkcije MD5 SHA. Definicija. HASH funkcija ili hash algoritam je funkcija za sažimanje i identificiranje podataka
E N D
Hash Funkcije Emina Domjan • Juren Jurica • Toma Mlikota
Sadržaj • Definicija • Kolizija • Primjene • Hash tablice • Hash liste • Hash stabla • Kriptografske hash funkcije • MD5 • SHA
Definicija • HASH funkcija ili hash algoritam je funkcija za sažimanje i identificiranje podataka • Izvođenje funkcije naziva se “hashing”, a njime se dobije hash vrijednost • Hash funkcija je transformacija koja od ulaza varijabilne veličine vraća znakovni niz fiksne dužine
Definicija • Hash = chop and mix • Peter Luhn, IBM 1953. godine • Hash funkcije su determinističke • Ako su dva izlaza dobivena istom funkcijom različita onda su i ulazi bili različiti
Kolizija • Kolizija je situacija koja se događa kada od dva različita ulaza u hash funkciju dobijemo identične izlaze • Može se izbjeći samo u situacijama kada postoji malen broj unaprijed poznatih ulaza
Primjene hash funkcija • Detekciju i ispravljanje grešaka nastalih prijenosom podataka • Uspoređivanje datoteka te utvrđivanje integriteta • Pronalaženje datoteka u p2p • Hash tablice, liste, stabla
Hash tablice • Hash tablice ili hash mape su strukture podataka koje povezuju ključeve s određenim vrijednostima • Osnovna namjena hash tablica je učinkovito pretraživanje • Podržavaju funkcije insert (ključ, vrijednost), lookup (ključ), delete(ključ) te usluge tipa proširivanje tablice, pražnjenje tablice i sl.
Kolizija u hash tablicama • Ulančavanje – svaki element niza referencira se na vezanu listu
Kolizija u hash tablicama • Otvoreno adresiranje – podaci se spremaju direktno u niz, a niz se pretražuje dok se ne nađu traženi podaci
Hash liste • Hash liste mogu biti bilo koja vrsta lista hash vrijednosti • Koriste se za dodatno ubrzanje pretraživanja hash tablica, očuvanje integriteta podataka, u distribuiranim bazama podataka …
Hash stabla • Nadopuna hash listi • Nazivaju se i Merkle trees te Tiger tree hashes • Hash stablo je stablo hash vrijednosti gdje su listovi u stablu hash vrijednosti blokova podataka. Čvorovi dalje u stablu su hash vrijednosti odgovarajuće djece • Koriste se za zaštitu podataka te da se osiguramo da čvorovi ne šalju krivotvorene podatke
Kriptografske hash funkcije • Kriptografske hash funkcije su hash funkcije s dodatnim sigurnosnim svojstvima kako bi ih se moglo koristiti za autentifikaciju i očuvanje integriteta podataka • Neke od funkcija su HAVAL, MD2, MD4, MD5, N-Hash, RIPEMD-160, SHA, Snefru, Tiger, Whirlpool
MD5 • Hash vrijednost velika je 128 bita • Prihvaćen je kao Internet standard (RFC 1321) • Algoritam je 1991. godine razvio Ronald Rivest (Department of Electrical Engineering and Computer Science, MIT)
MD5 algoritam • Poruka se dijeli na blokove veličine 512 bita • MD5 algoritam radi na 128-bitnom izrazu koji se dijeli na 4 32-bitne riječi • Zatim se procesiraju redom svi 512-bitni blokovi kojima se mijenja 128-bitni izraz
MD5 algoritam • Procesiranje poruke sastoji se od 4 slične faze koje se nazivaju “rounds”. Svaka faza sastoji se od 16 sličnih operacija baziranih na nelinearnoj funkciji F, modularnom zbrajanju i rotaciji bitova ulijevo
MD5CRK • Pokrenuo ga je Jean-Luc Cooke (CertainKey Cryptosystems) 1. ožujka 2004. • Napad se odvijao distribuirano • Očekivano vrijeme potrebno za pronalazak kolizije je • Vjerojatnost uspjeha nakon K MD5 kalkulacija je • Očekivani broj operacija potrebnih za pronalaženje kolizije je
SHA - 1 • Iz porodice algoritama za kriptiranje SHA • Algoritam je baziran na metodama koje koristi Ronald R. Rivest (MIT) u MD4 i MD5 algoritmima za dobivanje sažetka • Algoritam za poruke duljine do 264 bita (216 TB) generira 160-bitni sažetak • 80 bita služe za izbjegavanje kolizije
Princip SHA - 1 • U prvom koraku se ulazna informacija podijeli na blokove veličine 512 bita. • Svaki blok se podijeli na 16 32-bitnih riječi: w(i), 0 ≤ i ≤ 15 • 16 32-bitnih riječi se proširuje na 80 32-bitnih riječi:for i from 16 to 79 w(i) := (w(i-3) xor w(i-8) xor w(i-14) xor w(i-16)) leftrotate 1
SHA - 1 • Izračunava se hash vrijednost za svaki blok • Glavna petlja • Na zadnji se blok dodaje jedinica pa N nula (gdje N može poprimiti vrijednosti iz skupa {0,511}) te 64-bitni broj koji pokazuje veličinu originalne poruke u bitovima
Primjer • ako je zadnji blok 5475-bitne poruke: 1000011010101...10111 (355 bita) • onda se dodaje 1000...000xxx...x, gdje x-eva ima 64 (5475 binarno), a nula 92 (355+1+92+64=512). • Ukoliko je zadnji blok poruke veći od 447 bita, u njega ne bi stali jedinica i 64-bitni broj pa se dodaje još jedan 512 bitni blok (na prvi 1000...0, na drugi 0000....00xxx...x).
Primjer • SHA1 ("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12“ • SHA1 ("The quick brown fox jumps over the lazy cog") == "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3“ • SHA1 ("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709"
SHA - 2 • Sadrži u sebi pod-algoritme SHA-256, SHA-384 and SHA-512 koji daju sažetak u duljini od 256, 384 i 512 bitova • SHA-256 ima 128 bita za izbjegavanje kolizije • SHA-384 ima 192 bita za izbjegavanje kolizije • SHA-512 ima 256 bita za izbjegavanje kolizije • SHA-2 algoritmi jamče nam veću sigurnost od SHA-1 algoritma zbog veće dužine sažetka i više bitova za izbjegavanje kolizije
SHA – 2 • SHA-256:- koristi 32-bitne riječi- 64 koraka- više početnih varijabla • SHA-512:- koristi 64-bitne riječi- 80 koraka- različite početne vrijednosti i konstante- različiti shift i rotate amounts