brút forsTakéÚtok hrubou silou, Brute force, BruteforceZákladní

Definice

Brute force útok je metoda prolomení hesla, klíče nebo jiného tajemství systematickým zkoušením možných kombinací, dokud útočník nenarazí na tu správnou. Nevyužívá žádnou chybu v algoritmu, spoléhá se čistě na výpočetní výkon a čas. Obranou je délka a entropie tajemství, pomalé hashovací funkce, omezení počtu pokusů a druhý faktor.

Kategorie: KyberbezpečnostAktualizováno

Nezaměňujte: V algoritmizaci znamená brute force také naivní postup, který prochází všechna možná řešení úlohy; v bezpečnosti jde o útok na tajemství.

Než se na to spolehnete: Wikidata QID pro Brute-force attack jsem uvedl z paměti, prosím ověřit. Konkrétní rychlosti lámání (miliardy hashů za sekundu u MD5/SHA-1 na GPU) jsou řádové odhady bez uvedení konkrétního hardwaru, což je záměrné.

Proč hrubá síla vůbec funguje

Brute force útok vychází z jednoduché úvahy: každé heslo i každý kryptografický klíč pochází z konečné množiny hodnot. Když útočník dokáže ověřit, zda je konkrétní hodnota správná, může je zkoušet jednu po druhé. Bezpečnost tedy nestojí na tom, že by útok nešel, ale na tom, že by trval nepřijatelně dlouho.

Klíčovým parametrem je entropie, tedy počet reálně možných variant. Čtyřmístný číselný PIN má 10 000 kombinací a padne během okamžiku. Náhodné dvanáctimístné heslo ze všech tisknutelných znaků má řádově 10^23 variant a při současném hardwaru je mimo dosah. Každý přidaný znak násobí prostor, proto délka pomáhá víc než míchání speciálních znaků.

Online versus offline scénář

Online brute force běží proti živé službě: útočník posílá pokusy o přihlášení na přihlašovací formulář, API nebo SSH. Rychlost limituje síť a samotná aplikace, takže obrana je poměrně snadná (viz rate limiting, prodlevy, blokace IP, CAPTCHA).

Offline brute force je nebezpečnější. Útočník už má k dispozici databázi hashů hesel z úniku a zkouší je lokálně na vlastním hardwaru, bez jakéhokoli omezení. Grafické karty a specializované ASIC čipy zvládají u rychlých funkcí jako MD5 nebo SHA-1 miliardy pokusů za sekundu. Právě proto se hesla nikdy neukládají rychlou hashovací funkcí, ale záměrně pomalou a paměťově náročnou.

Varianty, které nejsou čistě slepé

  • Slovníkový útok: zkouší se seznam reálně používaných hesel z minulých úniků, typicky s obměnami (Heslo123!, Praha2024).
  • Credential stuffing: dvojice e-mail a heslo z jedné prolomené služby se strojově zkoušejí jinde, protože lidé hesla opakují.
  • Password spraying: jedno pravděpodobné heslo proti tisícům účtů, aby útok nespustil zamykání konkrétního účtu.
  • Rainbow tables: předpočítané tabulky hash a vzor, které maří náhodná sůl (salt) u každého hesla.

Co útok reálně zdrží

Na straně ukládání hesel patří ke standardu funkce navržené jako pomalé: Argon2id, scrypt nebo bcrypt s dostatečným počtem iterací. Cílem je, aby jedno ověření trvalo desítky až stovky milisekund. Legitimní uživatel rozdíl nepozná, útočníkovi to sníží průchodnost o mnoho řádů. Nutná je náhodná sůl pro každý záznam a u citlivých systémů i tajný pepř uložený mimo databázi.

Na straně aplikace pomáhá exponenciálně rostoucí prodleva po neúspěšných pokusech, sledování pokusů podle účtu i podle zdroje, druhý faktor a zákaz hesel, která se objevila v známých únicích. Kontrola proti seznamu úniků bývá účinnější než vynucování složitých pravidel, protože ta lidi tlačí k předvídatelným vzorům.

Hrubá síla mimo hesla

Stejný princip se používá i jinde: hádání identifikátorů objektů v API, hledání skrytých adresářů, zkoušení PIN kódů platebních karet nebo prolamování šifrovacích klíčů. Proto by identifikátory v URL neměly být sekvenční a resetovací token musí být dostatečně dlouhý a náhodný. Pravidelný penetrační test odhalí místa, kde se počet pokusů nikdo neobtěžoval omezit.

