Skip to main content
CheckTown
Narzędzia dev

bcrypt: Jak działa haszowanie hasel

Opublikowano 7 min czytania
W tym artykule

Czym jest bcrypt?

bcrypt to adaptacyjna funkcja haszowania hasel zaprojektowana w 1999 roku. Oparta na szyfrze Blowfish, bcrypt zawiera sol do ochrony przed atakami tablicami teczowymi i konfigurowalny faktor kosztu kontrolujacy złożoność obliczeniowa hasha.

W przeciwieństwie do szybkich funkcji haszujacych jak MD5 lub SHA-256, bcrypt jest zaprojektowany specjalnie do przechowywania hasel. Jego adaptacyjna natura pozwala zwiekszac faktor kosztu z uplywem czasu.

Jak działa bcrypt

Hash bcrypt zawiera wszystkie informacje potrzebne do weryfikacji hasła w jednym lancuchu.

  • $2b$ — identyfikator algorytmu bcrypt wersji 2b
  • 10$ — faktor kosztu (2^10 = 1024 rundy)
  • 22 znaki soli zakodowanej w Base64 (128 bitow losowości)
  • 31 znakow wyjścia hasha zakodowanego w Base64

Wypróbuj za darmo — bez rejestracji

Wygeneruj hash bcrypt →

Wybor odpowiedniego faktora kosztu

Faktor kosztu określa ile iteracji bcrypt wykonuje wewnętrznie. Każde zwiększenie podwaja czas obliczen.

Celem jest uczynienie haszowania wystarczająco wolnym, by zniechecic ataki brute-force, ale wystarczająco szybkim dla wygody użytkownika.

  • Koszt 10 — haszowanie w ~100ms; dobra podstawa dla większości aplikacji webowych
  • Koszt 12 — haszowanie w ~300-400ms; zalecane dla wysokiego bezpieczeństwa
  • Koszt 14+ — haszowanie w 1 sekunde lub więcej; zazwyczaj zbyt wolne na interaktywne logowanie

bcrypt vs inne algorytmy haszowania

Nie wszystkie algorytmy haszujace nadaja sie do przechowywania hasel.

  • MD5/SHA-256 — zaprojektowane pod kątem szybkości; nigdy nie używaj do hasel
  • bcrypt — obciazajacy CPU, sprawdzony od 1999 roku; domyślne zalecenie
  • Argon2 — zwyciezca Password Hashing Competition 2015; odporny na pamięć; zalecany dla nowych projektow

Typowe zastosowania

bcrypt jest używany wszędzie, gdzie hasła musza byc bezpiecznie przechowywane.

  • Rejestracja użytkownika — zahaszuj hasło bcrypt przed zapisaniem w bazie danych
  • Weryfikacja logowania — zahaszuj przesłane hasło i porownaj z zapisanym hashem
  • Migracja hasel — przy aktualizacji z MD5/SHA na bcrypt, rehaszuj hasła przy nastepnym udanym logowaniu

Często zadawane pytania

Czy moge zmienic faktor kosztu bez resetowania hasel?

Tak. Przy każdym udanym logowaniu sprawdź, czy zapisany hash używa starego faktora kosztu. Jeśli tak, rehaszuj hasło z nowym faktorem. To sie nazywa rehaszowanie oportunistyczne.

Jak zweryfikowac hasło wobec hasha bcrypt?

Łańcuch hasha bcrypt zawiera wersje, faktor kosztu i sol. Funkcja weryfikacji wyodrębnia je, haszuje hasło kandydujace z tymi samymi parametrami i porownuje w czasie stałym.

Czy powinienem używać bcrypt czy Argon2?

Oba sa doskonalymi wyborami. bcrypt jest sprawdzony od ponad 25 lat. Argon2 jest nowszy i odporny na pamięć. Dla nowych projektow zaleca sie Argon2id. bcrypt pozostaje bezpieczny z faktorem kosztu 10 lub wyzszym.

Powiązane narzędzia