Kriptografska hash funkcija (CHF) je algoritam koji se može pokrenuti na podacima kao što su pojedinačna datoteka ili lozinka da bi se proizvela vrijednost koja se zove kontrolni zbroj.
Glavna upotreba CHF-a je provjera autentičnosti podatka. Za dvije datoteke se može pretpostaviti da su identične samo ako su kontrolni zbroji generirani iz svake datoteke, koristeći istu kriptografsku hash funkciju, identični.
Neke najčešće korištene kriptografske heš funkcije uključuju MD5 i SHA-1, iako postoje i mnoge druge. One se često nazivaju "haš funkcijama", ali to nije tehnički ispravno. Haš funkcija je generički termin koji obuhvata CHF-ove zajedno s drugim vrstama algoritama kao što su cikličke provjere redundancije.
Kriptografske hash funkcije: slučaj upotrebe
Recimo da ste preuzeli najnoviju verziju pretraživača Firefox. Iz nekog razloga, morali ste da ga preuzmete sa sajta koji nije Mozilla. Budući da se ne nalazi na web lokaciji kojoj ste naučili vjerovati, željeli biste se uvjeriti da je instalacioni fajl koji ste upravo preuzeli potpuno isti kao onaj koji nudi Mozilla.
Koristeći kalkulator kontrolne sume, izračunavate kontrolnu sumu koristeći određenu kriptografsku heš funkciju, kao što je SHA-2, a zatim ga uporedite sa onom objavljenom na Mozilinoj stranici. Ako su jednaki, možete biti razumno sigurni da je preuzimanje koje imate ono koje je Mozilla namjeravala da imate.
Mogu li kriptografske hash funkcije biti obrnute?
Kriptografske heš funkcije su dizajnirane da spriječe mogućnost da se kontrolni zbrojevi koje kreiraju vrate u originalne tekstove. Međutim, iako ih je praktično nemoguće poništiti, nije 100 posto zajamčeno da će zaštititi podatke.
Hakeri mogu koristiti tabelu duge da bi otkrili običan tekst kontrolne sume. Rainbow tabele su rječnici koji navode hiljade, milione ili čak milijarde kontrolnih suma zajedno sa odgovarajućom vrijednošću običnog teksta.
Iako ovo tehnički ne preokreće kriptografski heš algoritam, moglo bi i biti, s obzirom da je to tako jednostavno za napraviti. U stvarnosti, pošto nijedna tabela duginih boja ne može navesti svaki mogući kontrolni zbroj koji postoji, one su obično korisne samo za jednostavne fraze kao što su slabe lozinke.
Ovo je pojednostavljena verzija dugine tabele koja pokazuje kako bi se radilo kada se koristi SHA-1 kriptografska hash funkcija:
Primjer Rainbow Table | |
---|---|
Pravi tekst | SHA-1 Kontrolni zbroj |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
lozinka1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Haker mora znati koji kriptografski hash algoritam je korišten za generiranje kontrolnih suma da bi se utvrdile vrijednosti.
Za dodatnu zaštitu, neke web stranice koje pohranjuju korisničke lozinke izvode dodatne funkcije na kriptografskom hash algoritmu nakon što je vrijednost generirana, ali prije nego što je pohranjena. Ovaj proces proizvodi novu vrijednost koju samo web server razumije i koja se ne podudara s originalnom kontrolnom sumom.
Na primjer, nakon što se unese lozinka i generira kontrolni zbroj, može se razdvojiti na nekoliko dijelova i preurediti prije nego što bude pohranjena u bazi podataka lozinki, ili se određeni znakovi mogu zamijeniti drugim. Prilikom pokušaja autentifikacije sljedeći put kada se korisnik prijavi, server poništava ovu dodatnu funkciju, a originalna kontrolna suma se ponovo generiše kako bi se potvrdilo da je korisnička lozinka važeća.
Poduzimanje ovih koraka ograničava korisnost hakovanja gdje se kradu svi kontrolni sumi. Ideja je da se izvrši funkcija koja je nepoznata, tako da ako haker poznaje kriptografski hash algoritam, ali ne i prilagođeni, tada poznavanje kontrolnih suma lozinke nije od pomoći.
Lozinke i kriptografske hash funkcije
Baza podataka čuva korisničke lozinke na način sličan duginoj tabeli. Kada se unese vaša lozinka, kontrolni zbroj se generiše i upoređuje sa onom u evidenciji sa vašim korisničkim imenom. Tada vam se odobrava pristup ako su ta dva identična.
S obzirom na to da CHF proizvodi nepovratni kontrolni zbroj, da li je sigurno da svoju lozinku učinite jednostavnom kao 12345, umjesto 12@34 $5, jednostavno zato što se sami kontrolni sumi ne mogu razumjeti? Ne, i evo zašto.
Ove dvije lozinke je nemoguće dešifrirati samo gledanjem samo kontrolnih suma:
MD5 za 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 za 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Na prvi pogled, možda mislite da je u redu koristiti bilo koju od ovih lozinki. Ovo je tačno ako je napadač pokušao da otkrije vašu lozinku pogađanjem MD5 kontrolne sume, što niko ne radi, ali nije tačno ako je izvršen napad grubom silom ili rečnikom, što je uobičajena taktika.
Napad grubom silom se dešava kada se izvrši više nasumičnih uboda prilikom pogađanja lozinke. U ovom slučaju, bilo bi lako pogoditi 12345, ali prilično teško nasumično otkriti drugi. Napad rječnikom je sličan po tome što napadač može isprobati svaku riječ, broj ili frazu sa liste uobičajenih (i ne tako uobičajenih) lozinki, a 12345 je jedna od onih uobičajenih lozinke.
Iako kriptografske hash funkcije proizvode kontrolne sume koje je teško ili nemoguće pogoditi, i dalje biste trebali koristiti složenu lozinku za sve svoje online i lokalne korisničke račune.
Više informacija o kriptografskim hash funkcijama
Može izgledati kao da su kriptografske hash funkcije povezane s enkripcijom, ali te dvije funkcioniraju na različite načine.
Šifrovanje je dvosmjerni proces u kojem se nešto šifrira da postane nečitljivo, a zatim se kasnije dešifruje kako bi se ponovo normalno koristilo. Možete šifrirati datoteke koje ste pohranili tako da svako ko im pristupi ne može da ih koristi, ili možete koristiti šifriranje prijenosa datoteka za šifriranje datoteka koje se kreću preko mreže, poput onih koje otpremate ili preuzimate na mreži.
Kriptografske funkcije heširanja rade drugačije, jer kontrolni sumi nisu namijenjeni za poništavanje posebnom lozinkom za dehaširanje. Jedina svrha CHF-a je da uporede dva podatka, kao što su prilikom preuzimanja datoteka, pohranjivanja lozinki i izvlačenja podataka iz baze podataka.
Moguće je da kriptografska heš 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 poenta funkcije napraviti jedinstvene kontrolne sume za svaki unos podataka u nju.
Kolizije mogu nastati zato što svaki CHF proizvodi vrijednost fiksne dužine bez obzira na ulazne podatke. Na primjer, MD5 kriptografska hash funkcija generira 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 i e10adc3949ba6ea8a7 za različite podatke 30adc3949ba6e58 3949ba6e58 3949ba6e585be totalno 3949ba6e58
Prvi kontrolni zbroj je od 12345. Drugi je generisan od preko 700 slova i brojeva, a treći je od 123456. Sva tri ulaza su različite dužine, ali rezultati su uvijek dugi samo 32 znaka, budući da je korištena MD5 kontrolna suma.
Ne postoji ograničenje u broju kontrolnih suma koje se mogu kreirati jer svaka mala promjena u unosu treba da proizvede potpuno drugačiji kontrolni zbroj. Budući da postoji ograničenje broja kontrolnih suma koje jedan CHF može proizvesti, uvijek postoji mogućnost da ćete naići na koliziju.
Zato su kreirane druge kriptografske funkcije heširanja. Dok MD5 generiše vrijednost od 32 znaka, SHA-1 generiše 40 znakova, a SHA-2 (512) generira 128. Što je veći broj znakova kontrolne sume, manja je vjerovatnoća da će doći do kolizije.