Słownik

Czym jest Haszowanie haseł?

Haszowanie haseł to praktyka stosowania kosztownej obliczeniowo, jednokierunkowej funkcji kryptograficznej do hasła — w połączeniu z unikalną solą — w celu uzyskania skrótu o stałej długości, który może weryfikować hasło bez przechowywania go w odwracalnej postaci.

Znane również jako: password hash, password digest

Przechowywanie haseł w postaci jawnej jest jedną z najbardziej niebezpiecznych praktyk w tworzeniu oprogramowania. Gdy baza danych zostanie przejęta, hasła jawne można od razu użyć do przejęcia kont — nie tylko w atakowanej usłudze, ale w każdej innej, gdzie użytkownicy ponownie użyli tego samego hasła. Haszowanie haseł zastępuje jawne przechowywanie nieodwracalnymi skrótami, które mogą weryfikować próbę hasła, ale nie mogą być odwrócone w celu odzyskania oryginalnego hasła.

Nie każda funkcja skrótu nadaje się do haseł. Ogólne funkcje skrótu, takie jak SHA-256, są zbyt szybkie — nowoczesne układy GPU mogą obliczać miliardy skrótów SHA-256 na sekundę, co sprawia, że ataki brute-force są trywialne. Algorytmy haszowania haseł są celowo zaprojektowane jako wolne, wymagając znacznego czasu procesora, pamięci lub obu zasobów dla każdego obliczenia skrótu. Ta wolność jest konfigurowalna przez parametry, takie jak liczba iteracji (PBKDF2), współczynnik kosztu (bcrypt) lub ustawienia pamięci i równoległości (Argon2).

Ewolucja haszowania haseł odzwierciedla wyścig zbrojeń między obrońcami a atakującymi. PBKDF2 (2000) dodał konfigurowalną liczbę iteracji. bcrypt (1999) wprowadził stałe wymaganie pamięci, które opiera się akceleracji GPU. scrypt (2009) dodał konfigurowalną twardość pamięci. Argon2 (2015), zwycięzca Password Hashing Competition, oferuje regulowany czas procesora, pamięć i równoległość. Każda generacja odpowiada na nowe możliwości ataku, a wybór zależy od środowiska wdrożenia i modelu zagrożeń.

Jak Vaulted używa Haszowanie haseł

Vaulted nie przechowuje haseł użytkowników, ponieważ nie posiada kont użytkowników. Jednak zasady haszowania haseł bezpośrednio kształtują funkcję ochrony passphrase. Gdy ustawisz passphrase dla sekretu, do wyprowadzenia klucza z passphrase używany jest PBKDF2 — algorytm haszowania haseł. Celowa wolność 100 000 iteracji PBKDF2 sprawia, że zgadywanie passphrase metodą brute-force jest niepraktyczne, chroniąc opakowany klucz nawet jeśli atakujący uzyska szyfrogram i sól.