Przejdź do treści
HNarzędzia
pl
Kategorie

Dla programistów

Jak długie powinno być hasło i jak wygenerować bezpieczne

Czy 8 znaków wystarczy, czy znaki specjalne coś zmieniają i kiedy lepsza jest fraza ze słów? Odpowiedzi ze źródeł oficjalnych i z obliczeń na ustawieniach generatora haseł.

Według NIST serwis, w którym samo hasło chroni konto, powinien wymagać co najmniej 15 znaków. Polski poradnik rządowy zaleca 12-14. Przy haśle losowym więcej daje długość niż mieszanie rodzajów znaków: 16 małych liter to 75,2 bita entropii, a 8 znaków ze wszystkimi zestawami tylko 50,9 bita. Hasło, które musisz zapamiętać, zbuduj z losowych słów wybranych przez generator, a nie z własnych skojarzeń. Resztę kont zabezpiecz menedżerem haseł i uwierzytelnianiem dwuskładnikowym (2FA).

Co mówią zalecenia

Źródła sprawdzone w październiku 2026.

Źródło Co zaleca
NIST SP 800-63B-4 (wersja ostateczna z 31 lipca 2025) Serwis ma wymagać co najmniej 15 znaków, gdy hasło jest jedynym czynnikiem. Gdy hasło jest tylko jednym ze składników uwierzytelniania wieloskładnikowego, wystarczy 8. Serwis powinien dopuszczać hasła co najmniej 64-znakowe, przyjmować spacje i znaki Unicode, pozwalać wklejać hasło i działać z menedżerami haseł. Nie wolno narzucać reguł składu (np. „wielka litera i cyfra”) ani okresowej zmiany hasła. Zmianę trzeba wymusić, gdy są dowody, że hasło wyciekło.
gov.pl, Ministerstwo Cyfryzacji (4 maja 2023) Co najmniej 12-14 znaków. Hasło można zbudować z trzech lub czterech losowych słów. Każde konto ma mieć inne hasło, a hasła warto trzymać w menedżerze haseł i dodać 2FA.
NCSC (Wielka Brytania), three random words (strona z 21 grudnia 2021) Trzy losowe słowa jako hasło, które da się zapamiętać. Unikaj dat, imion bliskich i zwierząt, ulubionej drużyny oraz podmieniania liter na cyfry (0 za o), bo to znane sztuczki, a hasło nie robi się silniejsze. Zapisanie haseł jest dopuszczalne, jeśli trzymasz je w bezpiecznym miejscu.

Liczby się różnią, bo dotyczą różnych sytuacji: NIST opisuje wymagania wobec serwisów, a gov.pl i NCSC rady dla użytkowników. Dla haseł z generatora nie ma powodu schodzić poniżej 15-16 znaków.

Skąd bierze się entropia i co pokazuje narzędzie

Entropia mierzy, ile prób zgadnięcia trzeba średnio wykonać. Dla hasła losowego wynosi bity = długość × log2(liczba możliwych znaków), a każdy dodatkowy bit podwaja liczbę prób. Wzór działa tylko wtedy, gdy znaki wybiera generator losowy. Hasło wymyślone przez człowieka nie ma takiej liczby, nawet jeśli wygląda na skomplikowane.

W teście ustawiliśmy w Generatorze haseł kilka konfiguracji w trybie „Hasło losowe” i odczytaliśmy wartości z interfejsu. Dla każdej konfiguracji wygenerowaliśmy 10 haseł, a wszystkie miały zadaną długość. Przy jednym zestawie znaków entropia z narzędzia zgadza się ze wzorem. Przy kilku narzędzie odejmuje hasła, w których brakuje któregoś zestawu, więc wynik jest nieco niższy od wzoru (te wiersze oznaczono gwiazdką).

Ustawienia Pula znaków Wzór Entropia w narzędziu (bity) Siła Czas złamania
4 cyfry 10 4 × log2(10) 13,3 Bardzo słabe natychmiast
8 małych liter 26 8 × log2(26) 37,6 Średnie 10 s
8 znaków, wszystkie zestawy 90 8 × log2(90)* 50,9 Średnie 1 dzień
12 znaków: litery i cyfry 62 12 × log2(62)* 71,3 Silne 4 tys. lat
12 znaków, wszystkie zestawy 90 12 × log2(90)* 77,4 Silne 321 tys. lat
16 małych liter 26 16 × log2(26) 75,2 Silne 69 tys. lat
20 małych liter 26 20 × log2(26) 94,0 Silne 32 mld lat
16 znaków: litery i cyfry 62 16 × log2(62)* 95,2 Silne 71 mld lat
16 znaków, wszystkie zestawy 90 16 × log2(90)* 103,6 Bardzo silne ponad bilion lat
to samo bez podobnych znaków (I l 1 | O 0 o) 83 16 × log2(83)* 101,7 Bardzo silne ponad bilion lat

