← Back to Blog

Entropia hasła wyjaśniona: jak naprawdę obliczyć siłę hasła

2025-12-26

„Używaj silnego hasła” to powszechna rada, ale słowo „silne” jest nieprecyzyjne. Entropia to rzeczywista miara stojąca za tym zaleceniem — liczba, wyrażona w bitach, która mówi, ile prób musi wykonać atakujący w najgorszym przypadku. Ten artykuł wyjaśnia, co oznacza ta liczba i jak ją obliczyć dla hasła, które faktycznie wybierasz.

W skrócie

  • Entropia (w bitach) mierzy rozmiar przestrzeni przeszukiwań, którą atakujący musi przejść metodą brute force: entropia = log2(rozmiar_zestawu_znaków ^ długość).
  • Każdy dodatkowy znak mnoży przestrzeń przeszukiwań; każdy dodatkowy typ znaku mnoży ją jedynie przez stały, stosunkowo niewielki czynnik.
  • Hasło 12-znakowe złożone wyłącznie z małych liter ma mniejszą entropię niż hasło 8-znakowe łączące wszystkie cztery typy znaków — ale 20-znakowe hasło-fraza złożone z małych liter przewyższa oba.
  • Hasła generowane przez CSPRNG osiągają dokładnie swoją teoretyczną entropię; hasła wybierane przez ludzi rzadko to robią, ponieważ ludzie nie są losowi.

Krótka odpowiedź

Entropia w bitach to log2(N), gdzie N to całkowita liczba jednakowo prawdopodobnych haseł o danej długości i zestawie znaków. W praktyce: entropia = długość × log2(rozmiar_zestawu_znaków). Hasło 16-znakowe wybrane jednostajnie z 95 drukowalnych znaków ASCII ma około 16 × log2(95) ≈ 105 bitów entropii — porównywalne z praktyczną odpornością na brute force 256-bitowego klucza AES, co jest przesadą w porównaniu, ale 105 bitów to i tak daleko poza zasięgiem obecnego lub przewidywalnego sprzętu. PassGenerate generuje hasła w ten sposób, korzystając z CSPRNG interfejsu Web Crypto API, więc podana wartość entropii jest rzeczywista, a nie tylko teoretyczna.

Wzór na entropię krok po kroku

Entropia zakłada, że każdy znak jest wybierany niezależnie i jednostajnie losowo z ustalonego zbioru. Przy zestawie znaków o rozmiarze C i haśle o długości L liczba możliwych haseł wynosi C^L, a entropia w bitach to:

entropia = L × log2(C)
Zestaw znakówRozmiar zestawu (C)Bity na znak (log2 C)
Tylko cyfry (0-9)103.32
Małe litery (a-z)264.70
Małe litery + cyfry365.17
Wielkie/małe litery + cyfry625.95
Wielkie/małe litery + cyfry + symbole (~33 popularne)956.57

Długość a rozmiar zestawu znaków: dlaczego długość wygrywa

Ta tabela pokazuje, dlaczego NIST SP 800-63B kładzie mniejszy nacisk na wymuszone reguły złożoności na rzecz długości:

DługośćTylko cyfryMałe literyMieszane (wielkie+małe+cyfry+symbole)
827 bitów38 bitów52 bity
1240 bitów56 bitów79 bitów
1653 bity75 bitów105 bitów
2066 bitów94 bity131 bitów
2480 bitów113 bitów157 bitów
32106 bitów150 bitów210 bitów

Zauważ, że hasło 8-znakowe wykorzystujące wszystkie cztery typy znaków (52 bity) ma mniejszą entropię niż 12-znakowe hasło złożone wyłącznie z małych liter (56 bitów). To matematyczna podstawa dobrze znanego wniosku: dodanie czterech kolejnych losowych znaków daje więcej dla bezpieczeństwa niż wymuszanie symboli i cyfr w krótkim haśle. To także powód, dla którego długie, losowo generowane hasła-frazy (kilka losowych słów ze słownika) mogą być jednocześnie silniejsze i łatwiejsze do wpisania niż krótka mieszanka symboli — każde dodatkowe słowo dodaje zwykle 11-13 bitów, jeśli pochodzi z listy liczącej kilka tysięcy słów, co szybko się sumuje przy 4-6 słowach.

Dlaczego „wyglądać na losowe” to nie to samo, co być losowym

Obliczenia entropii zakładają prawdziwą, jednostajną losowość. Hasła tworzone przez ludzi systematycznie łamią to założenie, nawet gdy wyglądają na skomplikowane: wzory klawiatury (Qwerty123!), podstawienia w stylu leetspeak (H@sło1), czy daty lub imiona z dodanym symbolem — wszystko to obniża efektywną entropię znacznie poniżej tego, na co wskazywałaby liczba znaków, ponieważ narzędzia łamiące hasła stosowane przez atakujących są zbudowane dokładnie wokół takich wzorców. Hasło może wyglądać losowo dla ludzkiego oka, a mimo to paść już w pierwszych milionach prób ukierunkowanego ataku słownikowego.

