Heslo
Je vaše heslo bezpečné? Jak se dá heslo zjistit a kolik času útočník potřebuje, aby vaše heslo prolomil i s průměrným počítačem? Trochu si započítáme, ovšem nebudou to žádné náročné počty. Některé výsledky vás naopak mohou překvapit nebo přimět k zamyšlení.
Jak se dá zjistit heslo
Existuje několik způsobů, jak se může někdo, říkejme mu útočník, pokusit zjistit vaše heslo. Některé využívají důvěřivosti, naivity až hlouposti, jiné silný výpočetní výkon.
Phishing
Prvním způsobem je dnes často skloňovaný phishing (je to jen jiné hláskování anglického slova fishing = rybaření). Útočník se z vás snaží heslo vylákat například přes nastrčenou, důvěryhodně se tvářící, webovou stránku, na kterou vás odkáže třeba důvěryhodně se tvářícím emailem. Pokud se útočníkovi chytíte „na háček“, heslo mu tak vlastně poskytnete sami.
Proto například banky často upozorňují na to, že po vás nikdy heslo nebudou požadovat, a že jej máte zásadně vyplňovat pouze přes stránky banky (útočníci jsou schopni vytvořit stránku, která vypadá úplně stejně, ale její webová adresa je jiná). Je to jednoduchá zásada a jediná obrana.
Slovníkový útok
Druhým způsobem je tzv. slovníkový útok (dictionary attack). Hesla typu „laska“, „love“, „iloveyou“, „heslo“, „password“ jsou určena k téměř okamžitému prolomení. Existují databáze nejpoužívanějších či v jistém smyslu nejhloupějších hesel. Útočníkovi stačí odzkoušet několik nejpoužívanějších hesel a může (i když nemusí) slavit úspěch.
Vůbec, pokud heslo tvoří jedno slovo, které dává smysl, je méně bezpečné. Například taková čeština má odhadem více než 250 000 slov a všechna je porovnat s heslem není pro průměrný počítač žádný problém, jak dále uvidíme. Tím se také dostáváme k třetí metodě, jíž je hrubá síla.
Hrubá síla
Hrubou sílou v tomto případě nemyslíme násilí, i když o účinnosti této zavrženíhodné metody asi nelze pochybovat, ale následující, v principu naprosto jednoduchý, postup. Hrubá síla (brute force) je postup řešení úlohy (v našem případě rozluštění hesla), při kterém se systematicky vyzkouší všechny možnosti.
Některé úlohy mohou vyžadovat určitý klíč či algoritmus k jejich správnému vyřešení. Primitivní dosazování všech možností je teoreticky účinné, v praxi však problematické. Důvod, proč nelze vždy (s výhodou) využít hrubé síly, je, že často vyžaduje obrovský výpočetní výkon, a i tak může jít o časově velmi náročný proces. Čas potřebný k nalezení řešení často roste exponenciálně a i nejvýkonnějším počítačům by to mohla trvat léta.
Síla hesla
Co se týká možnosti prolomení hesla hrubou silou, záleží na tom, jak je silné, nebo slabé. Silné heslo je dobré heslo. Síla hesla je určena jednak jeho délkou, ale především počtem použitých znaků. Tabulka 1 ukazuje počty znaků pro různé složení hesla.
Síla hesla roste s tím, kolik v něm teoreticky použijete znaků. Například použijete-li pouze čísla (0 až 9 je 10 čísel) a vaše heslo má délku 6 znaků, existuje pouze 10 × 10 × 10 × 10 × 10 × 10 = 106 = 1 000 000 možností. Další možností je použít jen malá nebo jen velká písmena z anglické abecedy, kterou tvoří 26 znaků. Nejsilnější heslo je při použití malých a velkých písmen na střídačku, čísel a speciálních znaků. To ukáže Tabulka 2.
Tabulka 1: Znaky, které mohou tvořit heslo, a jejich počty
Počet možností, kterými lze heslo vytvořit
Než si prohlédnete Tabulku 2, mohli byste zkusit odpovědět na „populární“ dotaz z hodin matematiky: „Počet možností, kterými lze heslo vytvořit (při určité délce a počtu použitých znaků) označujeme jako kombinace, nebo jako variace? A s opakováním, nebo bez opakování?“
Heslo „hazard“ není totéž jako „drazah“ (hazard pozpátku), tedy záleží na pořadí znaků (zde pouze písmen), proto jde o variace. Doplňme, že u kombinací na pořadí nezáleží. Dostaneme-li například v karetní hře Oko desítku a pak eso, nebo napřed eso a pak desítku, nehraje to žádnou roli.
Mohou se některé znaky v heslo opakovat? Ano, vidíme, že písmeno „a“ se v našem ilustračním (velmi slabém) hesle vyskytuje dvakrát. Proto jde o variace s opakováním → kombinatorika srozumitelně a jednoduše. Tabulka 2 ukazuje počty variací pro různou délku hesla a v něm použité znaky.
Téměř každý používá internetové bankovnictví, kde vás banka nutí, aby heslo mělo alespoň 8 znaků a tvořilo jej alespoň jedno velké písmeno a speciální znaky. Rozdíl je zřejmý.
Kdybychom v hesle použili pouze čísla a mělo by 8 znaků, šlo by o pouhých 100 milionů variací (pouhých – z pohledu útočníka používajícího hrubou sílu):10 × 10 × 10 × 10 × 10 × 10 × 10 × 10 = 108 = 100 000 000
.
Použijeme-li pro stejně dlouhé heslo malá i velká písmena, čísla a speciální znaky, pak na každé pozici hesla může být celkem 95 různých znaků:95 × 95 × 95 × 95 × 95 × 95 × 95 × 95 = 958 = 6 634 204 312 890 620
.
To je 6 biliard 634 bilionů (něco přes 1 bilion Kč je množství peněz, které stát utratí za rok) 204 miliard 312 milionů 890 tisíc 620 → jak se pojmenovávají velká čísla. Počet možností (variací) nevzroste jen asi 9krát (95 znaků, z kterých lze vybírat namísto deseti), ale 66milionůkrát! To už je počet, za který by se nemusela stydět kdejaká číselná loterie.
Tabulka 2: Počty variací při různé délce hesla a použitých znacích
Poznámka: heslo by šlo ještě více zesílit zapojením písmen z české abecedy (háčky, čárky), tedy za předpokladu, že systém jejich použití podporuje/umožňuje.Čas potřebný k prolomení hesla
Počty všech možných variací samozřejmě mají zásadní dopad na čas potřebný k prolomení hesla – porovnáváním všech myslitelných variací. Záleží na rychlosti počítače (či počítačů) útočníka. Typy útoků dokonce mají svou stupnici A až F. Průměrný počítač s dvoujádrovým procesorem spadá do kategorie D. Nejvyšší typ útoku F znamená použití superpočítačů či mnoha propojených počítačů.
Uvažujme dále pouze průměrný počítač (2 jádra), který dokáže porovnat 10 milionů hesel za sekundu. Tabulka 3 ukazuje orientační časy potřebné k prolomení hesla (o různé délce a počtů znaků, které jej mohou tvořit) při této rychlosti počítače.
Zatímco heslo o 8 znacích, které tvoří jen čísla, by bylo prolomeno za pouhých 10 sekund, stejně dlouhé heslo za použití malých a velkých písmen, čísel a speciálních znaků, by mohlo odolávat až 21 roků! Slovo „hned“ v tabulce značí, že k prolomení hesla je třeba méně než půl sekundy.
Tabulka 3: Čas potřebný k prolomení hesla při použití průměrného počítače
Legenda: s = sekunda, m = minuta, h = hodina, d = den, r = rok.
Jak jsme se k výpočtům dostali? Vezměme opět jako příklad heslo o délce 8 znaků, které může tvořit 95 znaků.
Počet všech možných variací hesla je 958 = 6 634 204 312 890 620 hesel
.
Rychlost počítače (porovnávání hesel) je 10 000 000 hesel za sekundu.
Všechna hesla počítač porovná za:6 634 204 312 890 620 hesel ÷ 10 000 000 hesel/s = 663 420 431 sekund
.
Jedna hodina má 3600 sekund: 663 420 431 s ÷ 3600 s/h = 184 283 hodin
.
Den má 24 hodin: 184 283 h ÷ 24 h/d = 7678 dní
.
Rok má 365 dní: 7678 d ÷ 365 d/r = asi 21 roků
(všechny výpočty byly prováděny bez zaokrouhlování).
Tabulka 3 vám napoví, jak dlouho by mohlo útočníkovi trvat, než by odhalil vaše heslo…