Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Sažetak

Hash funkcije ili funkcije sažetka imaju široku primjenu. Omogućavaju nam osigurati autentičnost i integritet podataka prilikom prijenosa kroz nesigurne medije. Kako bi se funkcija mogla koristiti u sigurnosne svrhe, i kako bi se spriječilo narušavanje sigurnosti, bitno je da zadovoljava neke sigurnosne zahtjeve.

Uvod

Hash funkcija je funkcija koja preslikava ulazni podatak proizvoljne duljine u izlaznu vrijednost, odnosno sažetak ili hash, koji je uvijek fiksne duljine. Ovo preslikavanje je jednosmjerno, odnosno, na temelju izlazne vrijednosti nije moguće odrediti ulaznu vrijednost. Izračunavanje sažetka se izvodi u determinističkom vremenu. Također, prilikom računanja sažetka za istu ulaznu vrijednost, izlazna vrijednost je uvijek ista. Hash vrijednosti se često prikazuju kao niz znakova u heksadekadskoj bazi. Algoritmi i operacije koje koriste te funkcije su javni te ne koriste se ključevi. Činjenica da su javni omogućava i verifikaciju i certifikaciju algoritama.

Primjene

Hash funkcije imaju brojne primjene, navedeno je nekoliko čestih primjena.

Stvaranje i provjera digitalnog potpisa

Digitalni potpis je sigurnosni mehanizam kojim se osigurava autentičnost, integritet i neporecivost potpisanih podataka. Za ostvarenje digitalnog potpisa se koristi asimetrični kriptografski algoritam i hash funkcija. Nad ulaznim podacima se izračunava hash, koji se zatim šifrira privatnim ključem pošiljatelja. Ovime se omogućava da bilo tko provjeri autentičnost i integritet primljenih podataka dešifriranjem šifriranog sažetka i usporedbom s vlastito izračunatim sažetkom.

Provjera integriteta i autentičnosti datoteka

Prilikom prijenosa datoteka kroz razne medije mogući su razni napadi, kao što su presretanje i izmjena podataka, čime je moguće da je originalna datoteka zamijenjena sa zlonamjernom ili lažiranom. Kako bi to spriječili, često je poželjno provjeriti integritet i autentičnost primljenih datoteka, odnosno da li su to stvarno datoteke koje smo htjeli preuzeti. U tu svrhu, strana koja objavljuje ili šalje datoteke često objavljuje i hash od tih datoteka. Taj hash je javno objavljen kako bi bilo tko mogao izvršiti provjeru i uvjeriti se da su datoteke autentične i cjelovite.

Pohrana i provjera lozinki

Lozinke u sustavima se često pohranjuju u obliku sažetka izračunatog nad stvarnom vrijednošću lozinke. Ovime se onemogućava se pristupom pohranjenim podacima ili u slučaju napada, curenja podataka, sazna stvarna vrijednost lozinke. Provjera lozinke je jednostavna, uspoređuje se spremljena hash vrijednost s izračunatim hashom prilikom prijave.

Sigurnosna svojstva

Za navedene primjene hash funkcija, bitno je da zadovoljavaju određena važna sigurnosna svojstva.

Preimage resistance

Otpornost na izračunavanje ulazne vrijednosti. Ne postoji reverzna funkcija koja će za određeni hash izračunati vrijednost koja je bila ulaz u funkciju.

Second preimage resistance

Otpornost na izračunavanje ulazne vrijednosti koja ima isti hash kao i neka druga određena vrijednost i hash.

Collision resistance

Otpornost na kolizije. Nije moguće pronaći dvije različite vrijednosti koje će dati isti sažetak. Zbog činjenice da je izlaz hash funkcije fiksne duljine, uvijek će postojati više ulaznih vrijednosti koje će davati istu izlaznu vrijednost, stoga su teoretski napadi grubom silom uvijek mogući. Međutim, u praksi, ovo kod većine algoritama nije izvedivo zbog same duljine izlazne vrijednosti.

Difuzija

Promjenom jednog bita ulazne vrijednosti dolazi do promjene što više bitova izlazne vrijednosti. Sljedeći primjer ilustrira kako izmjena jednog slova ulaznog niza znakova rezultira kompletno različitim izlazom.

s1 = 'Fakultet elektrotehnike i računarstva'
s2 = 'Fakultet elektrotehnike i racunarstva'

MD5(s1) = 58d75906bddec0577b6b975bc495cc40
MD5(s2) = f650f893fca58c8d4cf46d769e8faef7

SHA256(s1) = d607158e55d9372b3281db9c1b88493fba064b8cb80e37fd5613c0c4b9309759
SHA256(s2) = d5979c790d44a038fae49b7316e60d65ad0a328900aa193819bc5f5c10eed76a

Poznate funkcije

Postoje brojne hash funkcije, u nastavku je dan opći pregled nekih najpoznatijih funkcija.

MD5

