Jak łamie się hasła?

passwords

Łamanie haseł (ang. password cracking) to proces odzyskiwania haseł w formie tekstu jawnego (plaintext).

Nowoczesne systemy nie przechowują haseł bezpośrednio, lecz ich matematyczne reprezentacje wygenerowane przez funkcje skrótu (np. SHA-256, bcrypt, Argon2). Oznacza to, że “łamanie” hasła to raczej jego “odgadywanie”.

Podstawowe techniki to: * atak siłowy (Brute Force) - polega na systematycznym sprawdzaniu wszystkich możliwych kombinacji znaków aż do znalezienia właściwej. Skuteczny przy krótkich i prostych hasłach. Czas potrzebny na złamanie rośnie wykładniczo wraz z długością hasła.

Czy są sposoby ochrony przed powszechnie znanymi sposobami na łamanie haseł?

passwords

Ochrona przed współczesnymi technikami łamania haseł opiera się na budowaniu wielowarstwowych barier, które drastycznie zwiększają koszt(czasowy i obliczeniowy) przeprowadzenia ataku.

Najskuteczniejszą obroną przed atakami siłowymi jest zwiększenie entropii hasła, czyli stopnia jego nieprzewidywalności.

Długość ponad złożoność: Zgodnie z aktualnymi zaleceniami, hasło o długości 15-20 znaków (nawet składające się z prostych słów) jest trudniejsze do złamania metodą brute force niż krótkie, 8-znakowe hasło ze znakami specjalnymi.

Frazy hasłowe (Passphrases): Stosowanie ciągów 4-5 losowych słów (np. Kawa-Pociag-Lustro-Rower-2026) tworzy barierę praktycznie nie do przebicia dla standardowych klastrów obliczeniowych.

Unikalność: Stosowanie unikalnego hasła dla każdego serwisu całkowicie eliminuje ryzyko Credential Stuffing (użycia hasła, które wyciekło z innej strony).

Co to jest credential stuffing?

passwords

Atakujący zakłada, że użytkownicy stosują to samo hasło w wielu miejscach. Często łatwiejszą drogą niż łamanie matematyczne jest bezpośrednie przechwycenie danych. Chodzi więc o wykorzystywanie baz danych haseł wyciekłych z innych serwisów, aby sprawdzić gdzie jeszcze “pasują” (taki strzał na ślepo).

Skoro hasła są hashowane to skąd biorą się ich wycieki?

passwords

To bardzo dociekliwe pytanie. Jako użytkownik nie masz wpływu na to, jak serwis przechowuje Twoje hasło.

Usługodawca (autor oprogramowania) może chronić bazę danych przez np. tzw. solenie (Salting) - to dodawanie unikalnego, losowego ciągu znaków do hasła przed jego zahaszowaniem. Uniemożliwia to stosowanie tzw. tablic tęczowych (Rainbow Tables).

Usługodawca (autor oprogramowania) może stosować wolne algorytmy haszujące np. Argon2 lub bcrypt, które celowo spowalniają proces sprawdzania hasła, czyniąc masowe ataki brute force nieopłacalnymi.

Usługodawca (autor oprogramowania) może stosować mechanizmy kontroli dostępu (Rate Limiting), które blokują automatyczne ataki:

Czy faktycznie usługodawca (autor orpogramowania) stosuje te środki i czy robi to poprawnie? Zazwyczaj trudno stwierdzić.

Ponadto trzeba zaznaczyć, że nawet jeśli po stronie usługodawcy (autora oprogramownia) stosowane są dobre praktyki związane z hasłami to zawsze mogą się trafić np. błędy w architekturze lub wycieki pamięci.

Hasła mogą wyciekać w formie jawnej jeszcze przed procesem haszowania z powodu błędów w konfiguracji serwerów. Błędnie skonfigurowane systemy logowania mogą zapisywać pełne żądania HTTP (w tym hasła wpisane przez użytkowników) do plików tekstowych w celu diagnostyki. A jeśli komunikacja nie jest w pełni zaszyfrowana (np. brak TLS), hasło może zostać przechwycone przez napastnika typu Man-in-the-Middle zanim dotrze do serwera i zostanie zahaszowane.

W przypadku włamania na działający serwer, atakujący może uzyskać dostęp do zrzutów pamięci RAM procesów obsługujących logowanie. W pamięci operacyjnej hasła często występują w formie jawnej przez krótki czas podczas przetwarzania żądania.

Jak szybko łamie się hasła?

passwords

Szybkość łamania haseł jest parametrem zmiennym, zależnym od trzech czynników: mocy obliczeniowej atakującego, złożoności (entropii) hasła oraz algorytmu składowania danych.

Współczesne ataki na hasła (offline) wykorzystują karty graficzne (GPU), które dzięki architekturze równoległej są o rzędy wielkości szybsze od procesorów (CPU).

Dla przykładu - pojedyncza karta RTX 4090: Potrafi generować miliardy skrótów (hashy) na sekundę dla prostych algorytmów (np. MD5).

Warto zerknąć np. do arkusza hashcat v7.0.0 performance comparison i odszukać wiersz “NTLM” (to ten hash wykorzystywany przez Windows).

Nawet używana RTX 4090 potrafi kosztować niemało, ale być może wystarczy wynająć ją na godziny. :-D

Wszystkie pytania