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 bity
  • krowa 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:

  1. 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).
  2. Włącz opcje dopiero wtedy, gdy strona ich wymaga.
  3. 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.

Powiązane artykuły