Czym jest PBKDF2?
PBKDF2 (Password-Based Key Derivation Function 2) to algorytm wyprowadzania kluczy zdefiniowany w RFC 8018, który iteracyjnie stosuje funkcję pseudolosową — zazwyczaj HMAC-SHA-256 — na haśle i salt, by wyprodukować wyprowadzony klucz obliczeniowo kosztowny do złamania brute-force.
Znane również jako: Password-Based Key Derivation Function 2, PBKDF, RFC 8018
PBKDF2 działa poprzez wielokrotne stosowanie kodu uwierzytelniania wiadomości opartego na haszu (HMAC) do kombinacji hasła i losowej wartości salt. Liczba iteracji steruje tym, ile razy ta operacja jest wykonywana — więcej iteracji oznacza więcej czasu procesora na próbę wyprowadzenia klucza, bezpośrednio zwiększając koszt dla atakującego próbującego odgadnąć hasło.
Salt to losowa wartość unikalna dla każdej operacji wyprowadzania kluczy. Zapobiega wstępnie obliczonym atakom przeglądowym (tęczowe tablice), gwarantując, że to samo hasło przy różnych wartościach salt daje różne wyprowadzone klucze. Salt nie musi być tajny — zazwyczaj jest przechowywany razem z wyprowadzonym kluczem lub szyfrogramem.
PBKDF2 został ustandardyzowany w 2000 roku i pozostaje szeroko obsługiwany, szczególnie w przeglądarkach przez Web Crypto API. Choć nowsze KDF jak Argon2 oferują silniejszą odporność na ataki GPU i ASIC dzięki wysokiemu zapotrzebowaniu na pamięć, PBKDF2 pozostaje solidnym wyborem dla aplikacji przeglądarkowych, gdzie kluczowa jest zgodność z Web Crypto API, a liczba iteracji może być ustawiona wystarczająco wysoko, by zapewnić odpowiedni poziom bezpieczeństwa.
Jak Vaulted używa PBKDF2
Vaulted używa PBKDF2 za pośrednictwem Web Crypto API, gdy do sekretu dodawana jest passphrase. Implementacja stosuje 100 000 iteracji z HMAC-SHA-256 i losowym 16-bajtowym salt. Wyprowadzony 256-bitowy klucz jest używany jako klucz opakowujący AES-KW do zaszyfrowania głównego klucza AES-256-GCM. Salt jest dołączany do fragmentu URL obok opakowanego klucza, dzięki czemu przeglądarka odbiorcy może ponownie wyprowadzić ten sam klucz opakowujący z passphrase.