0Pricing
Cryptology Academy · Lekcja

bcrypt: algorytm i współczynnik kosztu

Poznać mechanizmy bcrypt, współczynnik pracy i prawidłowe dostrajanie kosztu

bcrypt: algorytm i współczynnik kosztu to bezpłatna lekcja Cryptology 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 Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Wprowadzenie

bcrypt to algorytm haszowania haseł zaprojektowany w 1999 roku specjalnie z myślą o powolnym działaniu i odporności na ataki sprzętowe. Nadal jest najpowszechniej wdrażanym algorytmem haszowania haseł.

Początki bcrypt

Zaprojektowany przez Nielsa Provosa i Davida Mazières'a na podstawie szyfru Blowfish. Litera „b” oznacza Blowfish. Kluczowa koncepcja polega na wykorzystaniu kosztownej konfiguracji klucza Blowfish w celu celowego spowolnienia działania.

Format skrótu bcrypt

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhash $2b$: wersja algorytmu 12: współczynnik kosztu (log2 liczby iteracji) salt: 22 znaki base64 (16 bajtów) hash: 31 znaków base64 (24 bajty)

Współczynnik kosztu

Koszt 12 = 2^12 = 4096 iteracji. Koszt 13 = 8192 iteracji. Każde zwiększenie wartości podwaja czas obliczeń. Należy dostroić parametr tak, aby haszowanie trwało około 100–300 ms na używanym sprzęcie. Szybkość napastnika skaluje się w identyczny sposób.

bcrypt w Pythonie

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # generates random salt hashed = bcrypt.hashpw(password, salt) # Verify: bcrypt.checkpw(password, hashed) # True

Wbudowana sól

bcrypt zawsze automatycznie generuje i zapisuje sól. gensalt() tworzy kryptograficznie losową sól o długości 16 bajtów. Nie trzeba zarządzać solą osobno — jest osadzona w ciągu znaków skrótu.

Limit 72 znaków bcrypt

bcrypt obcina dane wejściowe do 72 bajtów. Hasła dłuższe niż 72 znaki są traktowane jako identyczne po pierwszych 72 bajtach. Obejście: najpierw obliczać skrót SHA-512, a dopiero potem używać bcrypt (należy jednak zweryfikować to podejście).

Przebieg weryfikacji hasła

Logowanie: 1. Użytkownik przesyła hasło 2. Pobierz zapisany hash z bazy danych 3. bcrypt.checkpw(submitted, stored_hash) 4. checkpw pobiera sól z zapisanego hasha i ponownie oblicza hash 5. Zwraca True/False Nigdy nie przechowuj hasła w postaci jawnej.

Wyniki testów wydajności

bcrypt, współczynnik kosztu 12: - Procesor konsumencki: ~150 ms na hash - GPU (RTX 4090): ~50 000 hashy/s (w porównaniu z 10 mld dla SHA-256) Przewaga atakującego zmniejsza się z miliarda do około 300 przy współczynniku kosztu bcrypt równym 12.

Zalecenia dotyczące współczynnika kosztu

OWASP 2024: współczynnik kosztu bcrypt ≥ 10. Zalecana wartość: 12. Sprawdzaj go co roku — wraz z rozwojem sprzętu zwiększaj współczynnik. Zaimplementuj ponowne haszowanie online: podczas logowania sprawdzaj hash i w razie potrzeby aktualizuj go.

Ograniczenia bcrypt

Słabość bcrypt: nie jest funkcją wymagającą dużej ilości pamięci. Atakujący mogą używać niestandardowych układów ASIC zoptymalizowanych pod kątem bcrypt. W nowych aplikacjach preferuj Argon2id, który wymaga dużej ilości pamięci i jest odporny na ASIC.

Szybkie sprawdzenie

Co oznacza współczynnik kosztu 12 w hashu bcrypt?

Podsumowanie

bcrypt to solidne rozwiązanie, ale nie wymaga dużej ilości pamięci. Następnie omówimy Argon2 — nowoczesnego lidera haszowania haseł z konfigurowalnymi wymaganiami dotyczącymi pamięci.

Często zadawane pytania

Czy lekcja „bcrypt: algorytm i współczynnik kosztu” jest bezpłatna?

Tak — pełny tekst „bcrypt: algorytm i współczynnik kosztu” 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 „bcrypt: algorytm i współczynnik kosztu”?

Poznać mechanizmy bcrypt, współczynnik pracy i prawidłowe dostrajanie kosztu Ć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 2 z 4.

Ile czasu zajmuje lekcja „bcrypt: algorytm i współczynnik kosztu”?

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