Know-how / Bezpečnost hesel

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:

Možné kombinace = (znaková sada)délka hesla

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á zMožné kombinace (vzorec)Potřebný čas (při 2 mld./s)
5 znaků
3 malá písmena, 2 číslice
(53) × 263 × 10217 576 0000,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

Jak vytvářet bezpečná hesla

Zjistěte, jak vytvářet hesla, která odolají útokům hrubou silou.

Tipy pro bezpečná hesla