* Wzór podaje górną granicę. Przy kilku zestawach narzędzie liczy dokładnie, ile haseł zawiera znak z każdego zestawu.

Pula to 26 małych liter, 26 wielkich, 10 cyfr i 28 symboli (!@#$%^&*()-_=+[]{};:,.<>/?~|). Poziom „Silne” narzędzie przyznaje od 60 do 99 bitów, a „Bardzo silne” od 100.

Czas złamania to średnia przy 10 mld prób na sekundę. Narzędzie podaje to założenie pod wynikiem: atak offline na wykradzioną bazę z szybkim hashem. Serwis, który przechowuje hasła algorytmem celowo wolnym (bcrypt, Argon2), wydłuża ten czas, a atak przez formularz logowania jest dużo wolniejszy. Liczba jest więc scenariuszem pesymistycznym, a nie przewidywaniem.

Długość czy znaki specjalne

Każdy znak z puli 26 liter dodaje 4,7 bita, a z puli 90 znaków 6,5 bita. Rozszerzenie puli działa raz, a długość działa na każdym znaku. Przy 8 małych literach (37,6 bita) dodanie wielkich liter, cyfr i symboli daje 50,9 bita, czyli 13,3 bita więcej. Dodanie 8 kolejnych małych liter daje 75,2 bita, czyli 37,6 bita więcej.

Stąd wynik z tabeli: 16 małych liter (75,2 bita) jest silniejsze niż 12 znaków z liter i cyfr (71,3 bita) i prawie tak silne jak 12 znaków ze wszystkimi zestawami (77,4 bita). 20 małych liter (94,0 bita) przewyższa 12 znaków z symbolami o 16,6 bita.

Generator haseł w trybie „Hasło losowe”: długość 16, włączone tylko małe litery, entropia 75,2 bita, siła „Silne”, pula 26 znaków

Hasło widoczne na zrzucie jest przykładem z testu. Nie używaj go.

W praktyce:

  • Jeśli formularz odrzuca niektóre symbole, nie szukaj tych, które przechodzą. Wydłuż hasło i zostaw litery oraz cyfry: 16 takich znaków to 95,2 bita.
  • Przy ograniczeniu długości po stronie serwisu ustaw maksimum, jakie przyjmie. NIST wskazuje, że serwis powinien dopuszczać co najmniej 64 znaki.
  • W generatorze dodatkowe zestawy znaków nie szkodzą, bo każdy znak jest losowy. Podmiany robione ręcznie to co innego: według NCSC zamiana liter na podobne cyfry (0 za o) nie wzmacnia hasła, bo te sztuczki są znane.

Hasło ze słów, gdy musisz je zapamiętać

Tryb „Hasło-fraza (ze słów)” losuje słowa z wbudowanego słownika. Liczba słów to 3-12 (domyślnie 7), separator może być myślnikiem, kropką, podkreślnikiem, spacją lub może go nie być. Słownik ma 391 polskich słów, czyli log2(391) = 8,6 bita na słowo. Po wyłączeniu „Bez polskich znaków” lista nadal ma 391 pozycji. Narzędzie liczy bity = słowa × log2(391). Opcja „Dodaj cyfrę” dopisuje cyfrę do losowego słowa i dodaje log2(10 × liczba słów) bitów, czyli 6,1 bita przy 7 słowach. Wielka litera na początku słów i separator są stałe, więc bitów nie dodają.

Ustawienia Entropia w narzędziu (bity) Siła Czas złamania
4 słowa 34,4 Słabe 1 s
5 słów 43,1 Średnie 8 min
6 słów 51,7 Średnie 2 dni
7 słów z cyfrą (domyślne) 66,4 Silne 155 lat

Z obliczeń w Node: 8 słów z cyfrą to 75,2 bita, a 12 słów bez cyfry 103,3 bita, czyli poziom „Bardzo silne”. Do hasła głównego menedżera haseł weź więcej słów niż domyślne 7.

Zalecenia gov.pl i NCSC mówią o trzech lub czterech słowach. Liczba słów sama nie wyznacza siły, bo ważny jest też rozmiar słownika. Przy słowniku narzędzia trzy słowa to zaledwie 25,8 bita, czyli mniej niż 6 losowych małych liter (28,2 bita). Dlatego nie kopiuj liczby „trzy”: sprawdź entropię w narzędziu i dobierz liczbę słów do niej. Lista słów jest częścią kodu strony, więc wzór zakłada, że atakujący ją zna.

Generator haseł w trybie „Hasło-fraza (ze słów)”: 7 słów z cyfrą i separatorem myślnikiem, entropia 66,4 bita, słownik 391 słów

Fraza na zrzucie to przykład z testu. Nie używaj jej. Słowa musi wybrać generator. NCSC odradza imiona, daty i ulubione drużyny, a własna fraza w rodzaju „AlaMaKota2026” nie ma entropii z tabeli.

Skąd generator bierze losowość

Kod Generatora haseł (plik logic.ts) działa tak:

  • Liczby losowe pochodzą z crypto.getRandomValues(), kryptograficznego generatora przeglądarki. Bufor ma 256 liczb 32-bitowych. Math.random() nie jest używany.
  • Wybór indeksu stosuje odrzucanie (rejection sampling): wartości z niepełnego, końcowego przedziału zakresu 2^32 są odrzucane i losowane od nowa. Prosty zapis losowa % N przy N = 90 sprawiłby, że 76 z 90 znaków wypadałoby o jeden raz częściej na około 47,7 mln losowań (różnica rzędu 2 na 100 mln). Przy źródle 32-bitowym ta wada byłaby czysto teoretyczna, ale kod jej nie ma: odrzucanie działa przy wyborze znaków i słów.
  • Hasła powstają w przeglądarce, nie są wysyłane na serwer ani zapisywane. Po zamknięciu karty znikają.

Przy kilku zestawach znaków generator losuje cały ciąg z jednej puli i odrzuca wyniki, w których brakuje któregoś zestawu. Dzięki temu każde dozwolone hasło jest tak samo prawdopodobne, a narzędzie podaje dokładną entropię: log2 liczby haseł zawierających znak z każdego zestawu.

Menedżer haseł, 2FA i unikalne hasła

Najsilniejsze hasło nie pomoże, gdy trafi do wielu serwisów albo zostanie wpisane na fałszywej stronie. Źródła z tabeli powtarzają trzy rzeczy:

  • Każde konto ma własne hasło, żeby wyciek z jednego serwisu nie otwierał pozostałych (gov.pl, NCSC).
  • Hasła generuje i przechowuje menedżer haseł, który wypełnia je tylko na właściwej stronie, co utrudnia phishing. NCSC zaleca zabezpieczyć jego hasło główne weryfikacją dwuetapową. Opis menedżerów: NCSC (sprawdzone w październiku 2026).
  • Włącz 2FA, bo hasło może wyciec mimo swojej siły (gov.pl).

Wniosek dla generatora: do kont trzymanych w menedżerze generuj hasła losowe o długości 16 lub więcej znaków. Hasło główne do menedżera i do komputera zrób z losowych słów, bo je wpiszesz z pamięci.

NIST nie zaleca okresowej zmiany haseł. Zmieniaj hasło po wycieku, po podejrzeniu włamania albo gdy ktoś je zobaczył.

Ograniczenia

  • Entropia z narzędzia dotyczy haseł wygenerowanych przez narzędzie. Hasło przepisane z głowy, zmodyfikowane po wygenerowaniu lub wybrane „na wzór” generatora ma inną, zwykle znacznie niższą wartość.
  • Czas złamania zakłada szybki hash i 10 mld prób na sekundę. Zależy od tego, jak serwis przechowuje hasła, czego narzędzie nie widzi.
  • Długość nie chroni przed phishingiem, programem szpiegującym ani ujawnieniem hasła, które serwis zapisał jawnie.
  • Suwak długości kończy się na 64, ale w polu obok możesz wpisać do 128 znaków. Fraza ma 3-12 słów.
  • Serwis, który ogranicza długość lub zestaw znaków, może zmusić do krótszego hasła niż zalecane. Ustaw wtedy maksymalną dozwoloną długość.