Slijede razlike između dviju inačica stranice.
Novija izmjena | Starija izmjena | ||
racfor_wiki:razno:hash_funkcije [2022/01/08 15:38] mterihaj stvoreno |
racfor_wiki:razno:hash_funkcije [2024/12/05 12:24] (trenutno) |
||
---|---|---|---|
Redak 1: | Redak 1: | ||
===== Sažetak ===== | ===== Sažetak ===== | ||
- | How do you write an abstract? Identify your purpose. You're writing about a correlation between lack of lunches in schools and poor grades. … Explain the problem at hand. Abstracts state the “problem” behind your work. … Explain your methods. … ([[https:// | + | 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 |
- | Keywords: abstract; bastract; astract; retract; tractor | ||
===== Uvod ===== | ===== Uvod ===== | ||
- | ===== Poglavlje 1 ===== | + | 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, |
+ | ===== 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, | ||
+ | ==== 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, | ||
- | ===== Poglavlje 2 ===== | + | ==== 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, | ||
- | ===== Poglavlje 3 ===== | + | ===== Sigurnosna svojstva |
- | ===== Poglavlje | + | 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 = ' | ||
+ | s2 = ' | ||
+ | |||
+ | 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/ | ||
+ | |||
+ | ==== 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, | ||
+ | {{: | ||
+ | |||
+ | Ako u prethodnoj formuli zamijenimo d s brojem mogućih vrijednosti, | ||
+ | |||
+ | ==== 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, | ||
===== Zaključak ===== | ===== 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 ===== | ===== Literatura ===== | ||
- | [1] [[http://books.google.hr/books? | + | [1] [[https://www.garykessler.net/library/ |
+ | |||
+ | [2] [[https:// | ||
- | [2] [[http://www.google.com/books? | + | [3] [[https://ocw.mit.edu/courses/ |
- | [3] [[http://www.cogtech.usc.edu/publications/kirschner_Sweller_Clark.pdf|Kirschner, | + | [4] [[https://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%20-%20M.M.J.%20Stevens.pdf|M.M.J. Stevens. Collisions for MD5, 2007]] |
+ | [5] [[https:// | ||