Wszystkie artykuły

Argon2: dlaczego ten algorytm wygrał konkurs na haszowanie haseł

Polska ma jedną z najbardziej aktywnych społeczności OWASP w Europie Środkowej, a RODO wymaga od administratorów danych stosowania odpowiednich środków technicznych bez wskazywania konkretnego algorytmu — decyzja techniczna zawsze spada na zespół inżynierski. Odkąd Argon2 wygrał Password Hashing Competition w 2015 roku, stał się naturalnym wyborem rekomendowanym przez OWASP przed bcrypt, a polskie domy software'owe (licznie obsługujące klientów zagranicznych) coraz częściej traktują go jako domyślny standard w nowych projektach.

Dlaczego pamięć liczy się tyle co czas

Bcrypt i PBKDF2 jedynie spowalniają obliczenia. Argon2 dodatkowo zmusza każdą próbę do zarezerwowania konfigurowalnej ilości RAM — to tzw. funkcja memory-hard. Wynajęta w chmurze farma GPU tanio zrównolegla proste obliczenia, ale zrównoleglenie jednoczesnego dostępu do dużej ilości pamięci jest znacznie droższe: pamięć, w przeciwieństwie do rdzeni obliczeniowych, jest fizycznie ograniczona na każdej karcie.

Trzy warianty: d, i, id

  • Argon2d — dostęp do pamięci zależy od samego hasła, co daje maksymalną odporność na GPU, ale teoretycznie otwiera furtkę na ataki bocznokanałowe.
  • Argon2i — dostęp do pamięci jest niezależny od hasła, co zamyka tę lukę kosztem nieco mniejszej odporności na GPU.
  • Argon2id — łączy obie strategie na różnych etapach obliczeń. To wariant rekomendowany przez RFC 9106 i domyślny w większości frameworków.

Trzy niezależne parametry

W przeciwieństwie do pojedynczego "cost factor" bcrypta, Argon2 pozwala osobno regulować pamięć, liczbę iteracji i poziom równoległości. To praktyczne: funkcja serverless z ograniczoną pamięcią może zrekompensować to zwiększeniem liczby iteracji, a dedykowany serwer uwierzytelniania z nadmiarem RAM może zrobić odwrotnie.

Do czego to się przydaje

  • Wybór nowoczesnego algorytmu dla nowego systemu uwierzytelniania zamiast MD5 czy zwykłego SHA-256.
  • Zrozumienie, dlaczego Argon2 szczególnie podnosi koszt ataków z użyciem wynajętego GPU lub sprzętu do kopania kryptowalut.
  • Planowanie migracji z bcrypt lub PBKDF2 w ramach audytu bezpieczeństwa.

Pułapka parametru równoległości

Równoległość wygląda jak darmowy zysk — więcej wątków, szybsze haszowanie na wielordzeniowym serwerze. Ale atakujący z tym samym wielordzeniowym sprzętem uzyskuje identyczne przyspieszenie przy każdej próbie. Ustawienie równoległości zgodnie z rzeczywistą liczbą rdzeni serwera jest bezpieczne; podnoszenie jej „na zapas" daje atakującemu jedynie proporcjonalny rabat.

Wypróbuj narzędzie