Sažimanje lozinki temeljni je aspekt osiguranja lozinki, koji je transformirao pohranu lozinki s običnog teksta na enkriptirane hash vrijednosti. Ovaj članak istražuje evoluciju sažimanja lozinki, od ranih algoritama poput MD5 i SHA-1 do sigurnijih metoda koje se danas preporučuju, zaključujući važnosti korištenja nasumičnih lozinki za svaku internetsku stranicu.
Prije nego što dublje uđemo u povijest i razvoj sažimanja lozinki, važno je razumjeti što je sažimanje. Hash funkcije, metode koje vrše sažimanje, dizajnirane su da uzmu bilo koji niz podataka, odnosno "ulaz", i proizvedu niz bajtova fiksne veličine, koji se obično naziva "hash". Ovaj proces ima nekoliko ključnih karakteristika zbog kojih je posebno koristan za sigurnosne svrhe.
Jedna od ključnih značajki hash funkcija je njihova osjetljivost na promjene ulaza. Ovo je poznato kao efekt lavine. I najmanja promjena u ulazu—poput promjene jednog znaka u lozinki—proizvest će potpuno drugačiji hash. Na primjer, hash vrijednosti za nizove "password1" i "password2" izgledat će potpuno različito, iako je jedina razlika među njima posljednji znak. Ova je karakteristika ključna za održavanje integriteta podataka, jer gotovo onemogućuje zaključivanje originalnog ulaza samo na temelju hash vrijednosti.
Nadalje, hash funkcije su jednosmjerne funkcije. To znači da su dizajnirane tako da ih je računalno nemoguće obrnutim putem rekonstruirati. Izlaz (hash) ne sadrži detalje o ulazu koji bi nekome omogućili ponovnu izgradnju originalnih podataka bez izuzetno velikog računalnog napora. Jedini izvediv način "obrnute" analize hash vrijednosti je metoda tzv. brute-forcinga, gdje se sve moguće kombinacije originalnih podataka ponovno sažimaju dok se ne pronađe podudaranje.
U ranim danima digitalne sigurnosti, MD5 (Message-Digest Algorithm 5) i SHA-1 (Secure Hash Algorithm 1) bili su naširoko korišteni za sažimanje lozinki. Razvijeni početkom '90-ih, ovi su algoritmi pretvarali lozinke u običnom tekstu u hash vrijednosti fiksne veličine. Unatoč početnoj sigurnosti, ranjivosti poput podložnosti napadima sudara ubrzo su ih učinile neprikladnima za sigurnu uporabu.
Dok su hash funkcije dizajnirane da budu brze i učinkovite, ta ih karakteristika čini nepoželjnima za sigurnost lozinki jer olakšava brute-force napade. Funkcije za dobivanje ključa na temelju lozinke (Password-Based Key Derivation Functions – PBKDF), poput PBKDF2, bcrypt i scrypt, kreirane su kako bi se obranile od takvih napada uvođenjem sola (radi obrane od rainbow table napada) i metodom nazvanom istezanje ključa (key stretching). Istezanje ključa namjerno usporava proces sažimanja, što uvelike otežava neovlašteni pristup.
Kako je kibernetička sigurnost napredovala, nedostaci ranih algoritama poput MD5 i SHA-1 postali su očiti, što je dovelo do razvoja algoritama posebno dizajniranih za sigurnost lozinki, poput bcrypta, scrypta i Argon2, odnosno takozvanih Funkcija za dobivanje ključa na osnovi lozinke (PBKDF).
Prema OWASP-u, preporučeni algoritmi za sažimanje lozinki su bcrypt, scrypt i Argon2. Ovi su algoritmi preferirani zbog snažne zaštite od brute-force napada i ugrađenih mehanizama za upotrebu sola i istezanja ključa.
bcrypt je funkcija za sažimanje lozinki izvedena iz Blowfish šifre. Uključuje sol radi zaštite od rainbow table napada i koristi tzv. parametar troška (cost factor) kojom se povećava vrijeme izračuna (i time otežava generiranje hash vrijednosti). Ovaj je parametar podesiv, što omogućuje prilagodbu algoritma hardverskom napretku.
Ključni parametri:
OWASP preporučuje koristiti radni faktor (work factor) 10 ili više s ograničenjem lozinke od 72 bajta.
scrypt je dizajniran da bude zahtjevan po pitanju memorije i vremena kako bi odolijevao velikim prilagođenim hardverskim napadima. Može se konfigurirati za određenu količinu memorije, uključuje sol i broj iteracija, slično kao PBKDF2.
Ključni parametri:
OWASP preporučuje koristiti najmanji CPU/memorijski trošak od (2^17), minimalnu veličinu bloka od 8 (1024 bajta) i parametar paralelizacije 1.
Argon2, pobjednik Password Hashing Competition natjecanja 2015. godine, dolazi u dvije inačice: Argon2d i Argon2i. Argon2d je optimiziran za okruženja gdje je prijetnja od side-channel napada mala, dok je Argon2i optimiziran za otpornost na strane napade (side-channel attacks). Također uključuje ključne značajke iz bcrypta i scrypta.
Ključni parametri:
OWASP preporučuje koristiti Argon2id s minimalnom konfiguracijom od 19 MiB memorije, brojem ponavljanja 2 i 1 stupnjem paralelizma.
S obzirom na stalni razvoj sigurnosnih prijetnji i protumjera, ključno je biti u toku s najnovijim praksama u sigurnosti lozinki. Za ažurirane i potpune preporuke, pogledajte OWASP Password Storage Cheat Sheet na službenoj OWASP stranici. Redovito provjeravajte ove smjernice kako biste bili u skladu s najboljim praksama iz kibernetičke sigurnosti.
Iako je korištenje modernih algoritama za sažimanje nužno, način na koji se lozinke kreiraju i upravljaju njima također igra ključnu ulogu u održavanju sigurnosti. Nasumične lozinke za svaku internetsku stranicu su neophodne zbog nekoliko razloga:
Od MD5 i SHA-1 do modernih algoritama poput bcrypta i Argon2, sažimanje lozinki prošlo je značajnu transformaciju. Kako se kibernetičke prijetnje nastavljaju razvijati, usvajanje modernih algoritama i korištenje nasumičnih, jedinstvenih lozinki za svaku web-stranicu ključne su prakse za zaštitu sigurnosti na internetu. Ove strategije ne samo da sprječavaju kompromitiranje pojedinačnih računa, nego i jačaju ukupnu sigurnost protiv sve sofisticiranijih napada.