0Pricing
Cryptology Academy · Lekcja

Argon2: haszowanie haseł wymagające dużej ilości pamięci

Poznać Argon2i, Argon2d i Argon2id oraz zrozumieć znaczenie wysokiego zapotrzebowania na pamięć

Argon2: haszowanie haseł wymagające dużej ilości pamięci to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Argon2 zwyciężył w Password Hashing Competition (PHC) w 2015 roku i jest głównym zaleceniem OWASP. Jego konstrukcja wymagająca dużej ilości pamięci uniemożliwia ataki z użyciem GPU i ASIC, przed którymi bcrypt nie chroni.

Znaczenie dużego zapotrzebowania na pamięć

Procesory GPU mają tysiące rdzeni, ale niewielką ilość pamięci RAM przypadającą na jeden rdzeń (~1 KB). Argon2 wymaga co najmniej 64 MB pamięci RAM na jeden hash. Atakujący próbujący obliczać 1000 hashy równolegle potrzebuje 64 GB pamięci RAM — to kosztowne i ograniczone zasoby.

Warianty Argon2

Argon2d: dostęp zależny od danych — najszybszy, ale podatny na czasowe ataki bocznokanałowe. Argon2i: dostęp niezależny od danych — bezpieczny przed atakami czasowymi. Argon2id: wariant hybrydowy — zalecany w większości aplikacji.

Parametry Argon2

m: pamięć w kilobajtach (OWASP: minimum 19456 KB = 19 MB, zalecane 64 MB) t: koszt czasowy / liczba iteracji (zalecane 3) p: równoległość / liczba wątków (zalecane 4) salt: 16 losowych bajtów output: 32 bajty

Argon2id w Pythonie

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

Format hasha Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... Wszystkie parametry są przechowywane w ciągu hasha. Weryfikacja jest samowystarczalna — nie trzeba przechowywać parametrów oddzielnie.

Zalecenia OWASP dotyczące Argon2id z 2024 roku

Minimum: m=19456 KB (19 MB), t=2, p=1 Zalecane: m=65536 KB (64 MB), t=3, p=4 Wysoki poziom bezpieczeństwa: m=262144 KB (256 MB), t=4, p=8 Dostosuj wartości do ilości pamięci dostępnej na serwerze.

Argon2 a bcrypt i PBKDF2

Argon2id: wymaga dużej ilości pamięci, jest odporny na ASIC i zalecany w nowych systemach. bcrypt: szeroko obsługiwany, nie wymaga dużej ilości pamięci, zapewnia dobrą zgodność ze starszymi systemami. PBKDF2: zgodny z FIPS, nie wymaga dużej ilości pamięci, używaj go w środowiskach podlegających regulacjom.

Strategia aktualizacji hashy

Podczas przechodzenia z bcrypt na Argon2: 1. Dodaj nową kolumnę na nowy hash 2. Przy następnym logowaniu: zweryfikuj hasło za pomocą starego bcrypt, ponownie oblicz hash za pomocą Argon2 i zapisz nowy hash 3. Po X miesiącach wymuś reset hasła u użytkowników, których hash nie został jeszcze zaktualizowany

Argon2 w rzeczywistych frameworkach

Django: ustaw PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: użyj pakietu argon2 (nie argon2-ffi) PHP 7.2+: wbudowana stała PASSWORD_ARGON2ID w funkcji password_hash()

Pepper: sekret po stronie serwera

Pepper to sekret po stronie serwera, mieszany z hasłem przed obliczeniem hasha: hash(password + pepper). Nawet jeśli baza danych wycieknie, atakujący będzie potrzebować również peppera. Zmiana peppera unieważnia wszystkie hashe.

Szybkie sprawdzenie

Dlaczego Argon2 jest bardziej odporny na ataki z użyciem GPU niż bcrypt?

Podsumowanie

Argon2id jest obecnie najlepszym narzędziem do haszowania haseł. Następnie porównamy wszystkie trzy algorytmy i nauczymy się wybierać właściwy z nich w zależności od kontekstu.

Często zadawane pytania

Czy lekcja „Argon2: haszowanie haseł wymagające dużej ilości pamięci” jest bezpłatna?

Tak — pełny tekst „Argon2: haszowanie haseł wymagające dużej ilości pamięci” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Argon2: haszowanie haseł wymagające dużej ilości pamięci”?

Poznać Argon2i, Argon2d i Argon2id oraz zrozumieć znaczenie wysokiego zapotrzebowania na pamięć Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Argon2: haszowanie haseł wymagające dużej ilości pamięci”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego zwykły SHA-256 nie sprawdza się w przypadku haseł
  2. bcrypt: algorytm i współczynnik kosztu
  3. Argon2: haszowanie haseł wymagające dużej ilości pamięci
  4. PBKDF2 i wybór właściwego algorytmu
← Powrót do Cryptology Academy