Autentizace: Jak vytvořit bezpečnou passphrase?

Passphrase je sdílené tajemství, které se skládá z několika slov a je podstatně delší než běžné heslo.

Z informací uvedených na stránkách Ústavu pro jazyk český vyplývá, že čeština má kolem 200.000 slov, a nejmenší Slovník spisovné češtiny pro školu a veřejnost obsahuje zhruba 48.000 hesel představujících jádro spisovné slovní zásoby, přičemž průměrná délka slova je 5 znaků.

Na základě těchto informací můžeme prohlásit, že pokud by passphrase byla tvořena pouhými 3 slovy, tak by včetně dvou mezer měla délku 17 znaků, a to by znamenalo vyzkoušet zhruba 27^17 různých možností, což by trvalo až několik let. Ovšem útok nemusí probíhat jen hrubou silou a rozhodně nemusí být zkoušeny všechny možnosti, nýbrž může být použit algoritmus, který zohledňuje specifika daného jazyka, a nemusí být ani příliš sofistikovaný.

Takový algoritmus může např. zkoušet sestavit passphrase ze všech možných slov, která se nacházejí v daném slovníku. Jedná se o klasické variace, na rozdíl od lámání hesla, kde se používají variace s opakováním. Myslím, že pro stanovení všech možností můžeme předpokládat, že většina uživatelů nepoužije ve své passphrase vícekrát stejné slovo a pokud ano, tak se to na době potřebné k prolomení dané passphrase příliš neprojeví. Počet všech variací spočteme takto: n!/(n-k)!, přičemž „n“ je počet všech slov a „k“ je počet slov v passphrase.

Kdyby passphrase byla krátká věta, řekněme o pouhých 3 slovech, musel by útočník vyzkoušet 48.000!/(48.000-3)! variací. Taková passphrase by byla prolomena i na obyčejném počítači do několika málo dnů. Přidáme-li ještě jedno slovo, získáme passphrase o 4 slovech, což představuje 48.000!/(48.000-4)! variací a prolomení této passphrase by trvalo několik stovek let. Ovšem v případě odpovídající výpočetní kapacity je to otázka několika málo měsíců. Taková passphrase není bezpečná, a proto přidáme další slovo. Získáme tak passphrase o 5 slovech. Útočník by musel vyzkoušet 48.000!/(48.000-5)! variací, a prolomit takovou passphrase by i výkonnému botnetu čítajícímu 1 milión strojů trvalo kolem 20 let. Pro běžný počítač by to byl úkol na několik miliónů let.

Lze tedy passphrase o 5 slovech a průměrné délce 25 znaků považovat za bezpečnou? Zcela určitě ano, protože hrubou silou ani výše uvedeným způsobem není možné takovou passphrase prolomit v rozumném čase. Ovšem je tady jeden malý problém. Výše uvedený počet slov sice tvoří jádro spisovné slovní zásoby, ale to ještě neznamená, že všechna ta slova běžný člověk zná a především, že je i používá. Běžně se uvádí, že dospělý člověk používá kolem 5000 slov. To je dost podstatná informace, nemyslíte? Naprosto, neboť zcela zásadně ovlivňuje dobu potřebnou k prolomení takové passphrase.

Vyjdeme-li z našeho předpokladu, že passphrase je krátká věta o pouhých 3 slovech, stačilo by útočníkovi vyzkoušet jen 5.000!/(5.000-3)! variací. Taková passphrase by byla prolomena na obyčejném počítači v podstatě okamžitě. Přidáme-li ještě jedno slovo, získáme passphrase o 4 slovech, což představuje 5.000!/(5.000-4)! variací a prolomení této passphrase by trvalo několik dní. Taková passphrase není bezpečná, a ani přidáním dalšího slova si příliš nepomůžeme. V případě passphrase o 5 slovech by útočník musel vyzkoušet 5.000!/(5.000-5)! variací, a prolomení takové passphrase by síti o několika 100 strojů trvalo necelý rok. Pro běžný počítač by to byl úkol na několik set let.