Příklady z praxe

  1. Credential stuffing proti e-shopu

    Provozovatel e-shopu si všimne, že za noc přišlo 400 000 pokusů o přihlášení z tisíců různých IP adres, každá zkusí jen pár účtů. Nejde o slepé hádání, ale o dvojice e-mail a heslo z cizího úniku. Zavedení druhého faktoru pro přístup k uloženým platebním údajům a blokace hesel ze seznamu úniků útok znehodnotí, i když požadavky pokračují.

  2. Rozdíl mezi rychlým a pomalým hashem

    Stejné heslo uložené SHA-256 a bcryptem se z pohledu offline útoku chová úplně jinak. SHA-256 zvládne běžná grafická karta v řádu miliard pokusů za sekundu, bcrypt s vyšším cost faktorem jen tisíce. Ukázka v Node.js ukazuje, že náklad na ověření se nastavuje jedním parametrem.

    import bcrypt from 'bcrypt';
    
    // cost 12 = 2^12 iterací, ověření trvá ~200 ms
    const hash = await bcrypt.hash('spravne-heslo', 12);
    
    const ok = await bcrypt.compare(pokus, hash);
    if (!ok) {
      await zaznamenejNeuspesnyPokus(ucet, ip);
    }

Časté omyly

MýtusHeslo se speciálními znaky a číslicemi je bezpečné, i když je krátké.
Ve skutečnostiOsmiznakové heslo s vykřičníkem a číslicí padne offline útoku rychleji než náhodná šestnáctiznaková fráze z malých písmen. Prostor kombinací roste exponenciálně s délkou, zatímco přidání sady znaků ho jen násobí konstantou. Navíc lidské obměny typu Heslo123! už jsou ve slovnících útočníků.
MýtusKdyž zablokujeme účet po pěti neúspěšných pokusech, brute force je vyřešený.
Ve skutečnostiZamykání účtů řeší jen online útok a samo o sobě otevírá cestu k odepření služby: útočník může cíleně zamykat cizí účty. Proti password sprayingu ani proti offline útoku na uniklou databázi hashů zamykání nepomůže vůbec.
MýtusNaše hesla jsou hashovaná, takže únik databáze není problém.
Ve skutečnostiZáleží na tom, jakou funkcí. Hashe z MD5, SHA-1 nebo SHA-256 bez soli se u běžných hesel lámou masově a rychle. Bezpečné je pouze pomalé odvození klíče typu Argon2id, scrypt nebo bcrypt s náhodnou solí u každého záznamu.

Časté dotazy

Jak dlouho trvá prolomit heslo hrubou silou?
Doba prolomení závisí na entropii hesla, použité hashovací funkci a hardwaru útočníka. Šestimístné číselné PINy padnou během sekund, osmiznakové heslo uložené rychlým hashem jako SHA-256 v řádu hodin až dní na jedné grafické kartě. Naopak náhodná fráze o dvanácti a více znacích uložená bcryptem nebo Argon2id se dostává do řádů, které nemají praktický smysl. Konkrétní čísla z tabulek na internetu berte opatrně: platí jen pro konkrétní kombinaci algoritmu a hardwaru v době, kdy tabulka vznikla.
Pozná aplikace, že proti ní běží brute force útok?
Detekce brute force útoku se opírá o metriky, ne o jednotlivý požadavek. Podezřelý je prudký nárůst neúspěšných přihlášení, mnoho různých účtů z jedné IP nebo naopak jeden účet z mnoha adres, nízká míra úspěšnosti a neobvyklý user agent. Distribuovaný credential stuffing se maskuje tím, že každá adresa udělá jen pár pokusů, proto se sleduje i poměr úspěšných a neúspěšných přihlášení na úrovni celé aplikace. Bez centrálního logování pokusů zůstane útok neviditelný.
Chrání dvoufaktorové ověření proti brute force útoku?
Dvoufaktorové ověření brute force útok neznemožní, ale odpojí uhodnuté heslo od skutečného přístupu. Útočník sice může heslo najít, k přihlášení ale potřebuje ještě druhý faktor. Pozor na to, že samotný druhý faktor bývá krátký: šestimístný TOTP kód má milion variant, takže i ověření kódu musí mít přísný limit pokusů a krátkou platnost. Nejsilnější variantou jsou hardwarové klíče podle standardu FIDO2 nebo passkeys, které heslo nahradí kryptografickým párem klíčů.
Je brute force útok trestný čin?
Systematické zkoušení hesel proti cizímu systému spadá v České republice pod trestný čin neoprávněného přístupu k počítačovému systému a nosiči informací podle trestního zákoníku. Nerozhoduje, zda útok uspěl, ani zda šlo o pouhé testování. Legální je takové jednání pouze na základě písemného pověření provozovatele, typicky v rámci penetračního testu s jasně vymezeným rozsahem a časovým oknem. Bug bounty programy tento souhlas udělují ve svých pravidlech.

Zdroje

  1. OWASP Cheat Sheet Series: Password Storage(otevře se v novém okně)OWASP
  2. NIST Special Publication 800-63B: Digital Identity Guidelines, Authentication and Lifecycle Management(otevře se v novém okně)NIST, 2017
  3. OWASP Authentication Cheat Sheet(otevře se v novém okně)OWASP
  4. Brute-force attack(otevře se v novém okně)Wikipedia

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.