Message-digest algoritam objavljen 1992. godine. Ulaznu vrijednost dijeli na blokove duljine 512 bitova, a izlazna vrijednost je duljine 128 bitova. MD5 algoritam se smatra nesigurnim i neprikladnim za uporabu u sustavima gdje je bitna sigurnost od 2010. godine jer su otkrivene brojne ranjivosti koje narušavaju sigurnosne zahtjeve. Unatoč tome, i dalje se koristi.

SHA-1

Secure Hash Algorithm 1 je objavila NSA, 1993. godine. Ulazna vrijednost se dijeli na blokove duljine 512 bitova, a izlazna vrijednost je duljine 160 bitova. Ovaj algoritam, od 2005. godine, se također smatra nesigurnim i neprikladnim za uporabu u svrhu ostvarenja digitalnih potpisa.

SHA-2

Secure Hash Algorithm 2 je skup algoritama koje je objavila NSA, 2001. godine. Ovisno o algoritmu, izlaz je duljine 224, 256, 384 ili 512 bitova (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256). SHA-2 se i danas smatra sigurnim skupom algoritama.

SHA-3

Secure Hash Algorithm 3 je skup algoritama koje je objavio NIST, 2015. godine. Ovaj set algoritama koristi značajno drugačiji pristup za izračunavanje hash vrijednosti koji im dozvoljava da izlaz bude proizvoljne duljine. SHA-3 se također smatra sigurnim.

Napadi

Collision attack

Cilj napada kolizijom je pronaći dvije ulazne vrijednosti koje daju istu hash vrijednost. Općenito se smatra kada se pronađe napad kolizijom na određenu hash funkciju koji ima manju složenost od rođendanskog napada, da se ta funkcija smatra nesigurnom i neprikladnom za primjenu. Za MD5 napad kolizijom je moguće izvesti unutar nekoliko sekundi čak od 2007. godine na prosječnom računalu.

Preimage attack

Napad na izračun ulazne vrijednosti su značajno teži za izvesti nego napadi na koliziju. Nekoliko ovakvih napada je do sada pronađeno za poznatije funkcije, ali oni nisu praktično izvedivi.

Birthday attack

Prema teoriji vjerojatnosti, vjerojatnost da 2 osobe iz skupa od n osoba imaju rođendan na isti dan može se izračunati prema sljedećoj formuli

Ako u prethodnoj formuli zamijenimo d s brojem mogućih vrijednosti, 365, a n s brojem osoba, 23, dobije se rezultat od približno 50.73%. Ovaj rezultat može biti dosta neintuitivan, jer sa značajno malim brojem osoba u skupu se postiže prilično velika vjerojatnost. Poopći li se ovaj pristup na hash funkcije, gdje d predstavlja duljinu izlazne vrijednosti u bitovima, a n broj ulaza, vidljivo je da je primjenom rođendanskog napada, moguće pronaći koliziju u značajno manjoj složenosti nego što bi bio opći napad grubom silom.

Brute-force attack

Najprimitivniji napad na bilo kakav kriptosustav je napad grubom silom. Protiv ovog napada teorijski se nije moguće obraniti ako se vrijeme napada smatra neograničeno. U stvarnosti ovakav napad je često onemogućen samom duljinom izlazne vrijednosti hash funkcije, jer upravo to određuje složenost ovakvog napada.

Rainbow table

Ova vrsta napada nastoji smanjiti vrijeme potrebno za pronalazak ulazne vrijednosti koja rezultira traženim hashom. To se postiže prethodnim izračunavanjem i pohranom hash vrijednosti za veliku količinu ulaznih vrijednosti. Ovo se često primjenjuje prilikom napada na lozinke koje su pohranjene kao hash vrijednosti u sustavu. Ljudi često koriste iste lozinke na više sistema, često koriste neke jednostavne, popularne lozinke. Pohranom hash vrijednosti za mnoge česte lozinke kao i za lozinke koje su prethodno otkrivene nekim drugim napadom, moguće je napraviti kolekciju, odnosnu tablicu parova lozinka-hash koje se zatim mogu iskoristiti za napad. Ovakve, već gotove tablice su dostupne napadačima. Rješenje protiv ovog napada je korištenje tzv. salt uz hash lozinke. Dodavanjem nasumične vrijednosti ulaznoj vrijednosti u hash funkciju se onemogućava klasični napad rainbow tablicama. Salt se pohranjuje uz lozinku te nije šifriran. Naravno, napad je moguće izvesti za pojedinačnu kombinaciju salt-lozinka, ali takav napad je znatno usporen.

Zaključak

Javnost algoritama i operacija korištenih u algoritmima omogućava verifikaciju tih algoritama. Konstantnim istraživanjima i kriptoanalizom algoritama se otkrivaju potencijalne mane ili opasnosti koje narušavaju sigurnost. Jednom kada je otkrivena kritična ranjivost u nekom algoritmu, bitno je u svim sigurnosno kritičnim sustavima zamijeniti korišteni algoritam kako bi se spriječili potencijalni napadi na sustav.

Literatura

racfor_wiki/razno/hash_funkcije.txt · Zadnja izmjena: 2023/06/19 18:17 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0