U svetu sajber bezbednosti, čuvanje lozinki korisnika je jedan od najkritičnijih zadataka. Decenijama smo se oslanjali na algoritme poput MD5 i SHA-1 (koji su danas potpuno nesigurni), a zatim na bcrypt i scrypt. Međutim, 2015. godine, nakon trogodišnjeg takmičenja (Password Hashing Competition), Argon2 je proglašen pobednikom i od tada suvereno vlada kao preporučeni algoritam, posebno u svojoj hibridnoj varijanti – Argon2id.

1. Šta je zapravo Argon2id?

Argon2 je “memory-hard” funkcija za izvođenje ključa (Key Derivation Function – KDF). Postoje tri glavne varijante ovog algoritma, a svaka ima specifičnu namenu:

Argon2d (Data-dependent): Optimizovan je da pruži maksimalnu otpornost na napade putem GPU (grafičkih procesora). Međutim, podložan je napadima putem bočnih kanala (side-channel attacks), gde napadač može analizirati vreme pristupa memoriji kako bi otkrio informacije o lozinki.

Argon2i (Independent): Dizajniran je da bude otporan na napade bočnim kanalima. On pristupa memoriji redosledom koji ne zavisi od ulaznih podataka (passworda), ali je zbog toga nešto lakša meta za masovne napade pomoću specijalizovanog hardvera (GPU/ASIC).

Argon2id (Hibrid): Ovo je varijanta koju OWASP i kriptografi preporučuju. On kombinuje najbolje od oba sveta: prvi deo procesa se ponaša kao Argon2i (otpornost na bočne kanale), dok se ostatak ponaša kao Argon2d (otpornost na GPU napade).

2. Zašto nam je potreban “Memory-Hard” algoritam?

Da bismo razumeli važnost Argon2id, moramo razumeti kako napadači razmišljaju.

U prošlosti, napadi su se oslanjali na procesorsku snagu (CPU). Međutim, moderni napadači koriste GPU (koji mogu vršiti hiljade kalkulacija istovremeno) ili ASIC čipove (namenski pravljen hardver samo za jednu svrhu, npr. probijanje heševa).

Algoritmi kao što je SHA-256 su izuzetno brzi. Na modernom hardveru, napadač može generisati milijarde SHA-256 heševa u sekundi. To znači da čak i kompleksna lozinka može biti “probijena” metodom grubog napada (brute-force) u razumnom vremenu.

Argon2id rešava ovaj problem memorijskom zahtevnošću. On primorava računar da koristi određenu količinu RAM memorije za svako heširanje. Pošto je RAM memorija “skupa” i spora za masovnu paralelizaciju na GPU-u, napadač ne može jednostavno dodati još procesora – on mora imati i ogromne količine brze memorije, što napad čini ekonomski neisplativim i fizički sporim.

3. Ključni parametri Argon2id

Jedna od najvećih prednosti Argon2id je njegova fleksibilnost. On dozvoljava developerima da precizno podese nivo bezbednosti prema svom hardveru. Postoje tri glavna parametra:

A. Memory Cost (m) – Memorijska cena

Ovaj parametar definiše koliko će kilobajta (KB) RAM-a proces koristiti. Što je ovaj broj veći, to je teže napadaču da koristi GPU ili ASIC hardver. OWASP preporučuje minimum od 12 MB do 64 MB, zavisno od broja iteracija.

B. Time Cost (t) – Vremenska cena (Iteracije)

Određuje koliko će se puta algoritam izvršiti nad podacima. Veći broj iteracija povećava vreme potrebno za heširanje, što direktno usporava “brute-force” napade.

C. Parallelism (p) – Paralelizam

Definiše koliko niti (threads) procesora će se koristiti istovremeno. Ovo omogućava da iskoristite prednosti višejezgarnih procesora kako biste brže izračunali heš na strani servera, a da pritom ne smanjujete bezbednost.

4. OWASP Preporuke (2024/2025)

OWASP (Open Worldwide Application Security Project) u svom “Password Storage Cheat Sheet-u” jasno favorizuje Argon2id. Njihove preporuke za konfiguraciju su pažljivo balansirane kako bi osigurale da heširanje traje oko 0.5 do 1 sekunde na serveru – što je neprimetno za korisnika koji se loguje jednom, ali katastrofalno sporo za hakera koji želi da testira milione kombinacija.

Preporučene vrednosti prema OWASP-u:

Ako imate dovoljno memorije: m=64 MiB, t=3, p=4

Ako ste ograničeni memorijom: m=12 MiB, t=3, p=1

5. Poređenje sa drugim algoritmima

Bcrypt: I dalje veoma popularan i siguran za većinu aplikacija. Međutim, on je limitiran na maksimalno 72 karaktera (sve preko toga se ignoriše) i nije otporan na moderne GPU napade u istoj meri kao Argon2id jer ne troši značajnu količinu memorije.

Scrypt: Bio je prvi popularni memorijski-zahtevan algoritam. Ipak, Argon2id je efikasniji u korišćenju memorije i nudi bolju zaštitu od specifičnih vrsta hardverskih napada.

PBKDF2: Najstariji od preporučenih. Preporučuje se samo ako radite na sistemima gde je neophodna FIPS usklađenost ili gde noviji algoritmi nisu dostupni. Zahteva ogroman broj iteracija (preko 600,000 za HMAC-SHA256) da bi bio iole siguran.

6. Implementacija u praksi

Danas skoro svaki moderan programski jezik ima biblioteku za Argon2id.

PHP: Od verzije 7.3, Argon2id je ugrađen u password_hash() funkciju.

Python: Koristi se biblioteka argon2-cffi.

Node.js: Postoji popularni paket argon2.

Go: Dostupan u okviru x/crypto/argon2 paketa.

Prilikom implementacije, važno je da se Salt (nasumični niz podataka) generiše pomoću kriptografski sigurnog generatora slučajnih brojeva (CSPRNG) i da bude jedinstven za svakog korisnika.

7. Zaključak

U svetu gde procesorska snaga raste iz dana u dan, statični načini zaštite više nisu dovoljni. Argon2id predstavlja trenutni vrhunac evolucije zaštite lozinki. On nije samo “još jedan algoritam”, već pametno dizajniran sistem koji se adaptira hardveru i direktno cilja na ekonomske i tehničke slabosti napadača.

Ako razvijate novu aplikaciju danas, nema razloga da koristite bilo šta drugo. Prateći OWASP smernice i koristeći Argon2id, pružate svojim korisnicima najbolju moguću zaštitu koju savremena kriptografija može da ponudi.

Avatar photo

By Admin

Leave a Reply