To praktyczny powód, by preferować generator korzystający z kryptograficznie bezpiecznego generatora liczb pseudolosowych (CSPRNG) zamiast wymyślania hasła samodzielnie. Math.random() w JavaScripcie nie jest kryptograficznie bezpieczny i nie nadaje się do generowania haseł — jest inicjowany i generowany przez algorytm, który w niektórych silnikach jest na tyle przewidywalny, że można go zrekonstruować na podstawie kilku uzyskanych wyników. Funkcja crypto.getRandomValues() z interfejsu Web Crypto API korzysta z kryptograficznego źródła losowości systemu operacyjnego, więc każdy znak jest naprawdę, niezależnie losowy, a powyższa matematyka entropii rzeczywiście się sprawdza.

Jak to wygląda w praktyce na rzeczywistym sprzęcie

Powyższe wartości bitowe są przydatne do porównań, ale nie mówią, ile faktycznie trwa rzeczywisty atak — to zależy od sprzętu wykonującego próby, a ten sprzęt z roku na rok staje się szybszy. Hive Systems co roku publikuje właśnie taki benchmark, testując szybkość ataków brute force na wynajętej flocie konsumenckich kart graficznych (GPU). Ich tabela z 2026 roku wskazuje, że losowo wygenerowane hasło 8-znakowe wykorzystujące pełny mieszany zestaw znaków (wielkie i małe litery, cyfry, symbole) potrzebuje około 132 lat na złamanie — spadek ze 164 lat w 2025 roku i 225 lat w 2024 roku, czyli spadek o około 20-25% rocznie wraz z poprawą sprzętu GPU. Hasło 8-znakowe złożone wyłącznie z małych liter spadło jeszcze szybciej: z trzech tygodni potrzebnych na złamanie w 2025 roku do około dwóch tygodni w 2026 roku.

Warto zapamiętać dwie rzeczy z tego benchmarku. Po pierwsze, trend jest jednokierunkowy — to, co dziś wygląda na „bezpieczne”, z roku na rok słabnie wyłącznie z powodu postępu sprzętowego, co jest praktycznym argumentem za wyborem dłuższych haseł niż obecne minimum. Po drugie, co nieco nieoczywiste: wyspecjalizowane układy akceleratorów AI zbudowane do trenowania modeli językowych nie okazały się szybsze w łamaniu haseł metodą brute force niż porównywalne karty graficzne do gier, a w niektórych testach były wręcz wolniejsze — łamanie haseł to czysto liczbowy problem, który nie korzysta z optymalizacji mnożenia macierzy, na których opiera się sprzęt AI.

Ile bitów naprawdę potrzebujesz?

Nie ma jednej uniwersalnej liczby, ponieważ zależy to od tego, przed czym się bronisz:

  • ~40-60 bitów: Odporność na przypadkowe zgadywanie i ataki automatyczne na małą skalę, ale w zasięgu dobrze wyposażonego ataku offline wobec słabo zahaszowanej bazy danych. Odpowiednie tylko dla kont naprawdę niskiej wartości i o niewielkich konsekwencjach.
  • ~70-90 bitów: Wygodnie poza zasięgiem brute force nawet przy zoptymalizowanym sprzęcie do łamania haseł, w każdym realistycznym horyzoncie czasowym ataku. Rozsądny cel dla większości kont osobistych.
  • 100+ bitów: Praktycznie nieosiągalne metodą brute force przy obecnej lub przewidywalnej mocy obliczeniowej, kryptograficznie w tym samym sensie co silny klucz szyfrujący. Odpowiednie dla hasła głównego menedżera haseł lub innych pojedynczych punktów awarii.

Najważniejsze wnioski

  • Entropia to długość × log2(rozmiar_zestawu_znaków) — długość ma wpływ liniowy, rozmiar zestawu znaków wpływ logarytmiczny, dlatego to długość dominuje.
  • Krótkie hasło zawierające każdy typ znaków może mieć mniejszą entropię niż dłuższe hasło zawierające tylko jeden typ.
  • Efektywna entropia jest równa entropii teoretycznej tylko wtedy, gdy znaki są naprawdę jednostajnie losowe — co gwarantuje CSPRNG, a czego zwykle nie osiąga wybór dokonywany przez człowieka.
  • Dąż do 70+ bitów dla codziennych kont i 100+ bitów dla haseł głównych lub innych pojedynczych punktów awarii.

Dlaczego możesz zaufać PassGenerate

  • Hasła są generowane lokalnie w Twojej przeglądarce za pomocą interfejsu Web Crypto API.
  • Żadne hasła nie są przesyłane na serwery.
  • Wykorzystuje kryptograficznie bezpieczny generator liczb pseudolosowych (CSPRNG).
  • Stosuje nowoczesne najlepsze praktyki bezpieczeństwa zalecane przez NIST i OWASP.

Źródła

  • Hive Systems 2026 Password Table (dane z benchmarku brute force)
  • NIST SP 800-63B – Digital Identity Guidelines
  • OWASP Authentication Cheat Sheet
  • Dokumentacja Web Crypto API na MDN

Podsumowanie

Entropia to precyzyjna, obliczalna miara siły hasła, a nie mgliste pojęcie „złożoności”. Długość liczy się bardziej niż wymuszone mieszanie typów znaków, ponieważ liniowo powiększa przestrzeń przeszukiwań, podczas gdy rozmiar zestawu znaków powiększa ją jedynie logarytmicznie — i nic z tego nie ma znaczenia, jeśli znaki nie są naprawdę losowe, dlatego generator oparty na CSPRNG, taki jak PassGenerate, produkuje hasła osiągające dokładnie swoją teoretyczną entropię, czego hasło wybrane przez człowieka praktycznie nigdy nie osiąga.