Co to "cost factor" bcrypta i czemu to ważne?
bcrypt jest standardem branżowym od ponad 20 lat. Każdy logowanie w Twojej aplikacji to hash hasła i porównanie z bazą. Im wolniej liczy się hash, tym trudniej atakującemu zgadnąć hasło próbując milionów kombinacji. Stąd "cost factor": parametr, który wykładniczo zwiększa czas obliczeń.
Cost 10 = ~10ms na hash (szybki sprzęt, szybki login dla użytkownika). Cost 12 = ~40ms. Cost 14 = ~160ms. Cost 16 = >0.5s (login zauważalnie wolny). Trade-off: za niski cost = łatwiejszy brute force. Za wysoki = nieprzyjemny UX i większe koszty serwera.
OWASP zaleca w 2025: celuj w 250-500 ms na hash na Twoim sprzęcie produkcyjnym. Tu uruchomisz benchmark na swojej maszynie, zobaczysz cost który trafia w to okno.
Wszystko liczone lokalnie. Twoje hasło testowe nigdy nie wychodzi z przeglądarki.
Jak korzystać
- Klikasz Uruchom benchmark. Tool zahashuje próbne hasło dla cost factor 4, 6, 8, 10, 12, 14 (po 3 razy każdy).
- Po chwili widzisz wykres: oś Y to czas w ms, każdy słupek to inny cost. Słupki rosną wykładniczo (każdy cost = 2x dłużej niż poprzedni).
- Rekomendacja: największy cost, który mieści się w przedziale 250-500 ms (zielony słupek). Wpisz tę liczbę do konfiguracji aplikacji.
- Pod spodem Quick-test: wpisz prawdziwe hasło, wybierz cost, zobacz dokładny czas na Twoim urządzeniu plus wygenerowany hash bcrypt.
- Pamiętaj: cost na laptopie ≠ cost na serwerze produkcyjnym. Uruchom benchmark na tym samym sprzęcie, na którym będzie działać Twoja aplikacja.
Do czego się przydaje
Pięć typowych sytuacji, w których analizator cost factor pomaga:
- Wybór cost dla nowej aplikacji. Hashujesz hasła użytkowników po raz pierwszy, musisz wybrać cost. Benchmark mówi: na Twoim VPS Cost 12 to 280 ms, idealnie.
- Migracja do silniejszego cost. Aplikacja od 3 lat używa cost 10, czas zwiększyć. Benchmark pokazuje, że cost 13 to teraz tylko 200 ms na nowych serwerach.
- Diagnoza wolnego logowania. Użytkownicy narzekają na 2-sekundowy login. Benchmark: aha, cost 16, za wysoki dla tej maszyny.
- Porównanie sprzętu. Stary serwer vs nowa instancja AWS, ile cost możesz "zafundować"?
- Edukacja dla zespołu. Pokażesz juniorowi, jak działa cost factor, dlaczego MD5 nie wystarcza.
Aby wygenerować inne hashe (SHA-256, MD5, Argon2), użyj generatora hashy. Aby sprawdzić, czy hasło wyciekło, użyj pwned passwords.