„Používejte silné heslo" je běžná rada, ale slovo „silné" je vágní. Entropie je skutečná míra, která za tímto doporučením stojí — číslo v bitech, které udává, kolik pokusů útočník v nejhorším případě potřebuje. Tento článek vysvětluje, co toto číslo znamená a jak jej vypočítat pro heslo, které si skutečně volíte.
Ve zkratce
- Entropie (v bitech) měří velikost prohledávaného prostoru, který musí útočník projít hrubou silou:
entropie = log2(velikost_znakové_sady ^ délka). - Každý další znak násobí prohledávaný prostor; každý další typ znaku jej násobí jen pevným, poměrně malým faktorem.
- 12znakové heslo používající pouze malá písmena má nižší entropii než 8znakové heslo kombinující všechny čtyři typy znaků — ale 20znaková heslová fráze psaná malými písmeny překoná obě.
- Hesla generovaná pomocí CSPRNG dosahují přesně své teoretické entropie; hesla volená lidmi tak téměř nikdy, protože lidé nejsou náhodní.
Krátká odpověď
Entropie v bitech je log2(N), kde N je celkový počet stejně pravděpodobných hesel dané délky a znakové sady. V praxi: entropie = délka × log2(velikost_sady). 16znakové heslo vybrané rovnoměrně z 95 tisknutelných ASCII znaků má zhruba 16 × log2(95) ≈ 105 bitů entropie — srovnatelně s praktickou odolností 256bitového klíče AES vůči hrubé síle, což je ve srovnání přehnané, ale 105 bitů už dnes daleko přesahuje to, co dokáže vyčerpat jakýkoli současný nebo předvídatelný hardware. PassGenerate generuje hesla tímto způsobem pomocí CSPRNG z Web Crypto API, takže uvedená hodnota entropie je skutečná, nejen teoretická.
Vzorec entropie krok za krokem
Entropie předpokládá, že každý znak je vybírán nezávisle a rovnoměrně náhodně z pevně dané množiny. Při znakové sadě o velikosti C a heslu o délce L je počet možných hesel C^L a entropie v bitech je:
entropie = L × log2(C)
| Znaková sada | Velikost sady (C) | Bitů na znak (log2 C) |
|---|---|---|
| Pouze číslice (0-9) | 10 | 3.32 |
| Malá písmena (a-z) | 26 | 4.70 |
| Malá písmena + číslice | 36 | 5.17 |
| Velká/malá písmena + číslice | 62 | 5.95 |
| Velká/malá písmena + číslice + symboly (~33 běžných) | 95 | 6.57 |
Délka vs. velikost znakové sady: proč délka vyhrává
Tato tabulka ukazuje, proč NIST SP 800-63B upozaďuje vynucená pravidla složitosti ve prospěch délky:
| Délka | Pouze číslice | Malá písmena | Kombinace písmen+číslic+symbolů |
|---|---|---|---|
| 8 | 27 bitů | 38 bitů | 52 bitů |
| 12 | 40 bitů | 56 bitů | 79 bitů |
| 16 | 53 bitů | 75 bitů | 105 bitů |
| 20 | 66 bitů | 94 bitů | 131 bitů |
| 24 | 80 bitů | 113 bitů | 157 bitů |
| 32 | 106 bitů | 150 bitů | 210 bitů |
Všimněte si, že 8znakové heslo používající všechny čtyři typy znaků (52 bitů) má nižší entropii než 12znakové heslo psané pouze malými písmeny (56 bitů). To je matematický základ dobře známého zjištění: přidání čtyř dalších náhodných znaků udělá pro vaši bezpečnost víc než vynucování symbolů a číslic do krátkého hesla. Je to také důvod, proč dlouhé, náhodně generované heslové fráze (několik náhodných slov ze slovníku) mohou být zároveň silnější i snáze zapsatelné než krátká směsice symbolů — každé další slovo obvykle přidá 11-13 bitů, pokud pochází ze seznamu čítajícího několik tisíc slov, což se při 4-6 slovech rychle sčítá.
Proč „vypadat náhodně" není totéž jako být náhodný
Výpočty entropie předpokládají skutečnou rovnoměrnou náhodnost. Hesla vytvořená lidmi tento předpoklad systematicky nesplňují, i když vypadají složitě: vzory po klávesnici (Qwerty123!), leetspeakové záměny (P@ssw0rd), nebo data či jména s připojeným symbolem — to vše snižuje efektivní entropii hluboko pod hodnotu, kterou naznačuje počet znaků, protože nástroje útočníků pro lámání hesel jsou postaveny přesně na těchto vzorech. Heslo může lidskému oku připadat náhodné, a přesto padnout během prvních několika milionů pokusů cíleného slovníkového útoku.
To je praktický důvod, proč dát přednost generátoru využívajícímu kryptograficky bezpečný generátor pseudonáhodných čísel (CSPRNG) před vymýšlením hesla vlastními silami. Math.random() v JavaScriptu není kryptograficky bezpečný a pro generování hesel se nehodí — je inicializován a generován algoritmem, který je v některých enginech dostatečně předvídatelný na to, aby jej bylo možné rekonstruovat z hrstky výstupů. crypto.getRandomValues() z Web Crypto API čerpá z kryptografického zdroje náhodnosti operačního systému, takže každý znak je skutečně a nezávisle náhodný a výše uvedená matematika entropie se tak skutečně uplatňuje.
Jak to vypadá s reálným hardwarem
Výše uvedené počty bitů jsou užitečné pro srovnání, ale neříkají, jak dlouho trvá skutečný útok — to závisí na hardwaru, který hádání provádí, a ten je každým rokem rychlejší. Hive Systems zveřejňuje přesně na toto téma každoroční benchmark, ve kterém testuje rychlost hrubé síly na pronajaté flotile spotřebitelských GPU. Jejich tabulka pro rok 2026 uvádí, že náhodně generované 8znakové heslo používající celou smíšenou znakovou sadu (velká, malá písmena, číslice, symboly) by ke cracknutí vyžadovalo zhruba 132 let — pokles oproti 164 letům v roce 2025 a 225 letům v roce 2024, tedy pokles zhruba o 20-25 % ročně, jak se hardware GPU zlepšuje. 8znakové heslo používající pouze malá písmena kleslo ještě rychleji: ze tří týdnů potřebných ke cracknutí v roce 2025 na přibližně dva týdny v roce 2026.
Z tohoto benchmarku stojí za povšimnutí dvě věci. Zaprvé je trend jednosměrný — cokoliv dnes vypadá jako „bezpečné", každým rokem slábne čistě kvůli zlepšování hardwaru, což je reálný argument pro to přiklánět se spíše k delším heslům než k aktuálnímu minimu. Zadruhé, a poněkud v rozporu s intuicí, se specializované AI akcelerační čipy postavené pro trénování jazykových modelů ukázaly jako ne rychlejší při hrubém lámání hesel než ekvivalentní herní GPU, a v některých testech dokonce pomalejší — lámání hesel je čistě numerický problém, který netěží z optimalizací pro násobení matic, na nichž je postaven AI hardware.
Kolik bitů skutečně potřebujete?
Neexistuje jedno univerzální číslo, protože záleží na tom, proti čemu se bráníte:
- ~40-60 bitů: Odolné vůči náhodnému hádání a malým automatizovaným útokům, ale v dosahu dobře vybaveného offline útoku proti slabě hashované databázi. Vhodné pouze pro skutečně nízkohodnotné účty s malými důsledky.
- ~70-90 bitů: Pohodlně mimo dosah hrubé síly i proti optimalizovanému hardwaru pro lámání hesel, a to pro jakýkoli reálný časový rámec útoku. Rozumný cíl pro většinu osobních účtů.
- 100+ bitů: Prakticky nedosažitelné hrubou silou při současném nebo předvídatelném výpočetním výkonu, kryptograficky bezpečné ve stejném smyslu jako silný šifrovací klíč. Vhodné pro hlavní heslo vašeho správce hesel nebo jiná kritická jednobodová selhání.
Klíčové poznatky
- Entropie je
délka × log2(velikost_znakové_sady)— délka má lineární vliv, velikost znakové sady logaritmický, a proto délka převažuje. - Krátké heslo se všemi typy znaků může mít nižší entropii než delší heslo pouze s jedním typem.
- Efektivní entropie se rovná teoretické entropii pouze tehdy, jsou-li znaky skutečně a rovnoměrně náhodné — což zaručuje CSPRNG a lidská volba obecně ne.
- Cílem by mělo být 70+ bitů pro běžné účty a 100+ bitů pro hlavní hesla nebo jiná kritická jednobodová selhání.
Proč můžete PassGenerate důvěřovat
- Hesla jsou generována lokálně ve vašem prohlížeči pomocí Web Crypto API.
- Žádná hesla nejsou odesílána na servery.
- Používá kryptograficky bezpečný generátor pseudonáhodných čísel (CSPRNG).
- Řídí se moderními osvědčenými bezpečnostními postupy doporučenými NIST a OWASP.
Zdroje
- Hive Systems 2026 Password Table (benchmarková data pro hrubou sílu)
- NIST SP 800-63B – Digital Identity Guidelines
- OWASP Authentication Cheat Sheet
- Dokumentace MDN k Web Crypto API
Závěr
Entropie je přesná, vypočitatelná míra síly hesla, nikoli vágní představa „složitosti". Na délce záleží víc než na vynuceném míchání typů znaků, protože zvětšuje prohledávaný prostor lineárně, zatímco velikost znakové sady jej zvětšuje pouze logaritmicky — a nic z této matematiky neplatí, pokud znaky nejsou skutečně náhodné, a proto generátor postavený na CSPRNG, jako je PassGenerate, produkuje hesla, která přesně dosahují své teoretické entropie — něčeho, čeho heslo zvolené člověkem v podstatě nikdy nedosáhne.