Jak działają ataki brute force

Dlaczego długość ma znaczenie: przykłady obliczeniowe i środki zaradcze.

W przypadku ataków brute force atakujący próbują odgadnąć hasło poprzez systematyczne wypróbowywanie wszystkich możliwych kombinacji znaków. Podstawowa idea jest prosta: przetestować jak najwięcej kombinacji na sekundę – najlepiej na procesorach graficznych lub w systemach rozproszonych. Mówi się również o wyczerpującym przeszukiwaniu (exhaustive search).

W praktyce takie ataki są niestety często skuteczne, ponieważ wiele haseł jest zbyt krótkich, ogranicza się do kilku grup znaków (tylko litery) lub występuje w listach słów. To drastycznie zmniejsza obszar wyszukiwania i ułatwia odgadnięcie hasła. Co ważniejsze: rozróżnia się ataki online (na formularze logowania, gdzie pomocne są ograniczenia częstotliwości/blokady kont) i ataki offline (na skradzione skróty haseł, gdzie o czasie ataku decyduje funkcja skrótu i siła hasła).

Łamanie haseł (offline) ≠ „deszyfrowanie”

Hasła nie są deszyfrowane, ale zapisywane jako wartości hash, a następnie wyszukiwane za pomocą odgadywania + hashowania</ em> (brute force, ataki słownikowe/maski). Szybkość obliczeniowa nowoczesnego sprzętu wynosi miliardy na sekundę (w przypadku szybkich algorytmów hash), dlatego długie i powolnych procedur (np. Argon2, scrypt, PBKDF2, bcrypt) .

Kombinacja i długość hasła

Poniższe przykłady pokazują wpływ długości i wyboru znaków. Dla ilustracji obliczenia opierają się na 2 miliardach prób na sekundę (bardzo wydajny pojedynczy komputer; rzeczywiste wartości różnią się znacznie w zależności od sprzętu i – w przypadku trybu offline – algorytmu haszującego).

Typowe grupy znaków:

  • Cyfry (10: 0–9)
  • Litery (52: A–Z i a–z)
  • Znaki specjalne (≈ 32; zależy od zestawu znaków dozwolonych przez usługę)

Liczba możliwych kombinacji wynika z:

Możliwe kombinacje = (zbiór znaków)długość hasła

Ważne: Tabela pokazuje maksymalny czas wyszukiwania. Średnio rzeczywisty czas wynosi około połowy tej wartości. Ponadto ataki słownikowe, regułowe i maskowe znacznie ograniczają obszar wyszukiwania, podczas gdy powolne metody haszowania haseł drastycznie obniżają efektywną szybkość.

Hasło składa się z Możliwe kombinacje (wzór) Wymagany czas (przy 2 mld/s)

5 znaków
(3 małe litery,
2 cyfry)

( 53) × 263 × 102 =
17 576 000

17 576 000 / 2 000 000 000 =
0,008788 sekundy

7 znaków
(1 wielka litera,
6 małych liter)

( 71) × 261+6 =
56 222 671 232

56 222 671 232 / 2 000 000 000 =
28,111335616 sekund

8 znaków
(4 małe litery,
2 znaki specjalne,
2 cyfry)

( 84) × ( 42 ) × 264 × 322 × 102 =
19 653 623 808 000

19 653 623 808 000 / 2 000 000 000 =
9 826,811904 sekund =
≈ 2,73 godziny

9 znaków
(2 wielkie litery,
3 małe litery,
2 cyfry,
2 znaki specjalne)

( 92 ) × ( 73) × ( 42 ) × 262+3 × 102 × 322 =
9 197 895 942 144 000

9 197 895 942 144 000 / 2 000 000 000 =
4 598 947,971072 sekund =
≈ 53,23 dni

12 znaków
(3 wielkie litery,
4 małe litery,
3 znaki specjalne,
2 cyfry)

( 123) × ( 94 ) × ( 53) × 263+4 × 323 × 102 =
7 295 525 784 083 496 960 000

7 295 525 784 083 496 960 000 / 2 000 000 000 =
3 647 762 892 041,74848 sekund =
≈ 115 590,63 lat

14 znaków
(4 wielkie litery,
4 małe litery,
3 cyfry,
3 znaki specjalne)

( 144 ) × ( 104) × ( 63 ) × 264+4 × 103 × 323 =
28 768 690 008 569 256 345 600 000

28 768 690 008 569 256 345 600 000 / 2 000 000 000 =
14 384 345 004 284 628,1728 sekund =
≈ 455 812 387,64 lat

Wniosek: Każdy dodatkowy znak zwielokrotnia obszar wyszukiwania. Długość przeważa nad zasadami złożoności – szczególnie w przypadku ataków offline – pod warunkiem, że usługi wykorzystują odpowiednie, powolne procedury hashowania z solą.

Ochrona przed atakami brute force

Najskuteczniejszym środkiem stosowanym przez użytkownika jest długie, losowe hasło główne lub fraza hasła (np. kilka losowych słów) – unikalne dla każdej usługi. Password Depot pomaga w generowaniu i wyświetla szacowany czas ataku, uwzględniający długość/zestaw znaków oraz słabe punkty słownika.

  • Włącz MFA/2FA (np. aplikacja TOTP lub token sprzętowy) – tam, gdzie to możliwe, jeszcze lepszym rozwiązaniem są klucze dostępu. Zobacz wskazówki BSI.
  • Nie należy ponownie wykorzystywać haseł. Każde konto wymaga osobnego, silnego hasła.
  • Długie hasła zamiast obowiązkowej złożoności. Usługi powinny zezwalać na długie hasła/frazy haseł (co najmniej 64 znaki) i blokować hasła, które zostały ujawnione (czarna lista).
  • Powolne procedury hashowania po stronie serwera (np. Argon2, scrypt, PBKDF2, bcrypt) z saltem i odpowiednimi współczynnikami pracy; szybkie hashe, takie jak MD5/SHA-1, są nie nadają się do przechowywania haseł.
  • ataki online muszą być hamowane poprzez ograniczenie liczby nieudanych prób, progresywne czasy oczekiwania i, w razie potrzeby, CAPTCHA.

Ponadto Password Depot utrudnia próby online, blokując na krótko maskę wprowadzania hasła głównego po wprowadzeniu nieprawidłowych danych – z rosnącym czasem oczekiwania w przypadku powtarzających się nieudanych prób.

Dodatkowe źródła