Skip to main content
CheckTown
Dev Tools

bcrypt: Jak dziala 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 zlozonosc obliczeniowa hasha.

W przeciwienstwie 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 dziala bcrypt

Hash bcrypt zawiera wszystkie informacje potrzebne do weryfikacji hasla w jednym lancuchu.

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

Wypróbuj za darmo — bez rejestracji

Wygeneruj hash bcrypt →

Wybor odpowiedniego faktora kosztu

Faktor kosztu okresla ile iteracji bcrypt wykonuje wewnetrznie. Kazde zwiekszenie podwaja czas obliczen.

Celem jest uczynienie haszowania wystarczajaco wolnym, by zniechecic ataki brute-force, ale wystarczajaco szybkim dla wygody uzytkownika.

  • Koszt 10 — haszowanie w ~100ms; dobra podstawa dla wiekszosci aplikacji webowych
  • Koszt 12 — haszowanie w ~300-400ms; zalecane dla wysokiego bezpieczenstwa
  • Koszt 14+ — haszowanie w 1 sekunde lub wiecej; 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 katem szybkosci; nigdy nie uzywaj do hasel
  • bcrypt — obciazajacy CPU, sprawdzony od 1999 roku; domyslne zalecenie
  • Argon2 — zwyciezca Password Hashing Competition 2015; odporny na pamiec; zalecany dla nowych projektow

Typowe zastosowania

bcrypt jest uzywany wszedzie, gdzie hasla musza byc bezpiecznie przechowywane.

  • Rejestracja uzytkownika — zahaszuj haslo bcrypt przed zapisaniem w bazie danych
  • Weryfikacja logowania — zahaszuj przeslane haslo i porownaj z zapisanym hashem
  • Migracja hasel — przy aktualizacji z MD5/SHA na bcrypt, rehaszuj hasla przy nastepnym udanym logowaniu

Czesto zadawane pytania

Czy moge zmienic faktor kosztu bez resetowania hasel?

Tak. Przy kazdym udanym logowaniu sprawdz, czy zapisany hash uzywa starego faktora kosztu. Jesli tak, rehaszuj haslo z nowym faktorem. To sie nazywa rehaszowanie oportunistyczne.

Jak zweryfikowac haslo wobec hasha bcrypt?

Lancuch hasha bcrypt zawiera wersje, faktor kosztu i sol. Funkcja weryfikacji wyodrebnia je, haszuje haslo kandydujace z tymi samymi parametrami i porownuje w czasie stalym.

Czy powinienem uzywac bcrypt czy Argon2?

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

Powiązane narzędzia