Kriptografska hash funkcija (CHF) je algoritam koji se može pokrenuti na podacima kao što su pojedinačna datoteka ili lozinka da proizvede vrijednost koja se naziva kontrolni zbroj.
Glavna upotreba CHF-a je provjera autentičnosti podataka. Može se pretpostaviti da su dvije datoteke identične samo ako su kontrolni zbrojevi generirani iz svake datoteke, koristeći istu kriptografsku hash funkciju, identični.
Neke često korištene kriptografske hash funkcije uključuju MD5 i SHA-1, iako postoje i mnoge druge. One se često nazivaju "hash funkcije", ali to tehnički nije točno. Raspršivačka funkcija generički je pojam koji obuhvaća CHF-ove zajedno s drugim vrstama algoritama poput cikličkih provjera redundantnosti.
Kriptografske hash funkcije: slučaj upotrebe
Recimo da ste preuzeli najnoviju verziju preglednika Firefox. Iz nekog razloga morali ste ga preuzeti s nekog drugog mjesta, a ne Mozillinog. Budući da se ne nalazi na stranici kojoj ste naučili vjerovati, htjeli biste biti sigurni da je instalacijska datoteka koju ste upravo preuzeli potpuno ista kao ona koju nudi Mozilla.
Koristeći kalkulator kontrolne sume, izračunavate kontrolnu sumu pomoću određene kriptografske hash funkcije, kao što je SHA-2, a zatim je usporedite s onom objavljenom na Mozillinoj stranici. Ako su jednaki, možete biti razumno sigurni da je preuzimanje koje imate ono što vam je Mozilla namijenila.
Mogu li se kriptografske hash funkcije obrnuti?
Kriptografske hash funkcije dizajnirane su da spriječe mogućnost vraćanja kontrolnih zbrojeva koje stvaraju natrag na izvorne tekstove. Međutim, iako ih je gotovo nemoguće poništiti, nije 100 posto zajamčeno da će zaštititi podatke.
Hakeri mogu koristiti tablicu duginih boja kako bi otkrili čisti tekst kontrolne sume. Dugine tablice su rječnici koji navode tisuće, milijune ili čak milijarde kontrolnih zbrojeva uz njihovu odgovarajuću vrijednost običnog teksta.
Iako ovo tehnički ne preokreće algoritam kriptografskog raspršivanja, moglo bi i biti, s obzirom na to da je tako jednostavno za napraviti. U stvarnosti, budući da niti jedna dugina tablica ne može ispisati sve moguće kontrolne zbrojeve koji postoje, one su obično korisne samo za jednostavne fraze poput slabih lozinki.
Ovdje je pojednostavljena verzija dugine tablice koja pokazuje kako bi funkcionirala kada se koristi SHA-1 kriptografska hash funkcija:
Primjer dugine tablice | |
---|---|
Običan tekst | SHA-1 Kontrolni zbroj |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
lozinka1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Haker mora znati koji je algoritam kriptografskog raspršivanja korišten za generiranje kontrolnih zbrojeva kako bi otkrio vrijednosti.
Za dodatnu zaštitu, neke web stranice koje pohranjuju korisničke zaporke izvode dodatne funkcije na kriptografskom hash algoritmu nakon što se vrijednost generira, ali prije nego što se pohrani. Ovaj proces proizvodi novu vrijednost koju samo web poslužitelj razumije i koja ne odgovara izvornom kontrolnom zbroju.
Na primjer, nakon unosa lozinke i generiranja kontrolnog zbroja, ona se može razdvojiti u nekoliko dijelova i preurediti prije pohranjivanja u bazu podataka lozinki ili se određeni znakovi mogu zamijeniti s drugima. Prilikom pokušaja autentifikacije sljedeći put kada se korisnik prijavi, poslužitelj poništava ovu dodatnu funkciju, a izvorni kontrolni zbroj ponovno se generira kako bi se potvrdilo da je korisnička lozinka važeća.
Poduzimanje ovih koraka ograničava korisnost hakiranja gdje se kradu svi kontrolni zbrojevi. Ideja je izvršiti funkciju koja je nepoznata, pa ako haker zna kriptografski hash algoritam, ali ne i prilagođeni, tada poznavanje kontrolnih zbrojeva zaporki nije od pomoći.
Lozinke i kriptografske hash funkcije
Baza podataka sprema korisničke lozinke na način sličan duginoj tablici. Kada se unese vaša lozinka, kontrolni zbroj se generira i uspoređuje s onim koji je zabilježen uz vaše korisničko ime. Tada vam je odobren pristup ako su ta dva identična.
S obzirom na to da CHF proizvodi nepovratni kontrolni zbroj, je li sigurno da vaša lozinka bude jednostavna kao 12345, umjesto 12@34 $5, jednostavno zato što se sami kontrolni zbrojevi ne mogu razumjeti? Ne, a evo i zašto.
Ove dvije lozinke nemoguće je dešifrirati samo gledanjem kontrolnih zbrojeva:
MD5 za 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 za 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Na prvi pogled možete pomisliti da je u redu koristiti bilo koju od ovih lozinki. To je točno ako je napadač pokušao otkriti vašu lozinku pogađajući MD5 kontrolni zbroj, što nitko ne radi, ali nije točno ako se izvrši grubi napad ili napad rječnikom, što je uobičajena taktika.
Napad brutalnom silom događa se kada se višestruko nasumično uboda prilikom pogađanja lozinke. U ovom slučaju, bilo bi lako pogoditi 12345, ali prilično teško nasumično otkriti onaj drugi. Napad rječnikom sličan je po tome što napadač može isprobati svaku riječ, broj ili izraz s popisa uobičajenih (i ne tako uobičajenih) zaporki, a 12345 jedna je od tih uobičajenih lozinke.
Iako kriptografske hash funkcije proizvode kontrolne zbrojeve koje je teško do nemoguće pogoditi, ipak biste trebali koristiti složenu lozinku za sve svoje online i lokalne korisničke račune.
Više informacija o kriptografskim hash funkcijama
Moglo bi se činiti da su kriptografske hash funkcije povezane s enkripcijom, ali te dvije funkcioniraju na različite načine.
Šifriranje je dvosmjerni proces u kojem se nešto šifrira da postane nečitljivo, a zatim se kasnije dešifrira da bi se ponovno normalno koristilo. Možete šifrirati datoteke koje ste pohranili tako da ih nitko tko im pristupi ne može koristiti ili možete koristiti enkripciju prijenosa datoteka za šifriranje datoteka koje se kreću mrežom, poput onih koje postavljate ili preuzimate na mreži.
Kriptografske hash funkcije rade drugačije, utoliko što kontrolni zbrojevi nisu namijenjeni za poništavanje posebnom lozinkom za dehaširanje. Jedina svrha CHF-ova je usporedba dvaju podataka, primjerice prilikom preuzimanja datoteka, pohranjivanja lozinki i izvlačenja podataka iz baze podataka.
Moguće je da kriptografska hash funkcija proizvede isti kontrolni zbroj za različite dijelove podataka. Kada se to dogodi, to se zove kolizija, što je veliki problem s obzirom na to da je cijela poanta funkcije napraviti jedinstvene kontrolne zbrojeve za svaki unos podataka u nju.
Može doći do kolizija jer svaki CHF proizvodi vrijednost fiksne duljine bez obzira na ulazne podatke. Na primjer, MD5 kriptografska hash funkcija generira 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 i e10adc3949ba59abbe56e057f20f883e za tri potpuno različita bloka podataka.
Prvi kontrolni zbroj je od 12345. Drugi je generiran iz više od 700 slova i brojeva, a treći je iz 123456. Sva tri ulaza su različite duljine, ali rezultati uvijek imaju samo 32 znaka, budući da je korišten MD5 kontrolni zbroj.
Ne postoji ograničenje broja kontrolnih zbrojeva koji se mogu stvoriti jer bi svaka mala promjena u unosu trebala proizvesti potpuno drugačiji kontrolni zbroj. Budući da postoji ograničenje broja kontrolnih zbrojeva koje jedan CHF može proizvesti, uvijek postoji mogućnost da ćete naići na koliziju.
Zato su stvorene druge kriptografske hash funkcije. Dok MD5 generira vrijednost od 32 znaka, SHA-1 generira 40 znakova, a SHA-2 (512) generira 128. Što veći broj znakova ima kontrolni zbroj, manja je vjerojatnost da će doći do kolizije.