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 FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Š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“ 😀


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: