Haszowanie haseł: bcrypt, Argon2, PBKDF2
Poznać zagrożenia związane z przechowywaniem haseł w postaci jawnej oraz dowiedzieć się, jak haszowanie z solą chroni hasła
Haszowanie haseł: bcrypt, Argon2, PBKDF2 to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 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 Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Dlaczego nie przechowywać haseł w postaci jawnego tekstu
Przechowywanie haseł w jawnym tekście ma katastrofalne skutki — pojedynczy wyciek bazy danych ujawnia wszystkie konta. Przed zapisaniem hasła należy przetworzyć za pomocą funkcji jednokierunkowej, aby nawet dostęp do bazy danych nie ujawnił oryginalnego hasła.
Czym jest haszowanie
Funkcja skrótu przekształca dane wejściowe o dowolnej długości w wynik o stałej długości. Te same dane wejściowe zawsze dają ten sam wynik, ale nie można odzyskać oryginału na podstawie skrótu. Przykłady: SHA-256, bcrypt, Argon2.
Dlaczego nie używać SHA-256 do haseł
Ogólnego przeznaczenia funkcje skrótu, takie jak SHA-256, zaprojektowano tak, aby były szybkie. Atakujący może obliczać miliardy skrótów SHA-256 na sekundę za pomocą GPU, co czyni łamanie metodą brute force wykonalnym.
Haszowanie haseł wymaga funkcji wolnych i kosztownych obliczeniowo.
Solenie
Sól to losowa wartość dodawana do każdego hasła przed haszowaniem. Gwarantuje, że dwóch użytkowników z tym samym hasłem będzie miało różne skróty, zapobiegając atakom z użyciem tablic tęczowych i atakom wsadowym. Sól jest przechowywana razem ze skrótem (nie jest tajna).
# Conceptual salt example
hash = bcrypt("password" + random_salt)bcrypt
bcrypt zaprojektowano w 1999 roku specjalnie do haszowania haseł. Ma konfigurowalny współczynnik kosztu, który określa, jak wolne jest haszowanie. Wraz ze wzrostem wydajności sprzętu należy zwiększać współczynnik kosztu, aby utrzymać poziom bezpieczeństwa.
Współczynnik kosztu 12 jest dziś powszechny — haszowanie na nowoczesnym procesorze zajmuje około 250 ms.
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) wielokrotnie stosuje funkcję skrótu (np. HMAC-SHA256) (iteracje). Więcej iteracji = wolniej = bezpieczniej. Zalecany przez NIST i używany przez WPA2 do haseł Wi-Fi.
Argon2
Argon2 wygrał konkurs Password Hashing Competition w 2015 roku. Jest współczesnym standardem. Można go konfigurować za pomocą:
- koszt czasowy — liczba iteracji
- koszt pamięci — wymagana pamięć RAM (ogranicza przyspieszanie za pomocą GPU)
- równoległość — liczba wątków
W większości aplikacji należy używać Argon2id.
Tablice tęczowe
Tablica tęczowa to wstępnie obliczone zestawienie skrótów i tekstów jawnych. Bez solenia atakujący mający skrót może natychmiast znaleźć go w tabeli. Solenie sprawia, że tablice tęczowe stają się bezużyteczne, ponieważ każdy skrót jest unikatowy.
Techniki łamania haseł
Typowe metody łamania haseł offline:
- atak słownikowy — próbowanie popularnych haseł i ich wariantów
- brute force — próbowanie wszystkich kombinacji znaków
- metoda regułowa — stosowanie reguł modyfikacji do słownika (dodawanie roku na końcu, zamiana pierwszej litery na wielką, leet speak)
- Narzędzia: Hashcat, John the Ripper
Wybór właściwego algorytmu
Kolejność preferencji dla nowych aplikacji:
- Argon2id — najlepsza odporność na łamanie za pomocą GPU/ASIC
- bcrypt — szerokie wsparcie, sprawdzona historia zastosowań
- PBKDF2 — zatwierdzony przez NIST, wymagany w niektórych kontekstach zgodności
Nigdy nie używać: MD5, SHA-1 ani niesolonego SHA-256 do haseł.
Proces weryfikacji
Gdy użytkownik się loguje:
- Należy pobrać przechowywany hash i sól użytkownika
- Należy zahaszować przesłane hasło przy użyciu tej samej soli i algorytmu
- Należy porównać wynikowy hash z przechowywanym hashem (porównanie w czasie stałym)
- Nigdy nie należy odszyfrowywać — służy to wyłącznie do porównania
Szybki test: haszowanie haseł
Jaki algorytm haszowania haseł jest obecnie uznawany za najlepszą praktykę i zwyciężył w konkursie Password Hashing Competition?
Podsumowanie lekcji
Hasła należy przechowywać w postaci hashy, a nie tekstu jawnego. Szybkie algorytmy, takie jak SHA-256, się do tego nie nadają — należy używać wolnych funkcji haszujących hasła: Argon2id (preferowany), bcrypt lub PBKDF2. Zawsze należy używać losowej soli dla każdego hasła, aby zapobiegać atakom z użyciem tęczowych tablic. Nigdy nie należy implementować własnej kryptografii — należy korzystać ze sprawdzonych bibliotek.
Często zadawane pytania
Czy lekcja „Haszowanie haseł: bcrypt, Argon2, PBKDF2” jest bezpłatna?
Tak — pełny tekst „Haszowanie haseł: bcrypt, Argon2, PBKDF2” 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 Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Haszowanie haseł: bcrypt, Argon2, PBKDF2”?
Poznać zagrożenia związane z przechowywaniem haseł w postaci jawnej oraz dowiedzieć się, jak haszowanie z solą chroni hasła Ćwiczysz Cyber Security 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ąć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security 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 2 z 4.
Ile czasu zajmuje lekcja „Haszowanie haseł: bcrypt, Argon2, PBKDF2”?
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 Cyber Security Academy?
Tak. Każda lekcja Cyber Security 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
- Siła haseł i zasady ich tworzenia
- Haszowanie haseł: bcrypt, Argon2, PBKDF2
- Uwierzytelnianie wieloskładnikowe
- Credential stuffing i password spraying