Jak stworzyć silne hasło (długość liczy się bardziej niż złożoność)
Silne hasło jest długie, losowe i nigdy nie powtarza się na dwóch różnych kontach. Długość liczy się bardziej niż złożoność: 8-znakowe hasło z włączonymi wszystkimi typami znaków pęka w ciągu dni, a 16-znakowe hasło z tym samym zestawem znaków przetrwałoby dłużej niż wiek wszechświata przy dzisiejszej szybkości ataków.
Dlaczego długość liczy się bardziej niż złożoność
Siła hasła sprowadza się do entropii, czyli liczby prób, jakich atakujący średnio potrzebuje, zanim trafi na właściwe hasło. Entropia zależy od dwóch rzeczy: ile możliwych znaków może pojawić się na każdej pozycji (zestaw znaków) oraz ile jest tych pozycji (długość). Im wyższa entropia w bitach, tym więcej podwojeń przestrzeni haseł atakujący musi pokonać, a to właśnie liczba podwojeń, nie liczba dostępnych symboli, decyduje o realnym czasie łamania.
Dodanie kolejnego typu znaków niewiele zmienia w samym zestawie. Same małe litery dają 26 możliwości na pozycję. Dodaj wielkie litery i cyfry, a masz 62. Dodaj symbole i dochodzisz do około 95. Przejście z samych małych liter do pełnego zestawu 95 znaków mnoży liczbę opcji na pozycję zaledwie około 3,7 raza.
Dodanie jednego znaku do długości hasła działa inaczej: mnoży całkowitą liczbę kombinacji przez cały rozmiar zestawu znaków, nie tylko przez 3,7. Przy zestawie 95 znaków każdy dodatkowy znak mnoży liczbę możliwych kombinacji razy 95. Dlatego dłuższe hasło z mniejszym zestawem znaków potrafi pokonać krótsze hasło z każdym możliwym symbolem: długość się kumuluje, złożoność pojedynczego znaku nie.
Warto rozróżnić dwa scenariusze ataku. Serwis, który ogranicza liczbę prób logowania, spowalnia atakującego do tego stopnia, że nawet przeciętne hasło może wystarczyć na lata. Zupełnie inaczej wygląda sytuacja, gdy baza haseł wycieka w postaci skrótów (hashy) i atakujący liczy próby offline, na własnym sprzęcie, bez żadnych limitów ze strony serwisu. To właśnie ten drugi, dużo bardziej realistyczny w praktyce scenariusz opisuje tabela poniżej, bo to on decyduje o tym, czy twoje hasło ma jeszcze jakąkolwiek wartość ochronną kilka miesięcy po wycieku.
Policzmy to: tabela czasu łamania hasła
Poniższa tabela zakłada atakującego wykonującego 10 miliardów prób na sekundę: to realistyczny budżet nowoczesnej platformy do łamania haseł opartej na kartach graficznych, pracującej na skradzionej, zaszyfrowanej kopii bazy haseł. Przyjmujemy, że średnio trzeba sprawdzić połowę całej przestrzeni możliwych haseł.
| Długość | Same małe litery (26 znaków) | Pełny zestaw: wielkie i małe litery, cyfry, symbole (95 znaków) |
|---|---|---|
| 8 | 10,4 sekundy | 3,8 dnia |
| 10 | 2,0 godziny | 94,9 roku |
| 12 | 1,8 miesiąca | 8 567 wieków |
| 16 | 691 wieków | 697,8 miliarda wieków |
Dwie rzeczy rzucają się w oczy. Po pierwsze, 8-znakowe hasło nigdy nie jest bezpieczne wobec łamania offline, nawet z włączonymi wszystkimi typami znaków: 3,8 dnia to i tak zasięg wystarczający dla każdego, komu naprawdę zależy na twoim koncie. Po drugie, przejście z 12 do 16 znaków w pełnym zestawie nie tylko pomaga, ale przenosi hasło z kategorii “możliwe do złamania w tym stuleciu” do liczby, która jako przedział czasu nie ma już żadnego praktycznego znaczenia.
Matematyka stojąca za tabelą: entropia w bitach to długość razy log2 rozmiaru zestawu znaków. 16-znakowe hasło korzystające ze wszystkich czterech typów znaków ma entropię 16 × log2(95) ≈ 105 bitów. Każdy dodatkowy bit podwaja liczbę potrzebnych prób, więc entropia rośnie bardzo szybko wraz z długością.
Wygeneruj silne hasło
Wybierz długość co najmniej 16 znaków i zostaw zaznaczone wszystkie cztery typy znaków, żeby uzyskać maksymalną entropię na każdy znak. Hasło powstaje bezpośrednio w twojej przeglądarce dzięki Web Crypto API, więc nic nie trafia na żaden serwer, nie ma logów po stronie backendu ani ryzyka, że ktoś przechwyci hasło w drodze do formularza. Wygeneruj nowe hasło dla konta, które właśnie zakładasz, albo wymień stare, jeśli od dawna go nie zmieniałeś.
Najczęstsze błędy
Przewidywalne podstawienia znaków. Zamiana “a” na ”@” albo “o” na “0” w słowie ze słownika niewiele podnosi entropię, bo narzędzia do łamania haseł od dawna testują takie podstawienia jako standardową regułę wobec każdego słowa w swojej bazie. “H@sło1” łamie się w podobnym czasie co “haslo1”.
Używanie tego samego silnego hasła na wielu stronach. Jedno mocne hasło użyte na dziesięciu różnych stronach jest bezpieczne tylko tak, jak najsłabsza z tych dziesięciu. Gdy jedna z nich pada ofiarą wycieku danych, boty do credential stuffing w ciągu kilku godzin sprawdzają ten sam adres e-mail i hasło w bankach, skrzynkach pocztowych i mediach społecznościowych. Osobne, świeżo wygenerowane hasło dla każdej strony ogranicza szkody do jednego konta.
Poprzestawanie na minimum zamiast dążenia do maksimum. Wiele stron wymaga “co najmniej 8 znaków, jednej cyfry, jednego symbolu”. To jest próg, nie cel. Ośmioznakowe hasło, które ledwo spełnia ten wymóg, wciąż może paść w ciągu dni przy łamaniu offline, co widać w tabeli wyżej. Traktuj 16 znaków jako praktyczne minimum dla każdego konta, na którym ci zależy.
Trzymanie haseł wyłącznie w pamięci. Próba zapamiętania kilkunastu unikalnych, losowych 16-znakowych ciągów u większości ludzi kończy się powrotem do haseł słabych, powtarzanych albo lekko zmodyfikowanych. Menedżer haseł rozwiązuje ten problem: generuje i przechowuje osobne silne hasło dla każdej strony, dzięki czemu wystarczy zapamiętać jedno hasło główne.
Budowanie hasła wokół danych osobistych. Data urodzenia, imię dziecka, nazwa ulicy czy imię zwierzaka to informacje, które da się dziś ustalić z mediów społecznościowych w kilka minut, a narzędzia do łamania haseł od dawna uwzględniają takie dane w swoich słownikach kontekstowych. Hasło zbudowane wokół czegoś, co można o tobie sprawdzić, nie zyskuje realnej losowości, nawet jeśli subiektywnie wygląda na trudne do odgadnięcia.
FAQ
Czy 20-znakowe hasło złożone tylko z liter i cyfr jest bezpieczniejsze niż 10-znakowe z symbolami? Tak, i to z dużym zapasem. W formule entropii dominuje długość, nie liczba dostępnych znaków. 20-znakowe hasło alfanumeryczne ma około 119 bitów entropii, podczas gdy 10-znakowe hasło z pełnym zestawem symboli ma około 66 bitów. To różnica rzędu 9 biliardów razy więcej możliwych kombinacji.
Jak często zmieniać silne, unikalne hasło? Jeśli hasło zostało wygenerowane losowo, jest używane tylko na jednym koncie i nic nie wskazuje na wyciek, regularna wymiana nie daje żadnej dodatkowej korzyści dla bezpieczeństwa, a wymuszanie zmiany co kilka miesięcy zwykle kończy się tym, że ludzie wybierają słabsze, łatwiejsze do zapamiętania warianty. Zmień hasło od razu, jeśli serwis zgłosi wyciek danych, jeśli używałeś go wcześniej na innym koncie zanim wygenerowałeś unikalne, albo jeśli podejrzewasz, że zostało ujawnione (phishing, podglądanie zza ramienia, przejęte urządzenie).
Czy generatory haseł online są bezpieczne? To zależy, gdzie faktycznie odbywa się generowanie. Ten generator tworzy hasło w całości w twojej przeglądarce, korzystając z kryptograficznie bezpiecznego generatora liczb losowych z Web Crypto API, więc hasło nigdy nigdzie nie jest przesyłane i serwer nie ma czego zapisać ani wyciec. Unikaj generatorów, które tworzą hasło po stronie serwera i dopiero potem ci je pokazują.
Czym jest fraza-hasło (passphrase) i czy jest lepsza od losowego hasła? Fraza-hasło łączy kilka losowych, niepowiązanych ze sobą słów (metoda diceware) zamiast losowych znaków. Czterowyrazowa fraza z dużej listy słów może osiągnąć 40-50+ bitów entropii, będąc przy tym dużo łatwiejsza do wpisania i zapamiętania niż równoważny losowy ciąg znaków. To dobra opcja dla łatwego do zapamiętania hasła głównego, na przykład chroniącego menedżer haseł, gdzie i tak wpisujesz je ręcznie za każdym razem, gdy otwierasz aplikację na nowym urządzeniu. Dla każdego innego konta wygenerowane losowe hasło przechowywane w menedżerze jest przy tej samej długości prostsze i mocniejsze, bo i tak nigdy nie musisz go samodzielnie wpisywać ani zapamiętywać.