Počet všech variací, které útočník musí vyzkoušet, však není n!/(n-k)!. Nezapomínejte, že mezi slovy se dělají běžně mezery a útočník neví, zda je passphrase obsahuje nebo ne, takže variace všech možných slov musí útočník vyzkoušet dvakrát, a to s mezerami a bez mezer, takže když napíšeme 2*n!/(n-k)! neuděláme chybu, ale také si tím příliš nepomůžeme, neboť doba potřebná k prolomení se prodlouží jen dvojnásobně.

Mohli bychom ještě analyzovat četnost výskytu jednotlivých slov, tak jak je uvádí frekvenční slovník a optimalizovat náš algoritmus tak, aby začal nejprve zkoušet ona ustálená a nejčastější slovní spojení a pak teprve ta méně častá a tím podstatně zvýšit teoretickou rychlosti lámání. Jenže uživatelem vytvořená passphrase nemusí obsahovat jen slova spisovná, nýbrž může obsahovat i slangové a odborné výrazy, slova z jiných jazyků, zkomoleniny, úmyslné gramatické chyby, velká písmena, čísla a speciální znaky. Navíc oproti angličtině, kde je pořadí slov ve větě pevně dáno a podoba slova se nemění, tak v češtině toto neplatí.

Na tomto místě je nutné znovu zdůraznit, že útočník zpravidla nikdy neví, jak dlouhou passphrase si uživatel zadal, a tak musí zkoušet všechny variace. Passphrase je stejně jako heslo v systému uložena v podobě hashe, a tak se jaksi nedá v průběhu lámání zjistit, zda se lámání ubírá tím správným směrem. Algoritmus nemá jak poznat, že se mu podařilo první slovo použité v passphrase uhádnout a na základě této informace odvodit zbytek. Útočník proto musí zkoušet celé věty. Ty si samozřejmě může vygenerovat předem nebo je generovat v průběhu hádání.

V okamžiku kdy vaše passphrase nebude obsahovat slova v takové podobě, v jaké jsou uvedena ve slovníku, tak v podstatě nemůže být prolomena jinak než hrubou silou a potom je nutné ji považovat za téměř stejně bezpečnou jako komplexní heslo o dané délce. Toho lze dosáhnout i jinak, než že budete používat velká a malá písmena, čísla a speciální znaky. Stačí třeba v každém slově zdvojit poslední písmeno a nebo…, ale to už necháme na vás.

Závěr: Pokud bychom měli odpovědět na otázku z nadpisu článku, tak se domníváme, že passphrase by se měla skládat minimálně z 5 slov, ale nemělo by se jednat o běžně používanou frázi, známý slogan, oblíbenou písničku, apod. Pokud se budete tímto doporučením řídit, tak i sofistikovaný slovníkový útok proti vaši passphrase velice pravděpodobně selže a vámi zvolenou passphrase se nepodaří nikomu v reálném čase prolomit.



Pokud vás tento příspěvek zaujal, sdílejte ho!
Share on Facebook
Facebook
Share on LinkedIn
Linkedin
Tweet about this on Twitter
Twitter
Email this to someone
email
Print this page
Print

Štítky:

  1. admin

    Pokud jste si jako vaší passphrase zvolili nějakou větu, tak pro zvýšení její bezpečnosti můžete také změnit pořadí slov v této větě.

    Pokud si potřebujete passphrase zapsat, tak se zamyslete nad tím, zda si raději nezapsat otázku, na kterou by správnou odpověď představovala právě vaše passphrase.

  2. Jarda

    A co passphrase v latině? Nejen citáty ale i lékařskou anamnézu.

  3. KinDo

    autor zabudol spomenut sklonovanie / casovanie. na to uz moze byt slovnikovy utok kratky …

  4. Rybajz

    Tak když jen z příspěvků na soc. sítích, vyplyne spousta passphrase které jsou neprolomitelné
    př:
    „gdyž fčera lojza s wojtow wohnuly anču“ :D


K článku “Autentizace: Jak vytvořit bezpečnou passphrase?” se zde nachází 4 komentáře.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: