Većina nas, prilikom registracije na novom internetskom servisu, bez puno razmišljanja postavi lozinku i potvrdi svoj račun. U tom trenutku prirodno je pretpostaviti da je taj tajni niz znakova sada spremljen u nekoj bazi podataka tog pružatelja usluga. Međutim, u suvremenoj informatičkoj sigurnosti, pohranjivanje lozinki u čistom tekstu smatra se nedopuštivim i iznimno opasnim postupkom. Da se to i dalje prakticira, svaki sigurnosni propust ili prodor u sustav omogućio bi zlonamjernim osobama trenutni pristup svim korisničkim računima, a često i drugim servisima ako korisnici koriste iste podatke za prijavu.
Tu se javlja logično pitanje: ako stranica zapravo ne zna našu točnu lozinku, kako onda može utvrditi jesmo li je ispravno unijeli prilikom prijave? Odgovor leži u sofisticiranom matematičkom procesu koji se naziva heširanje. Umjesto vaše stvarne lozinke, sustav pohranjuje samo njezin jedinstveni digitalni otisak, koji je praktički nemoguće vratiti u prvobitni oblik.
Sadržaj...
Što je zapravo heširanje i kako funkcionira u praksi?
Heširanje je proces pretvaranja bilo kojeg ulaznog podatka, bez obzira na njegovu duljinu, u niz znakova fiksne duljine pomoću posebne matematičke funkcije. Kako bismo ovo lakše razumjeli, možemo zamisliti heš funkciju kao digitalnu mlinicu: ubacite određeni podatak (vašu lozinku), on prođe kroz složeni matematički proces i na izlazu dobijete specifičnu mješavinu znakova. Iako taj rezultat izgleda kao nasumičan skup slova i brojeva, on je uvijek identičan za isti ulazni podatak.
Ključna karakteristika ove funkcije je njezina jednosmjernost. To znači da je izuzetno jednostavno pretvoriti lozinku u heš, ali je matematički praktički nemoguće uraditi obrnuto – iz dobivenog otiska vratiti originalnu lozinku. Čak i najmanja promjena u lozinki, poput zamjene jednog velikog slova malim ili dodavanja jedne točke na kraj, rezultira potpuno drugačijim hešom. Ovaj fenomen u informatici nazivamo “lavine efektom”, jer jedna mala promjena izaziva potpuno drugačiji rezultat.
Kada se prijavljujete na račun, aplikacija ne uspoređuje vašu utipkanu lozinku s onim što se nalazi u bazi podataka. Umjesto toga, sustav ponovno provodi proces heširanja nad onim što ste upravo upisali. Ako se taj novi rezultat podudara s onim koji je već spremljen u bazi, program zaključuje da ste unijeli točnu lozinku i dopušta vam pristup, bez da je ikada zapravo “vidio” u svom izvornom obliku.
Dodatni slojevi sigurnosti: Zašto je potrebno “soljenje” lozinki?
Iako je heširanje moćan alat, napadači su s vremenom razvili metode za njegovo zaobilaženje. Jedna od najčešćih metoda su takozvane “tablice lukavih vrijednosti” (rainbow tables). To su ogromne baze podataka u kojima su unaprijed izračunati heševi za milijune najčešćih lozinki (poput “123456” ili “lozinka123”). Ako haker provalio u bazu i pronađe heš koji se podudara s onim iz tablice, odmah zna koja je originalna lozinka.
Kako bi se spriječio ovaj napad, koristi se metoda soljenja (salting). Soljenje zapravo znači dodavanje nasumičnog niza znakova (soli) k lozinki korisnika prije nego što se ona hešira. Proces tada izgleda ovako:
- Korisnik unese lozinku: npr. “Tajna123”
- Sustav generira nasumičnu sol: npr. “xYz789”
- Sustav spaja lozinku i sol: “Tajna123xYz789”
- Konačni rezultat:




