Jak fungují útoky hrubou silou
Proč záleží na délce: výpočetní příklady a protiopatření.
Při útocích hrubou silou se útočníci snaží uhodnout heslo pomocí systematického zkoušení všech možných kombinací znaků. Základní princip je jednoduchý: testovat co nejvíce kombinací za sekundu – ideálně na GPU nebo v distribuovaných systémech. Hovoří se také o vyčerpávajícím hledání (vyčerpávající hledání).
V praxi jsou takové útoky bohužel často úspěšné, protože mnoho hesel je příliš krátkých , omezuje se na několik skupin znaků (pouze písmena) nebo se vyskytuje v slovnících. To výrazně zmenšuje prostor pro hledání a usnadňuje uhodnutí. Ještě důležitější je rozlišovat mezi online útoky (proti přihlašovacím formulářům, kde pomáhá rate limiting / blokace účtů) a offline útoky (proti odcizeným hashům hesel, kde o době útoku rozhoduje hashovací funkce a síla hesla).
Prolamování hesel (offline) ≠ „dešifrování“
Hesla se nedešifrují, ale ukládají se jako hashe a následně se hledají pomocí hádaní + hashování (brute force, slovníkové/maskové útoky). Výpočetní rychlost moderního hardwaru dosahuje miliard za sekundu (u rychlých hashovacích metod), proto jsou rozhodující dlouhá a pomalými metodami (např. Argon2, scrypt, PBKDF2, bcrypt) hashovaná hesla.
Historický i aktuální kontext: projekt RC5 od distributed.net demonstruje hrubou sílu vyčerpávajícího hledání v prostoru klíčů: 56 bitů bylo nalezeno v roce 1997 po 250 dnech, 64 bitů v roce 2002 po 1 757 dnech. V současnosti ukazuje stav proxy pro RC5-72 cca 2,38 bilionu klíčů za sekundu (stav ke dni dnešního přístupu). To je brute-force útok na klíče a ne hashování hesel – dobře to ale ilustruje, jak efektivně škáluje distribuovaný výpočetní výkon.
Kombinace a délka hesla
Následující příklady ukazují vliv délky a výběru znaků. Pro ilustraci se počítá s 2 miliardami pokusů za sekundu (velmi výkonný samostatný počítač; skutečné hodnoty se výrazně liší podle hardwaru a – v offline případě – i podle hashovací metody).
Typické skupiny znaků:
- Číslice (10: 0–9)
- Písmena (52: A–Z a a–z)
- Speciální znaky (≈ 32; závisí na sadě znaků povolené danou službou)
Počet možných kombinací se vypočítá takto:
Důležité: Tabulka ukazuje maximální dobu hledání. Skutečná doba je v průměru přibližně poloviční. Slovníkové, pravidlové a maskové útoky navíc výrazně zmenšují prostor prohledávání, zatímco pomalé metody hashování hesel efektivní rychlost drasticky snižují.
| Heslo se skládá z | Možné kombinace (vzorec) | Potřebný čas (při 2 mld./s) |
|---|---|---|
| 5 znaků 3 malá písmena, 2 číslice | (53) × 263 × 10217 576 000 | 0,009 sekundy |
| 7 znaků 1 velké písmeno, 6 malých písmen | (71) × 261+656 222 671 232 | ≈ 28 sekund |
| 8 znaků 4 malá písmena, 2 speciální znaky, 2 číslice | (84) × (42) × 264 × 322 × 10219 653 623 808 000 | ≈ 2,73 hodiny |
| 9 znaků 2 velká, 3 malá písmena, 2 číslice, 2 speciální znaky | (92) × (73) × (42) × 262+3 × 102 × 3229 197 895 942 144 000 | ≈ 53 dnů |
| 12 znaků 3 velká, 4 malá písmena, 3 speciální znaky, 2 číslice | (123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021 | ≈ 115 591 let |
| 14 znaků 4 velká, 4 malá písmena, 3 číslice, 3 speciální znaky | (144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025 | ≈ 455 812 388 let |
Závěr: Každý další znak násobně zvětšuje prostor prohledávání. Délka je důležitější než pravidla složitosti – zejména proti Offline útoky – za předpokladu, že služby používají vhodné, pomalé hashovací algoritmy se Salt.
Ochrana před brute-force útoky
Nejúčinnějším opatřením na straně uživatele je dlouhé, náhodné hlavní heslo nebo přístupová fráze (např. několik náhodných slov) – jedinečná pro každou službu. Password Depot pomáhá s generováním a zobrazuje i odhadovanou dobu prolomení , která kromě délky/sady znaků zohledňuje také slabiny vůči slovníkovým útokům.
- Aktivujte MFA/2FA (např. aplikaci TOTP nebo hardwarový token) – kde je to možné, jsou Passkeys ještě lepší. Viz pokyny BSI.
- Žádná recyklace hesel. Každý účet potřebuje vlastní silné heslo.
- Upřednostněte délku před povinnou komplexitou. Služby by měly umožňovat dlouhá hesla/přístupové fráze (min. 64 znaků) a blokovat kompromitovaná hesla (blacklist).
- Pomalé hashovací algoritmy na straně serveru (např. Argon2, scrypt, PBKDF2, bcrypt) se Salt a přiměřenými work faktory; rychlé hashe jako MD5/SHA-1 nejsou pro ukládání hesel vhodné.
- Rate-Limiting/Throttling a blokace: Online útoky musí být zpomalovány omezeným počtem chybných pokusů, postupně se prodlužující čekací dobou a případně CAPTCHA.
Password Depot navíc ztěžuje online pokusy o hádání hesla tím, že po chybném zadání na krátkou dobu zablokuje vstupní formulář pro hlavní heslo – s prodlužující se čekací dobou při opakovaných neúspěšných pokusech.
Praktické pokyny pro poskytovatele služeb (technické týmy)
- Akceptujte všechny tisknutelné znaky včetně mezer/Unicode a povolte copy & paste.
- Implementujte blocklisty (kompromitovaná/běžná hesla) a rate limiting s jasnými pokyny pro uživatele.
- Hesla ukládejte výhradně jako saltované, hashované hodnoty s pomalými KDF a pravidelně kontrolujte work faktory.
Další zdroje
- NIST SP 800–63B (Rev. 4), Appendix: Strength of Passwords – délka, přístupové fráze, offline útoky (miliardy hashů/s) a koncept rate limitingu.
- NIST SP 800–63B (Rev. 3) – mimo jiné minimální délka, povolení dlouhých hesel (≥ 64), blacklisty, povolení vkládání; Rate-Limiting/Throttling s omezením na max. 100 po sobě jdoucích neúspěšných pokusů.
- OWASP Password Storage Cheat Sheet – vhodné postupy (Argon2, scrypt, PBKDF2, bcrypt), salt/work faktory.
- OWASP Authentication Cheat Sheet – zásady pro zadávání hesel, délku, blacklisty a mechanismy blokování.
- BSI: Jak vytvářet bezpečná hesla – mj. dlouhá/složitá hesla a přístupové fráze; praktické tipy.
- BSI – tisk 31.01.2025 – žádné vynucené pravidelné změny hesel; upřednostňovat 2FA/Passkeys.
- distributed.net RC5 / aktuální stav proxy – názorný příklad vyčerpávajícího hledání a distribuovaného výpočetního výkonu.
Jak vytvářet bezpečná hesla
Zjistěte, jak vytvářet hesla, která odolají útokům hrubou silou.
Tipy pro bezpečná hesla