Zpět na domů

Odolnost hesel: výpočty pro vývojáře

Článek rozebírá matematickou odolnost hesel s výpočty brute-force, hrozby slovníkových útoků a doporučení k ukládání (Argon2, sůl). Pro vývojáře: throttling, 2FA, unikátnost. Pro uživatele: passphrase a správci.

Výpočet odolnosti hesel: proč je délka nejdůležitější
Advertisement 728x90

Analýza síly hesel: výpočty a doporučení pro vývojáře

Hesla stále tvoří základní mechanismus ověřování díky jednoduché implementaci a přehlednosti pro uživatele. Přihlašovací jméno identifikuje účet, heslo potvrzuje znalost tajného klíče. I když existují alternativy jako hardwarové klíče, OTP, biometrie nebo WebAuthn, hesla dominují v systémech s nízkou průstupností.

WebAuthn například využívá asymetrické šifrování: soukromý klíč zůstává na zařízení, server ověřuje podpis veřejným klíčem. Biometrická data se ukládají lokálně a nepřenáší se na server, což minimalizuje riziko úniku dat.

Skutečná odolnost: matematické výpočty

Každé heslo je vystaveno bruteforce útoku – bezpečnost závisí na ekonomické nevýhodnosti útoku. Spočítáme čas potřebný ke zlomení pro různé konfigurace.

Google AdInline article slot

Pro 5-místný PIN (10⁵ = 100 000 kombinací) při 10 pokusech za sekundu: několik sekund. S botnetem 10 000 zařízení (100 000/sekunda) – méně než 9 minut pro 36-znakový abecední soubor (písmena + číslice, 36⁵ ≈ 52 milionů).

Rozšíření abecedy:

  • 62 znaků (velká/malá písmena + číslice): 62⁵ ≈ 916 milionů, ~2,5 hodiny s botnetem.
  • 95 znaků (+speciální znaky): 95⁵ ≈ 7,7 miliard, ~21 hodin.

Klíčový faktor – délka. Pro 8 znaků z 95: 95⁸ ≈ 6,6×10¹⁵, více než 2000 let při 100 000 pokusech/sekunda. I bez speciálních znaků (62⁸ ≈ 2,2×10¹⁴) – přibližně 70 let.

Google AdInline article slot

| Abeceda | Délka | Kombinací | Čas (100k/sek) |

|---------|-------|------------|----------------|

| 36 | 5 | 52 milionů | 9 minut |

Google AdInline article slot

| 62 | 5 | 916 milionů| 2,5 hodiny |

| 95 | 5 | 7,7 miliard | 21 hodin |

| 62 | 8 | 218 bilionů| 70 let |

| 95 | 8 | 6,6 kvintiliónů | 2000+ let |

Throttling je nezbytný: omezení počtu pokusů/IP nutí útočníky používat rozsáhlé botnety, což zvyšuje náklady.

Slovníkové útoky a vzory

Úplný bruteforce je neefektivní proti dlouhým heslům. Skutečnou hrozbou jsou slovníkové útoky a credential stuffing.

Příklady zranitelných hesel:

  • Qwertyuio1 – klávesový vzor.
  • Abcdefghi0 – posloupnost.
  • P@ssW0rD36 – leetspeak varianta.
  • Ghbdtn – QWERTY rozložení pro „Ahoj“.

Doporučení: fráze z 4–6 náhodných slov (slovník ~20 000: 20 000⁴ = 1,6×10¹⁷, desítky tisíc let zlomení). Vyhnout se citacím, používat oddělovače.

PIN kódy (4 číslice) nejsou chráněny odolností, ale omezením pokusů (3–10), s hardwarovou ochranou hashu.

Chyby vývojářů při ukládání hesel

Na serveru se hesla ukládají jako hash (bcrypt, Argon2, scrypt). Běžné chyby:

  • Ukládání v plaintextu nebo slabém MD5/SHA-1.
  • Chybějící salt – rainbow tabulky.
  • Slabý hash bez iterací (rychlý bruteforce GPU).
  • Žádný throttling nebo CAPTCHA.
  • Credential stuffing bez kontroly unikátnosti přihlašovacích údajů v databázích úniků (Have I Been Pwned?)

Správný stack: Argon2id s memory-hard parametry, jedinečný salt na uživatele, rate limiting (např. 5 pokusů/min/IP).

Praktická doporučení

Pro uživatele:

  • Unikátní heslo pro každý službu.
  • Délka ≥12 znaků nebo passphrase (4+ slova).
  • Správce hesel:

* Lokální (KeePassXC): plná kontrola, ruční synchronizace.

* Cloudové (Bitwarden): automatická synchronizace, hlavní heslo.

  • Zapnout 2FA (TOTP, ne SMS).

Pro vývojáře:

  • Vyžadovat passphrase nebo ≥16 znaků.
  • Hashovat pomocí Argon2 (p=2, m=64MB, t=3).
  • Rate limiting: exponenciální backoff.
  • Passkey/WebAuthn pro nové systémy.
  • Monitorovat úniky dat.

Co je důležité

  • Délka hesla je kritičtější než rozmanitost znaků: 95⁸ >> 62¹² v odolnosti.
  • Throttling + botnety = exponenciální nárůst nákladů útoku.
  • Passphrase z náhodných slov zajišťuje více než 10¹⁷ kombinací.
  • Ukládat pouze hash s salt a Argon2; plaintext = okamžitý kompromis.
  • Unikátnost hesel předejde credential stuffing.

— Editorial Team

Advertisement 728x90

Číst dál