PBKDF2 czyli jak spowolnić atakujących

Zmiana tylko jednego parametru w menadżerze haseł może znacząco zwiększyć nasze bezpieczeństwo.

Opublikowano 25.01.2023 06:33

TL;DR: Sprawdź ilu iteracji PBKDF2 używa Twój menadżer haseł. Jeżeli mniej niż 100000 - rozważ zmianę tego parametru. Jest ona prosta a znacząco wpływa na bezpieczeństwo.

W przypadku Bitwardena sprawdzisz to przez interfejs webowy:

  1. W prawym górnym rogu kliknij w ikonkę ze swoimi inicjałami.
  2. Wybierz Account settings.
  3. Przejdź do menu Security.
  4. Wybierz zakładkę Keys.
  5. Interesuje Cię KDF iterations. Po zmianie wciśnij guzik Change KDF.
  6. Po zmianie zostaniesz automatycznie wylogowany i będziesz się musiał/a zalogować ponownie na wszystkich urządzeniach.

Według najnowszych wytycznych OWASP powinieneś wybrać 600000.
Bitwarden jeszcze do niedawna używał 100000.
Teraz dla nowych kont ta wartość została zwiększona do 350000.

Po co to?

Bezpieczeństwo menadżera haseł w głównej mierze opiera się na haśle głównym. To hasło wykorzystywane jest do szyfrowania bazy danych. Ale nie używa się go wprost. Wylicza się z niego specjalny hash. Więcej o tym opowiadam w filmie jak wygląda łamanie haseł.

Bitwarden używa PBKDF2. Bardzo dokładnie jest to opisane w specjalnym dokumencie. Ale w skrócie:

  • Im większa liczba iteracji PBKDF2 - tym potencjalny atak wolniejszy.
  • Ale też tym dłużej trwa logowanie do aplikacji. Jednak w normalnym użytkowaniu jest to praktycznie nieodczuwalne.
  • Ta mała i prosta zmiana utrudnia atak siłowy - w którym przestępcy próbują zgadnąć nasze hasło testując wyrazy ze słownika lub wszystkie potencjalne możliwości po kolei.
  • Możesz to sprawdzić samodzielnie używając narzędzia CyberChef.
  • Zwiększaj wartość Iterations i sprawdzaj jak wydłuża się czas wygenerowania hasha w zakładce Output.

W rzeczywistości generowanie hasha jest dużo szybsze. Tutaj generujemy go przez przeglądarkę z użyciem kodu JavaScript. W prawdziwym życiu atakujący używają specjalistycznych narzędzi - na przykład hashcata.

Do naszych potrzeb ten przykład jest wystarczający. Widać, że im większa liczba - tym generowanie jest wolniejsze.

Symulacja ataku

Cert Polska udostępnia bazę najpopularniejszych polskich haseł. Zawiera ona około miliona haseł. Załóżmy, że jako hasła głównego użyłeś jednego z haseł znajdujących się na tej liście.

Potencjalny atakujący sprawdza więc wszystkie wyrazy ze słownika po kolei - dla każdego z nich generując wartość PBKDF2.

W dużym uproszczeniu:

  • Dla 100 000 iteracji - pesymistyczny czas ataku to 395ms * 1000000 = 395000000ms (czas potrzebny na wygenerowanie hasha razy liczba rekordów) czyli około 109 godzin.
  • Dla 300 000 iteracji - 1158ms * 1000000 = 1158000000 czyli ponad 321 godzin.

Modyfikacja tylko jednego parametru sprawiła, że atak jest trzy razy wolniejszy.

PS. Nie ustawiaj tej wartości na zbyt wielką liczbę - na przykład miliard. Bo wtedy przy każdym logowaniu Twój komputer musi wykonać odpowiednią ilość iteracji abyś mógł się zalogować. Przy za dużej liczbie będzie to trwało po prostu zbyt długo ;)

Źródła

#porady