Enkripcija podataka: Heš funkcija (Epizoda 4)
KRIPTOGRAFSKA HEŠ FUNKCIJA
To je matematička jednačina, odnosno formula sa specifičnim skupom osobina koje je čine izuzetno korisnom za šifrovanje.
![Hash function](https://sajberinfo.com/wp-content/uploads/2022/06/enkripcija-4.jpg)
Heš funkcija; Design by Saša Đurić
Iako postoji nekoliko različitih klasa heš funkcija, sve one dijele sljedeće zajedničke osobine:
Računarska efikasnost
Heš funkcija prvenstven mora biti kompjuterski efikasna. Drugim riječima računari moraju biti sposobni da da izvrše računanje heš funkcije za veoma kratko vrijeme, što je samo po sebi i očigledno. Ako bi računanje heš funkcije trajalo po nekoliko minuta to ne bi bilo praktično. Danas ipak ova osobina nema toliko značaja kao prije recimo pedeset godina. Danas računari računaju napredne heš funkcije u djeliću sekunde.
Determinizam
Kriptografska heš funkcija mora biti određena, odnosno za svaki dati ulazni podatak, heš funkcija mora dati uvijek isti rezultat. Ako se jedan podatak unese milion puta, heš funkcija mora dati tačno isti rezultat milion puta. Dobijanje različitog rezultata svaki put bi obesmislilo korištenje heš funkcije, jer bi ona tada bila nasumična i beskorisna. Bez određenosti ne bi bilo moguće potvrditi određeni unos, što je i smisao heš funkcije. Ona treba da da može da potvrdi autentičnost bez pristupa privatnom ključu.
Otpornost na presliku
Izlazni rezultat heš funkcije ne smije otkriti niti jednu informaciju o ulaznim podacima. To se naziva otpornost na presliku – skup mogućih ulaza. Treba imati na umu da heš funkcija kao ulaznu vrijednost može imati različite vrijednosti ulaznog podatka – brojevi, slova, riječi ili znaci interpunkcije. Dalje, to može biti jedan znak, rečenica, čitava stranica ili čitava knjiga. Kako god, heš funkcija će dati rezultat iste dužine. Znači, bez obzira na ulazni podatak, rezultat će biti alfanumerički niz iste dužine. Ovo je važno, jer nizovi različite dužine bi napadači već dali neki trag za razbijanje heš funkcije. Na ovaj način je nemoguće odrediti ulaznu dužinu podatka, odnosno da li su to brojevi ili slova, nasumični znakovi ili prepoznatljive riječi. Dodatno, promjena samo jednog znaka ulaznog podatka, mora dati skroz drugačiji izlazni niz.
Otpornost na sudar
Ovo znači da mora biti veoma teško – gotovo nemoguće – da dva različita ulazna podatka daju isti izlazni rezultat. Kao što je već rečeno, za bilo koju ulaznu vrijednost podatka, izlazna vrijednost je uvijek iste dužine. To znači da je određen broj mogućnosti u izlaznom nizu. Pošto je ulazni niz u suštini beskonačan, a izlazni niz ograničen, matematički je vjerovatno da će više od jednog ulaznog podatka dati istu izlaznu vrijednost. Ovdje je cilj da se postigne astronomski mala vjerovatnoća da dva ulazna podatka imaju isti izlazni niz, toliko mala da se ta mogućnost može praktično odbaciti.
![Heš funkcija - otpornost na sudar](https://sajberinfo.com/wp-content/uploads/2022/06/enkripcija-4-2-667x1024.jpg)
Otpornost na sudar; Design by Saša Đurić
Nemogućnost obrnutog inžinjeringa
Posljednja osobina podrazumijeva da heš funkcija bude potpuno otporna na obrnuti inžinjering. To znači da bi trebalo biti nemoguće da se na osnovu izlaznog podatka, obrnutim postupkom dobije ulazni podatak.
KLASE HEŠ FUNKCIJA
Zbog svega navedenog heš funkcije se nazivaju jednosmjernim funkcijama, a ova njihova jednosmjerna sposobnost je upravo ono što je potrebno u kriptografiji. Na ovim osnovama je nastalo nekoliko klasa heš funkcija. Neke od najpopularnijih su:
Message Digest (MD)
U ovoj porodici su MD2, MD4, MD5 i MD6 heš funkcije. Kao najpopularnija MD5 heš funkcija je korištena za obezbjeđivanje integriteta prilikom prenosa podataka. Međutim, 2004. godine otkriven je sudar u ovoj heš funkciji, pa je uz pomoć nekoliko povezanih računara bilo moguće razbiti ovu funkciju. To je za posljedicu imalo da se ova heš funkcija proglasi nesigurnom i da se više ne preporučuje za upotrebu.
Secure Hash Function (SHA)
Ova porodica obuhvata četiri algoritma: SHA-0, SHA-1, SHA-2 i SHA-3. Originalna verzija SHA-0 je 160-bitna funkcija, objavljena 1993. godine. Imala je nekoliko slabosti i nikada nije postala popularna. Kasnije, pojavom SHA-1 1995. godine, ispravljaju se greške iz prethodne verzije. Ova verzija ulazu u široku primjenu, pa je korištena i za Secure Socket Layer (SSL). Kako je 2005. godine u SHA-1 otkriven sudar unutar funkcije, dalja upotreba ove funkcije je postala upitna. Sledeći algoritam u porodici SHA-2 ima četiri varijante SHA-224, SHA-256, SHA-384 i SHA-512, u zavisnosti od broja bita u heš vrijednosti. Iako nema poznatog napada koji razbija ovu heš funkciju pokrenut je razvoj nove heš funkcije. Razlog za ovakvu odluku se krije u tome što SHA-2 prati dizajn SHA-1, pa je moguće da ipak ima ranjivost. Tako da danas imamo i SHA-3. Razvijena 2012. godine i donosi nekoliko unapređenja kao što su povećanje performansi i dobra otpornost na napade.
![SHA Function](https://sajberinfo.com/wp-content/uploads/2022/06/enkripcija-4-1.jpg)
Secure Hash Function (SHA); Design by Saša Đurić
RACE Integrity Primitives Evaluation Message Digest (RIPEMD)
Ovaj set heš funkcija je dizajniran od strane zajednice otvorenog kôda i poznat je kao Evropska porodica heš funkcija. Ovdje se nalaze RIPEMD, RIPEMD-128 i RIPEMD-160, kao i 256-bitna u 320-bitna verzija. Originalna RIPEMD je dizajnirana na principima korištenim u izradi MD4 heš funkcije, pa je sigurnost bila upitna. Odmah je kao zamjena došla RIPEMD-128 heš funkcija kao ispravka za ranjivosti originala. RIPEMD-160 heš funkcija je sljedeća naprednija verzija i u najširoj je upotrebi. Verzije od 256-bita i 320-bita samo povećavaju otpornost na sudar unutar heš funkcije, ali nemaju veću sigurnost od RIPEMD-128 i RIPEMD-160 heš funkcija.
Whirlpool
Ovo je 512-bitna heš funkcija, izvedena na osnovu izmijenjene verzije Advanced Encryption Standard (AES). Postoje tri verzije nazvane WHIRLPOOL-0, WHIRLPOOL-T i WHIRLPOOL. Ova heš funkcija je usvojena od strane Međunarodna organizacija za standardizaciju (eng. International Organization for standardization – ISO).
ZAKLJUČAK
Heš funkcije imaju dvije direktne primjene. Prva primjena je kod zaštite lozinki, gdje se lozinke umjesto svoje originalne vrijednosti čuvaju kao heš vrijednosti. Ako napadač dođe u situaciju da dobije pristup lozinkama, on će vidjeti samo njihove heš vrijednosti, a zbog nemogućnosti obrnutog inžinjeringa napadač neće saznati stvarnu vrijednost lozinke. Druga direktna upotreba je za provjeru integriteta podataka. Heš funkcija ne vrši enkripciju podataka, već omogućavaju da se upoređivanjem ulazne i izlazne vrijednosti heš algoritma garantuje integritet i ispravnost fajlova ili podataka što omogućava da se otkrije da li je neko neovlašteno mijenjao podatke.