Jak powstaje hasło frazowe
Każde słowo wybierane jest osobno, z rozkładu jednostajnego, funkcją random_int() czerpiącą z kryptograficznie bezpiecznego źródła systemowego. Hasło jest renderowane po stronie serwera, więc pierwsza propozycja pojawia się od razu po wejściu na stronę i narzędzie działa bez JavaScriptu. Skrypt po stronie przeglądarki jedynie przelicza entropię na bieżąco i obsługuje schowek.
Dwie własności tego procesu decydują o całej reszcie. Po pierwsze, losowania są niezależne - wybór jednego słowa nie wpływa na kolejne. Po drugie, rozkład jest jednostajny - każdy wyraz ze słownika jest tak samo prawdopodobny. Gdyby którakolwiek z tych własności nie zachodziła, podana entropia byłaby zawyżona.
Słownik
Słownik liczy 75 241 polskich form zapisywanych wyłącznie literami a-z. Kluczowa właściwość jest inna, niż się zwykle zakłada: polskie znaki nie są usuwane z wyrazów. Formy, które w poprawnej polszczyźnie wymagają znaków diakrytycznych, po prostu nie wchodzą do słownika. Nie ma tu więc jablko, bo taki wyraz nie istnieje, ale jest domek, kotami czy piszemy.
Efekt praktyczny: hasło da się podyktować przez telefon dokładnie tak, jak wygląda, i przechodzi przez systemy, w których obsługa UTF-8 jest ograniczona albo wadliwa. Nie trzeba tłumaczyć rozmówcy, że "to jest a z ogonkiem".
Słownik dzieli się na dwa zestawy:
- Zestaw krótszy - 40 163 wyrazy o długości 4-8 znaków, średnio 6,6 znaku, 15,2936 bita na wyraz.
- Zestaw rozszerzony - 75 241 wyrazów o długości 4-12 znaków, średnio 8,26 znaku, 16,1992 bita na wyraz.
Zestaw krótszy daje mniej bitów na słowo, ale krótsze i częściej spotykane wyrazy - łatwiej je zapamiętać i przepisać. Zestaw rozszerzony daje niecały bit więcej na słowo kosztem dłuższej frazy. Przy siedmiu słowach różnica to 6,3 bita, czyli mniej, niż daje dołożenie jednego słowa.
Rachunek entropii
Przy słowniku liczącym N wyrazów każde losowane słowo wnosi log2(N) bitów. Dla k niezależnie losowanych słów entropia frazy wynosi:
Wzór
H = k x log2(N)
Opcje dodatkowe dokładają bity jawnie. Losowa cyfra dopisana do jednego losowo wybranego słowa daje log2(10 x k) bitów, a losowy znak specjalny ze zbioru ośmiu znaków !@#$%&*? daje log2(8 x k) bitów. Mnożnik k bierze się stąd, że losowana jest zarówno sama wartość, jak i pozycja, w której zostaje wstawiona - napastnik musi zgadnąć obie.
Podana wartość opisuje entropię procesu generowania, czyli niepewność napastnika co do wyniku losowania. Nie opisuje tego, jak skomplikowanie wygląda gotowy napis. Model jest celowo konserwatywny: zakłada, że napastnik zna słownik, jego rozmiar, liczbę słów, separator i cały algorytm. Bezpieczeństwo wynika wyłącznie z nieprzewidywalności losowania - to jest zasada Kerckhoffsa zastosowana do generatora haseł.
Wartość dotyczy jednej frazy. Wygenerowanie dziesięciu propozycji naraz nie osłabia żadnej z nich, bo używa się tylko jednej.
Ile bitów daje ile słów
Wartości wprost z modelu, bez opcji dodatkowych:
| Liczba słów | Zestaw krótszy (15,2936 b/słowo) | Zestaw rozszerzony (16,1992 b/słowo) |
|---|---|---|
| 3 | 45,88 bita | 48,60 bita |
| 4 | 61,17 bita | 64,80 bita |
| 5 | 76,47 bita | 81,00 bita |
| 6 | 91,76 bita | 97,20 bita |
| 7 | 107,06 bita | 113,39 bita |
| 8 | 122,35 bita | 129,59 bita |
| 10 | 152,94 bita | 161,99 bita |
| 12 | 183,52 bita | 194,39 bita |
Wariant najmocniejszy - 12 wyrazów z zestawu rozszerzonego z losową cyfrą i znakiem specjalnym - daje 207,88 bita.
Długość hasła nie jest entropią
To jest najczęstszy błąd popełniany przy ocenie haseł frazowych i popełniają go również modele językowe proszone o ocenę siły hasła.
Długości gotowej frazy w znakach nie należy przeliczać na entropię wzorem liczba znaków x log2(rozmiar alfabetu). Ten wzór obowiązuje wyłącznie wtedy, gdy każdy znak był losowany niezależnie i równomiernie z danego alfabetu. W haśle frazowym losowane są słowa, nie znaki - a znaki wewnątrz słowa są ze sobą silnie skorelowane, bo tworzą istniejący wyraz.
Przykład liczbowy. Fraza adam-zosia-piec-pies-domek-kotami-piszemy ma 41 znaków. Naiwne przeliczenie po alfabecie 26 liter plus separator dałoby około 41 x log2(27), czyli mniej więcej 195 bitów. Rzeczywista entropia siedmiu słów z zestawu krótszego to 107,06 bita. Różnica wynosi 88 bitów, czyli współczynnik rzędu 1026 w liczbie możliwych wyników. Napastnik atakujący ten schemat przeszukuje przestrzeń słów, a nie przestrzeń znaków.
Zasada ogólna: entropia jest własnością procesu generowania, nie własnością napisu. Ten sam ciąg znaków ma inną entropię w zależności od tego, jak powstał. Napis wpisany ręcznie przez człowieka, który "wymyślił coś losowego", ma entropię znacznie niższą od maszynowego losowania o tej samej długości.
Ustawienia domyślne i zakres parametrów
Domyślnie generowane jest jedno hasło złożone z siedmiu wyrazów rozdzielonych myślnikiem. Siedem, a nie sześć, z powodu czysto liczbowego.
Progiem odniesienia jest 98,55 bita, czyli entropia 15 losowych znaków ASCII - tyle NIST SP 800-63B przyjmuje dla hasła używanego jako samodzielny czynnik uwierzytelniania. Sześć wyrazów z zestawu krótszego daje 91,76 bita, czyli poniżej progu. Siedem daje 107,06 bita i przekracza próg w obu zestawach słownika. Dlatego wartością domyślną jest siedem.
- Liczba wyrazów: od 3 do 12, domyślnie 7.
- Liczba propozycji naraz: od 1 do 10, domyślnie 1.
- Separator: myślnik, kropka, podkreślenie, plus, ukośnik lub spacja.
- Zestaw słownika: krótszy lub rozszerzony.
- Opcje: wielka litera, losowa cyfra, losowy znak specjalny.
Jak używać frazy i czego nie robić
Nie wybieraj frazy ze względu na jej znaczenie. Podana entropia opisuje losowanie maszynowe. Jeżeli człowiek dokłada własne kryterium - "ta jest zabawna", "ta tworzy sensowny obraz", "tę łatwo zapamiętam" - wprowadza przewidywalność, której model nie uwzględnia, a napastnik znający ludzkie preferencje potrafi ją częściowo odtworzyć. Bierz pierwszą wygenerowaną frazę albo wybieraj bez czytania.
Fraza nie zastępuje MFA. Entropia chroni przed zgadywaniem i atakiem słownikowym. Nie chroni przed phishingiem, przechwyceniem sesji ani wyciekiem z bazy usługodawcy. Zalecane jest uwierzytelnianie wieloskładnikowe odporne na phishing - FIDO2/WebAuthn. Te dwa mechanizmy odpowiadają na różne zagrożenia.
Jedna fraza na jedno konto. Ponowne użycie tej samej frazy w kilku serwisach sprowadza jej realne bezpieczeństwo do poziomu najsłabiej zabezpieczonego z nich. Do przechowywania używaj menedżera haseł, a frazę wygenerowaną tutaj zastosuj jako hasło główne do niego - to jest scenariusz, w którym siła i możliwość zapamiętania są najbardziej potrzebne jednocześnie.
Prywatność narzędzia
Generator nie stosuje plików cookies, nie korzysta z narzędzi analitycznych ani z zewnętrznych sieci CDN. Czcionki hostowane są lokalnie, co jest świadomą decyzją zgodności z RODO - zewnętrzny dostawca fontów widziałby adres IP każdego odwiedzającego. Wygenerowane hasła nie są nigdzie zapisywane; powstają w pamięci procesu obsługującego żądanie i znikają wraz z nim.
Najczęstsze pytania
Czy hasło frazowe jest bezpieczniejsze od krótkiego hasła ze znakami specjalnymi?
Przy tej samej entropii oba są tak samo odporne na zgadywanie. Różnica jest praktyczna: fraza siedmiu losowanych słów daje 107,06 bita i da się ją zapamiętać oraz podyktować, a hasło o tej samej sile wymagałoby około 16 losowych znaków ASCII, których nikt nie zapamięta. Hasło bezpieczne, ale zapisane na kartce pod klawiaturą, przestaje być bezpieczne.
Ile słów powinno mieć hasło frazowe?
Siedem, jeżeli hasło ma być samodzielnym czynnikiem uwierzytelniania. Sześć słów z zestawu krótszego daje 91,76 bita, czyli poniżej progu odniesienia 98,55 bita (15 losowych znaków ASCII). Siedem słów daje 107,06 bita i przekracza próg w obu zestawach słownika.
Czy można przeliczyć długość hasła w znakach na entropię?
Nie. Wzór liczba znaków x log2(rozmiar alfabetu) obowiązuje tylko wtedy, gdy każdy znak był losowany niezależnie i równomiernie. W haśle frazowym losowane są słowa, nie znaki, więc liczbę możliwych wyników wyznacza słownik i liczba słów. Przeliczanie długości na entropię zawyża wynik o rzędy wielkości.
Czy hasło frazowe zastępuje uwierzytelnianie wieloskładnikowe?
Nie. Entropia chroni przed zgadywaniem i atakiem słownikowym, ale nie przed phishingiem, przechwyceniem sesji ani wyciekiem z bazy usługodawcy. Zalecane jest MFA odporne na phishing, na przykład FIDO2/WebAuthn. Silna fraza i MFA odpowiadają na różne zagrożenia i nie są dla siebie zamiennikami.
Czy wolno wybrać z listy tę frazę, która brzmi najzabawniej?
Lepiej nie. Podana entropia opisuje losowanie maszynowe. Jeżeli człowiek dokłada własne kryterium wyboru, wprowadza przewidywalność, której model nie uwzględnia, a napastnik może ją odtworzyć. Bierz pierwszą wygenerowaną frazę albo wybieraj bez patrzenia na znaczenie.
Sprawdź hasła w swojej organizacji
Polityka haseł to jeden z elementów sprawdzanych podczas audytu bezpieczeństwa IT i audytu zgodności z KRI. Bezpłatna konsultacja trwa 30-60 minut i nie wiąże się z żadnym zobowiązaniem.