Ako dlho trvá prelomiť heslo a prečo je dĺžka dôležitejšia než zložitosť
Rada, ktorú počul takmer každý, znie: minimálne osem znakov, veľké aj malé písmená, číslica a špeciálny znak. Táto rada vznikla v roku 2003 v odporúčaní amerického úradu NIST a jej autor Bill Burr ju v roku 2017 verejne označil za chybu. NIST ju v novej verzii dokumentu nahradil odporúčaním, ktoré kladie dôraz na dĺžku a zakazuje vynútené pravidelné zmeny hesiel.
Prečo sa zložitosť neosvedčila
Dôvod je jednoduchý. Keď človeku prikážete použiť veľké písmeno, číslicu a špeciálny znak, správa sa predvídateľne. Veľké písmeno dá na začiatok, číslicu a výkričník na koniec. Z hesla heslo vznikne Heslo1!. Útočník, ktorý láme heslá, presne tieto pravidlá pozná a jeho nástroj ich aplikuje automaticky.
Nástroje ako hashcat nepracujú tak, že by skúšali znak po znaku od začiatku abecedy. Pracujú so slovníkom a s pravidlami, ktoré slová zo slovníka mutujú presne tým spôsobom, akým ich mutujú ľudia. Nahradia písmeno a číslicou 4, s číslicou 5, pridajú rok na koniec. Sada takýchto pravidiel má rádovo desiatky tisíc položiek a prejde sa za zlomok času.
Čo naozaj rozhoduje
Rozhoduje entropia, teda počet možností, z ktorých heslo pochádza. A entropia rastie s dĺžkou exponenciálne, kým s pridaním jedného typu znaku rastie len lineárne.
| Heslo | Z čoho pochádza | Približná entropia |
|---|---|---|
Heslo1! | bežné slovo plus známa mutácia | pod 20 bitov |
xK9#mQ2v | 8 náhodných znakov zo 72 | asi 49 bitov |
bicykel-kotva-svetlo-riadok | 4 náhodné slová zo slovníka 8 000 slov | asi 52 bitov |
bicykel-kotva-svetlo-riadok-piesok-mesto | 6 náhodných slov | asi 78 bitov |
Štvorslovná fráza má teda vyššiu entropiu než osem náhodných znakov, a pritom sa dá zapamätať. Podmienka je, že slová musia byť naozaj náhodné. Veta, ktorú si vymyslíte sami, náhodná nie je, lebo vychádza z toho, ako hovoríte a na čo práve myslíte.
Prečo sa nedá povedať jedno číslo
Otázka „ako dlho trvá prelomiť heslo“ nemá jednu odpoveď, lebo výsledok závisí od toho, ako je heslo uložené na strane služby. Pri rýchlom hashi ako MD5 alebo SHA-1 zvládne bežná grafická karta desiatky miliárd pokusov za sekundu. Pri algoritme navrhnutom na ukladanie hesiel, ako je bcrypt, argon2 alebo scrypt, klesne rovnaký hardvér na desaťtisíce pokusov za sekundu, teda o šesť rádov nižšie.
Čo z toho vyplýva prakticky
- Dĺžka pred zložitosťou. Pri fráze zo štyroch a viac náhodných slov sa o špeciálne znaky netreba starať.
- Náhodnosť musí vytvoriť stroj, nie hlava. Generátor v správcovi hesiel je na to.
- Heslo meňte vtedy, keď je dôvod, teda pri podozrení na únik. Vynútená zmena každé tri mesiace vedie len k tomu, že ľudia pripisujú na koniec poradové číslo.
- Najdôležitejšie je neopakovať heslá. Pri úniku z jednej služby útočník skúsi tú istú kombináciu všade inde, čo je útok známy ako credential stuffing.
Ak si chcete overiť, či sa vaše prihlasovacie údaje už neobjavili v úniku, pozrite si článok Ako zistiť, či vám uniklo heslo. O nástroji, ktorý za vás vyrieši dĺžku aj neopakovanie naraz, píšeme v článku Správcovia hesiel.
Časté otázky
Je fráza zo štyroch slov bezpečnejšia než osem náhodných znakov?
Áno, ak slová vybral generátor. Štyri náhodné slová zo slovníka s 8 000 položkami dávajú asi 52 bitov entropie, osem náhodných znakov zo 72 asi 49 bitov. Veta, ktorú si vymyslíte sami, náhodná nie je.
Treba heslá meniť každé tri mesiace?
Nie. NIST toto odporúčanie zrušil v publikácii SP 800-63B, pretože vedie k predvídateľným obmenám typu pripísania poradového čísla. Heslo meňte pri podozrení na únik.
Prečo nestačí pridať číslicu a výkričník?
Lebo nástroje na lámanie hesiel pracujú so slovníkom a pravidlami, ktoré presne tieto ľudské obmeny napodobňujú. Sada pravidiel má desiatky tisíc položiek a prejde sa za zlomok času.