Entropia hasła - czym jest i jak ją obliczyć
„Silne hasło" to pojęcie względne - 8 znaków, które w 2005 roku wymagało lat łamania, dziś pada w kilka godzin. Entropia pozwala zmierzyć siłę hasła w sposób uniwersalny, niezależny od aktualnej mocy komputerów. To liczba, która mówi Ci dokładnie, ile wysiłku musi włożyć atakujący - dziś, za rok i za dekadę.
Ten artykuł jest bardziej techniczny niż pozostałe w bazie wiedzy. Jeśli szukasz prostych zasad tworzenia haseł, zacznij od: Jak stworzyć bezpieczne hasło.
Czym jest entropia?
Entropia to pojęcie z teorii informacji, wprowadzone przez Claude'a Shannona w 1948 roku. W kontekście haseł entropia mierzy nieprzewidywalność - ile informacji zawiera hasło, której atakujący nie może zgadnąć.
Entropię wyrażamy w bitach. Jeden bit entropii oznacza wybór między dwiema równie prawdopodobnymi opcjami (jak rzut monetą). Dwa bity to wybór między czterema opcjami, trzy bity - między ośmioma, i tak dalej.
Intuicja za entropią
Wyobraź sobie, że ustawiasz 4-cyfrowy PIN. Każda cyfra może mieć wartość 0-9, czyli 10 opcji. Łącznie masz:
10 × 10 × 10 × 10 = 10 000 możliwych kombinacji
Entropia tego PIN-u to logarytm dwójkowy z liczby kombinacji:
log₂(10 000) ≈ 13.3 bita
Co to oznacza w praktyce? Atakujący, który zgaduje losowo, musi średnio sprawdzić połowę wszystkich kombinacji, czyli około 5000 prób. Każdy dodatkowy bit entropii podwaja tę liczbę.
Dlaczego entropia to najlepsza miara siły hasła?
Niezależność od technologii
Moc komputerów rośnie z roku na rok. Hasło, które w 2010 roku wymagało miesiąca łamania, dziś pada w godziny. Mierzenie siły hasła w „czasie łamania" jest zawodne - wynik zmienia się z każdą generacją sprzętu.
Entropia jest stała. Hasło o entropii 60 bitów zawsze oznacza 260 kombinacji do sprawdzenia - niezależnie od tego, czy atakujący używa komputera z 2010, czy 2030 roku. Zmienia się tylko czas potrzebny na przeszukanie tej przestrzeni, nie jej rozmiar.
Porównywalność różnych typów haseł
Jak porównać siłę hasła xK9#mL2$ z passphrase krowa lampa ocean zegar?
Jedno ma 8 znaków, drugie
23. Jedno wygląda „skomplikowanie", drugie to zwykłe słowa.
Entropia daje wspólną jednostkę:
xK9#mL2$(8 losowych znaków z 95): ~52 bitykrowa lampa ocean zegar(4 słowa z 7776): ~51 bitów
Oba hasła mają praktycznie identyczną siłę, mimo zupełnie różnej formy.
Obiektywność
Subiektywne oceny („to hasło wygląda na silne") są zawodne. Hasło p@ssw0rd2024! wygląda
imponująco,
ale opiera się na przewidywalnym wzorcu - jego efektywna entropia jest znacznie niższa niż sugeruje
długość.
Entropia zmusza do precyzyjnego myślenia: ile jest naprawdę możliwych kombinacji, które atakujący musi sprawdzić?
Jak obliczyć entropię hasła?
Wzór podstawowy
Dla hasła składającego się z losowo wybranych elementów:
Entropia = log₂(liczba możliwych kombinacji) = log₂(N^L) = L × log₂(N)
Gdzie:
- N - rozmiar alfabetu (liczba możliwych znaków lub słów)
- L - długość hasła (liczba znaków lub słów)
Entropia na znak
Przydatne jest pojęcie entropii na pojedynczy znak:
| Alfabet | Rozmiar (N) | Entropia na znak |
|---|---|---|
| Cyfry (0-9) | 10 | 3.32 bita |
| Małe litery (a-z) | 26 | 4.70 bita |
| Małe + wielkie litery | 52 | 5.70 bita |
| Litery + cyfry | 62 | 5.95 bita |
| Litery + cyfry + symbole | 95 | 6.57 bita |
Przykłady obliczeń
Hasło 8-znakowe (małe litery)
Alfabet: 26 znaków Długość: 8 Kombinacje: 268 = 208 827 064 576 Entropia: 8 × 4.70 = 37.6 bita
Hasło 12-znakowe (litery + cyfry + symbole)
Alfabet: 95 znaków Długość: 12 Kombinacje: 9512 ≈ 5.4 × 1023 Entropia: 12 × 6.57 = 78.8 bita
PIN 6-cyfrowy
Alfabet: 10 cyfr Długość: 6 Kombinacje: 106 = 1 000 000 Entropia: 6 × 3.32 = 19.9 bita
Entropia passphrase
Dla passphrase obliczenia są analogiczne, ale zamiast znaków liczymy słowa:
Entropia = liczba słów × log₂(rozmiar słownika)
Entropia na słowo
| Słownik | Rozmiar | Entropia na słowo |
|---|---|---|
| Diceware (standard) | 7 776 | 12.9 bita |
| EFF Large Wordlist | 7 776 | 12.9 bita |
| Słownik niezgadniesz.pl | ~85 000 | 12.8 - 14.0 bita (16.4 teoretycznie) |
| Pełny słownik języka polskiego | ~350 000 | 18.4 bita |
16.4 bita na słowo to wartość teoretyczna - tyle dałoby losowanie każdego słowa spośród wszystkich 85 000 form. Generator niezgadniesz.pl układa jednak hasło w poprawną gramatycznie frazę, więc każde miejsce w haśle losowane jest tylko spośród form pasujących do danej kategorii gramatycznej (jest ich prawie 200), a pula dla jednego miejsca to kilka tysięcy słów, nie cały słownik. Kategorie dobierane są z prawdopodobieństwem proporcjonalnym do ich rozmiaru, dzięki czemu każda kombinacja słów jest tak samo prawdopodobna - gdyby kategorie losować po równo, słowa z małych kategorii wracałyby nieproporcjonalnie często i entropia byłaby niższa. W praktyce wychodzi od 12.8 do 14.0 bita na słowo - nie ma tu jednej wartości, bo każda liczba słów korzysta z innego schematu gramatycznego, a każdy schemat ma inne pule do losowania. Poniższa tabela podaje entropię całego hasła dla każdego ustawienia generatora.
Przykłady obliczeń
Passphrase 4 słowa (Diceware)
Słownik: 7 776 słów Liczba słów: 4 Kombinacje: 77764 ≈ 3.66 × 1015 Entropia: 4 × 12.9 = 51.7 bita
Passphrase 5 słów (Diceware)
Słownik: 7 776 słów Liczba słów: 5 Kombinacje: 77765 ≈ 2.84 × 1019 Entropia: 5 × 12.9 = 64.6 bita
Passphrase 6 słów (generator niezgadniesz.pl)
Słownik: 85 000 form, dobieranych według kategorii gramatycznych Liczba słów: 6 Kombinacje: ≈ 4.6 × 1023 Entropia: 78.6 bita
Tyle właśnie wylicza sam generator. Dla każdego ustawienia wychodzi:
| Liczba słów | Entropia hasła | Na słowo | Kombinacje |
|---|---|---|---|
| 2 | 26.6 bita | 13.3 bita | ≈ 9.9 × 107 |
| 3 | 41.9 bita | 14.0 bita | ≈ 4.0 × 1012 |
| 4 | 53.7 bita | 13.4 bita | ≈ 1.4 × 1016 |
| 5 | 65.6 bita | 13.1 bita | ≈ 5.5 × 1019 |
| 6 | 78.6 bita | 13.1 bita | ≈ 4.6 × 1023 |
| 7 | 90.8 bita | 13.0 bita | ≈ 2.2 × 1027 |
| 8 | 102.3 bita | 12.8 bita | ≈ 6.1 × 1030 |
| 9 | 116.1 bita | 12.9 bita | ≈ 8.9 × 1034 |
Porównanie: hasło losowe vs passphrase
| Hasło | Entropia | Łatwość zapamiętania |
|---|---|---|
| 8 znaków (a-z, A-Z, 0-9, symbole) | 52.6 bita | Bardzo trudne |
| 4 słowa (Diceware) | 51.7 bita | Łatwe |
| 12 znaków (pełny alfabet) | 78.8 bita | Praktycznie niemożliwe |
| 6 słów (Diceware) | 77.5 bita | Umiarkowanie łatwe |
Passphrase oferuje podobną entropię przy znacznie lepszej zapamiętywalności.
Jak liczymy siłę hasła
Tabela wyżej pokazuje entropię samego schematu gramatycznego - hasła bez żadnych dodatkowych opcji. Każda włączona opcja to kolejne losowanie, a liczba pod hasłem jest sumą bitów ze wszystkich losowań:
Entropia = entropia schematu + bonus za każdą włączoną opcję
Bity wolno tu dodawać, bo losowania są niezależne. Liczby kombinacji się mnożą, a log₂ zamienia mnożenie na dodawanie - dlatego wybór spośród 10 cyfr dokłada zawsze te same log₂(10) = 3.3 bita, niezależnie od tego, ile kombinacji było wcześniej.
Obowiązuje przy tym jedna zasada: liczymy tylko to, co wylosował generator. Wszystko, co ustawiłeś sam, dla atakującego stosującego zasadę Kerckhoffsa jest jawne.
Wielka litera
Generator losuje, które słowo zapisać wielką literą. To wybór spośród wszystkich słów hasła:
Bonus = log₂(liczba słów)
Dla 5 słów: log₂(5) = 2.3 bita.
Cyfra
Tutaj losowania są dwa: do którego słowa dopisać cyfrę i która to cyfra. Oba dokładają bity:
Bonus = log₂(liczba słów) + log₂(10)
Dla 5 słów: 2.3 + 3.3 = 5.6 bita. Sama cyfra jest warta więcej niż wybór słowa - dziesięć możliwości to 3.3 bita, pięć słów tylko 2.3.
Zamiana znaku
Ta opcja podmienia jeden znak na podobny symbol: a→@,
o→0, e→3, l→1,
s→5, t→7, i→!.
Generator losuje jedną pozycję spośród wszystkich, które da się podmienić w tym
konkretnym haśle:
Bonus = log₂(liczba pozycji do podmiany)
Przykład: lotne miasta
lotne: l, o, t, e → 4 pozycje miasta: i, a, s, t, a → 5 pozycji Razem: 9 pozycji Bonus: log₂(9) = 3.2 bita
Ile to wychodzi w praktyce - zmierzone na słowniku generatora:
| Liczba słów | Średni bonus | Zwykle mieści się w |
|---|---|---|
| 2 | 2.6 bita | 1.6 - 3.2 bita |
| 3 | 3.1 bita | 2.3 - 3.7 bita |
| 4 | 3.5 bita | 2.8 - 4.0 bita |
| 5 | 3.9 bita | 3.3 - 4.3 bita |
| 6 | 4.1 bita | 3.6 - 4.5 bita |
| 7 | 4.3 bita | 3.9 - 4.8 bita |
| 8 | 4.5 bita | 4.1 - 4.9 bita |
| 9 | 4.7 bita | 4.3 - 5.0 bita |
Hasło, w którym nie ma ani jednego znaku do podmiany, dostaje 0 bitów bonusu - opcja po prostu niczego nie zmienia. Przy dwóch słowach zdarza się to w 0.03% haseł, przy czterech i więcej praktycznie nigdy.
Czego nie liczymy
Kilka rzeczy celowo pomijamy, choć mogłyby powiększyć liczbę pod hasłem:
- Znaku specjalnego - wybierasz go sam, zostaje zapamiętany w przeglądarce i jest taki sam w każdym kolejnym haśle. To ustawienie, nie losowanie.
- Liczby słów - też ją wybierasz sam.
- Tego, które opcje są włączone - zakładamy najgorszy przypadek, czyli że atakujący zna ustawienia.
Gdyby doliczyć sam znak specjalny, hasło „zyskałoby" log₂(8) = 3 bity. Kusi, ale byłby to bonus za to, że atakujący czegoś nie wie o Tobie - a nie za losowość hasła. Do tego doliczać trzeba by konsekwentnie: liczbę słów (log₂(8) = 3 bity) i stan czterech przełączników (4 bity), czyli razem ponad 11 bitów wziętych z założeń o użytkownikach, a nie z generatora. Jest jeszcze jeden powód: te ustawienia zostają zapamiętane, więc każde kolejne hasło ma je takie same. Bonus przysługiwałby więc raz na użytkownika, a nie raz na hasło - i znikałby zupełnie, gdyby choć jedno Twoje hasło kiedykolwiek wyciekło.
Liczba pod hasłem jest więc celowo ostrożna: prawdziwa siła hasła może być tylko wyższa, nigdy niższa.
Pełny rachunek
5 słów ze wszystkimi trzema opcjami włączonymi:
Schemat gramatyczny (5 słów): 65.6 bita Wielka litera: log₂(5) = 2.3 bita Cyfra: log₂(5) + log₂(10) = 5.6 bita Zamiana znaku: log₂(~15) = 3.9 bita ─────────────────────────────────────────────────── Razem: ~77 bitów
To znacznie powyżej praktycznego minimum 70 bitów - i wszystko w haśle, które wciąż da się zapamiętać.
Więcej słów czy więcej opcji?
Hasło z generatora możesz wzmocnić na dwa sposoby: dodać kolejne słowo albo włączyć opcje - wielką literę, cyfrę i zamianę znaku. Oba sposoby podnoszą entropię, ale nie są sobie równe. Jeśli nie musisz spełnić wymagań konkretnej strony, wybierz dodatkowe słowo.
Ile bitów daje każdy sposób
Tabela zestawia przyrost entropii z dodania jednego słowa z bonusami za opcje, policzonymi tak jak w poprzedniej sekcji:
| Liczba słów | Wielka litera | Cyfra | Zamiana znaku | Wszystkie trzy opcje | +1 słowo |
|---|---|---|---|---|---|
| 2 | +1.0 bita | +4.3 bita | +2.6 bita | +7.9 bita | +15.5 bita |
| 3 | +1.6 bita | +4.9 bita | +3.1 bita | +9.6 bita | +11.5 bita |
| 4 | +2.0 bita | +5.3 bita | +3.5 bita | +10.8 bita | +11.8 bita |
| 5 | +2.3 bita | +5.6 bita | +3.9 bita | +11.9 bita | +12.5 bita |
| 6 | +2.6 bita | +5.9 bita | +4.1 bita | +12.6 bita | +11.9 bita |
| 7 | +2.8 bita | +6.1 bita | +4.3 bita | +13.2 bita | +11.9 bita |
| 8 | +3.0 bita | +6.3 bita | +4.5 bita | +13.8 bita | +13.0 bita |
Z tabeli wynikają dwie rzeczy:
- Pojedyncza opcja to ułamek słowa. Wielka litera daje 1 - 3 bity, cyfra 4 - 6 bitów, zamiana znaku 3 - 4.5 bita. Jedno słowo to 11.5 - 15 bitów - dwa do dziesięciu razy więcej.
- Jedno słowo daje mniej więcej tyle, co wszystkie trzy opcje razem. Przy krótkich hasłach (2 - 5 słów) słowo wyraźnie wygrywa, przy dłuższych wynik jest zbliżony.
Przykład: dwa hasła o tej samej sile
5 słów + wielka litera + cyfra + zamiana znaku ≈ 76.3 bita 6 słów, bez opcji = 77.6 bita
Siła jest praktycznie taka sama. Różnica leży w tym, co trzeba zapamiętać.
Słowo łatwiej zapamiętać niż opcję
Dodatkowe słowo staje się częścią frazy. Generator układa słowa w poprawną gramatycznie całość, więc sześć słów da się zapamiętać jako jedno krótkie zdanie albo obraz - tak samo jak pięć.
Każda opcja to natomiast osobny, arbitralny szczegół, który nie wynika z treści frazy:
- które słowo zaczyna się wielką literą,
- jaka cyfra i przy którym słowie,
- który znak został podmieniony i na jaki symbol.
Takie szczegóły zapomina się najszybciej - i to one najczęściej sprawiają, że logowanie kończy się błędem, mimo że frazę pamiętasz dobrze. Pięć słów z trzema opcjami to w praktyce osiem rzeczy do zapamiętania. Sześć słów bez opcji - sześć, w dodatku połączonych w sensowną całość.
Dochodzi do tego wygoda pisania: słowa z samych małych liter wpiszesz na telefonie bez przełączania klawiatury na cyfry i symbole.
Kiedy włączać opcje
Opcje mają jedno uzasadnienie: wymagania stron. Wiele serwisów odrzuca hasło bez wielkiej litery, cyfry czy znaku specjalnego, niezależnie od jego długości. Wtedy włącz tylko te opcje, których strona wymaga - każda z nich i tak doda kilka bitów, więc niczego nie tracisz.
Zasada w skrócie:
- Dobierz liczbę słów do potrzebnego poziomu bezpieczeństwa - dla większości kont wystarczą 4 - 5 słów (54 - 66 bitów), dla hasła głównego do managera haseł co najmniej 6 (ok. 79 bitów, patrz niżej).
- Włącz opcje dopiero wtedy, gdy strona ich wymaga.
- Chcesz silniejszego hasła? Dodaj słowo, zamiast włączać kolejne opcje.
Ile entropii potrzebujesz?
Wymagana entropia zależy od wartości chronionego zasobu i możliwości atakującego.
Orientacyjne poziomy bezpieczeństwa
| Entropia | Kombinacje | Zastosowanie |
|---|---|---|
| ~20 bitów | ~1 milion | PIN do telefonu (z blokadą po kilku próbach) |
| ~40 bitów | ~1 bilion | Konta o niskiej wartości, ataki online |
| ~50-60 bitów | ~1015 - 1018 | Większość kont internetowych |
| ~70-80 bitów | ~1021 - 1024 | Hasło główne do managera haseł |
| ~100+ bitów | ~1030+ | Szyfrowanie długoterminowe, klucze kryptograficzne |
Punkty odniesienia
Z tymi przykładami generator porównuje Twoje hasło, gdy najedziesz na ocenę jego siły:
| Przykład | Entropia | Skąd ta wartość |
|---|---|---|
Data urodzenia (np. 12031987) |
14.8 bita | Dowolny dzień z ostatnich 80 lat: 80 × 365.25 ≈ 29 220 dat, log₂(29 220) ≈ 14.8 |
| 4 słowa (Diceware) | 51.7 bita | 4 × 12.9 bita |
| 8 znaków (a-z, A-Z, 0-9, symbole) | 52.6 bita | 8 × 6.57 bita |
Hasło generowane przez iPhone'a i Safari (np. kafnob-tixrup-Hegvo7) |
71 bitów | 20 znaków: 16 małych liter, jedna wielka litera, jedna cyfra i dwa myślniki - wartość podana przez Apple w Apple Platform Security |
| 6 słów (Diceware) | 77.5 bita | 6 × 12.9 bita |
| Fraza odzyskiwania portfela kryptowalut (12 słów BIP39) | 128 bitów | 12 słów z listy 2048 to 132 bity, z czego 4 to suma kontrolna - zostaje 128 bitów losowych, tyle co klucz AES-128 |
Wpływ algorytmu hashującego
Wymagana entropia zależy też od tego, jak serwis przechowuje hasła:
- Słaby hash (MD5, SHA-1) - atakujący testuje ~1011 haseł/s na jednym GPU. Potrzebujesz więcej entropii.
- Silny hash (bcrypt, Argon2) - atakujący testuje ~103-104 haseł/s. Mniejsza entropia wystarczy.
Ponieważ nie wiesz, jakiego algorytmu używa serwis, bezpiecznie jest zakładać najgorszy scenariusz.
Pułapki przy szacowaniu entropii
Entropia teoretyczna vs efektywna
Obliczenia entropii zakładają, że hasło jest naprawdę losowe. W praktyce ludzie wprowadzają wzorce, które drastycznie obniżają efektywną entropię.
Przykład: Cz3k0l4d4&3
Teoretycznie: 11 znaków z alfabetu 95 = ~72 bity.
Efektywnie: słowo czekolada + przewidywalne zamiany (e→3, o→0, a→4) + symbol i cyfra na
końcu. Atakujący
z regułami hybrydowymi złamie to w minuty.
Przykład: KochamMojegoPsa123
Teoretycznie: 18 znaków = ~85 bitów.
Efektywnie: sensowna fraza po polsku + cyfry na końcu. Znajduje się w słownikach ataków. Entropia bliska zeru.
Atakujący zna Twoją metodę
Przy obliczaniu entropii zakładamy, że atakujący wie, jakiej metody użyłeś:
- Jeśli używasz Diceware, atakujący wie, że testujesz kombinacje z 7776 słów
- Jeśli używasz losowych znaków, atakujący wie, że testujesz alfabet 95 znaków
To konserwatywne założenie (tzw. zasada Kerckhoffsa) - bezpieczeństwo nie powinno zależeć od tajności metody, tylko od losowości wyniku.
Nie dodawaj entropii tam, gdzie jej nie ma
Częsty błąd: „dodam znak specjalny, to zwiększy entropię". To prawda tylko dla haseł losowych. Jeśli
zawsze dodajesz ! na końcu, atakujący to wie - entropia wzrasta o ułamek bita, nie o
pełne
log₂(33) ≈ 5 bitów.
Ta sama zasada obowiązuje w generatorze: znak specjalny między słowami wybierasz Ty, nie losowanie, więc nie doliczamy go do entropii - zob. Jak liczymy siłę hasła.
Losowość musi być prawdziwa
Ludzki mózg jest fatalny w generowaniu losowości. Gdy prosisz kogoś o „losowe" słowo, dostaniesz
nieproporcjonalnie często: kot, dom, drzewo - słowa krótkie,
częste, podstawowe.
Prawdziwa losowość wymaga generatora: kryptograficznie bezpiecznego generatora liczb losowych w komputerze lub fizycznych kostek w metodzie Diceware.
Podsumowanie
Entropia to uniwersalna miara siły hasła, wyrażona w bitach. Mówi, ile kombinacji musi sprawdzić atakujący - niezależnie od formy hasła czy aktualnej mocy komputerów.
Kluczowe wzory:
- Hasło losowe:
Entropia = długość × log₂(rozmiar alfabetu)
- Passphrase:
Entropia = liczba słów × log₂(rozmiar słownika)
Praktyczne minimum to 70+ bitów - dla hasła głównego warto celować w 80+, by mieć margines bezpieczeństwa. Passphrase z 5 słów (Diceware) daje ~65 bitów, hasło 12-znakowe z pełnego alfabetu - ~79 bitów.
Pamiętaj: obliczenia entropii są prawdziwe tylko dla haseł naprawdę losowych. Każdy przewidywalny wzorzec - słowa ze słownika, typowe zamiany, sensowne frazy - drastycznie obniża efektywną entropię, często do zera.