Heslo „this is fun“ je desetkrát bezpečnější než j4fS<2

Všichni nás učí, že jediné bezpečné heslo je to, které se skládá z hromady exotických znaků a nikdo si jej nikdy nezapamatuje. Možná to ale není čistá pravda – zvláště na internetu.

Před čtyřmi lety napsal Thomas Baekdal článek, který dodnes budí emoce, nesouhlasné odmítání i přikyvování, že by na tom možná mohlo něco být. Pakliže vám blog Baekdal.com nic neříká, vězte, že se tu v létě 2007 objevil zápisek, který popírá snad všechna bezpečnostní pravidla, kterými nás den co den bombardují správci počítačových sítí, odborníci i technicky zaměřená média. Na článek se od té doby podívalo více než milion čtenářů a před pár dny zažil malou renesanci, všiml si ho totiž i respektovaný bezpečnostní podcast Security Now. Článek se jmenoval „The Usability of Passwords“ a já se k němu dnes vrátím.

Jak bezpečné je heslo o šestnácti znacích?

Jaké heslo používáte pro připojení k Facebooku, Twitteru, Googlu, Windows Live či jinému velkému internetovému oblaku? Pokud se řídíte tradičními bezpečnostními pravidly, mohlo by takové heslo vypadat třeba 7p+r4Ep8_78@bk01. Toto heslo je velmi bezpečné, obsahuje totiž malé i velké alfanumerické znaky a znaky speciální. Pokud si ještě vzpomínáte na středoškolskou kombinatoriku, jistě si dokážete spočítat, kolik možných alternativ takové heslo skýtá. Pokud si na nic podobného už nevzpomínáte, vězte, že celkový počet kombinací by byl roven číslu 107 tisíc na šestnáctou – tedy pokud by mohl každý ze šestnácti znaků nabývat libovolné hodnoty ze znakové sady Unicode, která teoreticky čítá právě 107 tisíc znaků – prakticky všechny ze všech světových abeced a pak znaky speciální. To zpravidla možné není, ale i když budete pracovat pouze s písmeny, číslicemi a nějakým tím podtržítkem, tečkou nebo třeba znaménkem plus, i tak se bude jednat při této délce o astronomické počty.

Problém spočívá v tom, že takové heslo si normální člověk bez fotografické paměti prostě nezapamatuje. V lepším případě si heslo uloží do zabezpečené databáze – peněženky hesel – chráněné nějakým hlavním heslem, v tom horším si ho pak napíše na žlutavý lístek a přilepí k monitoru. Z podstaty věci není ideální ani jeden způsob. Pokud jednou omylem smažete databázi s hesly, už se nikam nedostanete, a pokud do databáze pronikne hacker, dostane se naopak naprosto ke všemu. Podobné je to s papírovými upomínkami.

Jak se dnes odhalují hesla

Nyní se už pomalu dostávám k článku na webu Baekdal.com. Nejprve si ale musím položit otázku, jak se dnes odhalují hesla. Obecně se vedle phishingu, keyloggerů, sociálního inženýrství atp. používají dva způsoby: slovníkový útok a útok brutální silou v komunitě známý jako brute-force. V tom prvém případě je (třeba) webová služba bombardovaná typickými slovy daného jazyka a předpokládá se, že nešťastník jako heslo používá třeba jméno partnera nebo nějaké vcelku běžné slovo. Hrubá síla je pak už skutečně hrubá a připomíná odhalování textů schovaných v kontrolních součtech – v hashi. To je už ale něco jiného, používají se zde takzvané duhové tabulky – rainbow tables – a docela polopatě jsem se tomu věnoval v článku „Jak prolomit heslo do Windows XP za pět sekund“.

Brute-force tedy v podstatě webovou službu bombarduje posloupností znaků tak dlouho, dokud se netrefí a server mu neotevře vrátka. Pokud by se vaše heslo skládalo ze tří znaků abc, robot by v podstatě zkoušel všechny možné textové kombinace od aaa, přes aba, abb až po abc. V tomto případě by to bylo ještě poměrně jednoduché a rychlé, stačí ale přidat několik dalších písmen, uvažovat i čísla nebo nedej Bože speciální znaky a počet kombinací opět poskočí do astronomických hodnot.

Web má jiná pravidla než heslo na počítači

Pokud byste se snažili takto odhalit heslo na lokálním počítači, který by neměl žádné bezpečnostní pojistky, výkonný domácí stroj s rychlou pamětí a SSD by zvládl tisíce kontrol za jedinou sekundu. Thomas Baekdal se ale věnoval webovým službám a tam jde matematická teorie stranou. Většina služeb je v rychlosti nejrůzněji omezena. Buď samotnou skutečností, že je kdesi na internetu a komunikace díky síťové režii trošku trvá, nebo jednoduše tak, že omezuje počet možných přihlášení za určitý čas na určitý účet. Jinými slovy, pokud by mělo heslo do Facebooku sto miliard možných kombinací, správcům sítě by bylo asi docela podezřelé, že se kdosi (robot) snaží přihlásit k účtu tisíckrát za sekundu a komunikaci by zablokovali. Tuto činnost zpravidla za člověka udělá už firewall nebo nějaký jiný bezpečnostní prvek, Baekdal tedy rychlost prolamování hesla omezil na teoretických sto pokusů za sekundu. A zde už jdou veškeré výpočetní snahy skutečně stranou.

playstation.png
Na webu je vám superpočítač složený z herních konzolí k ničemu. Nejde zde o rychlost, tu
totiž neurčujete vy a výkon vašeho počítače, ale internetový server.

Takové heslo sun by při této rychlosti robot pomocí techniky brute-force odhalil za tři minuty, anglickým slovníkovým testem (všechna anglická slova) pak nejhůře za hodinu a půl. Slůvko sun je tedy jako řádné heslo zhola nepoužitelné, a tak šel Baekdal dál a spočítal, jak dlouho by robot odhadoval hesla orange, jskerv, ergs43 a nakonec nejhůře zapamatovatelnou kombinaci j4fS<2. Zatímco v případě pomeranče by k odhalení u omezené slovníkové databáze nejčastějších slov došlo už za pouhé tři minuty, u krkolomného j4fS<2 by heslo technika brute-force v nejhorším případě odhalila až za 219 let. V té době by ale nežila ani oběť, ani útočník. Samozřejmě byste mohli útok rozdělit na několik paralelních částí a třeba i desítky počítačů, bylo by vám to ale k ničemu, uživatelský účet by byl totiž chráněný onou stovkou pokusů přihlášení za jednu sekundu. Většina skutečně bezpečných služeb přitom už dnes potenciálního útočníka stejně jako bankomat zablokuje po mnohem menším počtu chybných pokusů a dá mu docela často i časový ban.

 

Heslo sun se skládá pouze ze tří písmen, což se může zdát snadné, stále je tu ale 326 možných kombinací, tedy 17 576 pokusů brute-force, pokud budeme uvažovat pouze malá anglická písmena.

 

This is fun

Po malém technicko-teoretickém úvodu se konečně dostávám k pointě, která už necelé čtyři roky drásá nervy nejednomu bezpečnostnímu odborníkovi. Thomas Baekdal si totiž položil otázku, jak bezpečné by asi bylo zdánlivě primitivní heslo this is fun. Co myslíte? Na první pohled je to skutečně velmi jednoduché trojsloví, které je i snadno zapamatovatelné, každý robot jej tedy musí velmi rychle odhalit. Nemá přeci žádné speciální znaky, klikyháky a kdo ví co ještě. Chyba lávky, tak tomu přeci vůbec není.

Opět se vrátím na začátek a připomenu, že robot, který bombarduje službu, vůbec nezná možnou strukturu hesla. Nemá potuchy o tom, jestli se skládá z nahodilých klikyháků, nebo jsou to tři docela běžná slova za sebou. A už vůbec netuší, že jsou oddělena mezerou. Slovníkový i brute-force robot je vlastně absolutně hloupý a webovému serveru předhazuje nahodilé možnosti, přičemž doufá, že jedna z nich bude správná.

2 537 let na webu

Pokud uvážíme stejná pravidla jako doposud a především rychlost, slovníkovým útokem by robot heslo this is fun odhalil za neskutečných 2 537 let. Pochopitelně by se tak mohlo stát i dříve, protože nevíme, jakou by měl robot posloupnost kombinací a je tu jistá šance snad jedné biliontiny, že by začal zrovna trojslovím this is fun odděleným mezerou, ale to je už větší ta pravděpodobnost, že se zítra probudíte jako březí slonice. Kdybyste použili menší slovníkovou databázi s tisícem slov (v nichž by ke všemu byla i tato tři slova – slovo fun přitom mezi těmi nejčastějšími anglickými slůvky není), stále byste měli podle Baekdala miliardu možných kombinací a prolamování by se protáhlo na třetinu roku, přičemž byste prolamovali dnem i nocí bez přestání, což je naprosto teoretická záležitost v praxi nemyslitelná (někdo by si toho jednoduše všimnul).

Pointou celého článku z roku 2007 byl tedy předpoklad, že trojsloví this is fun je jako heslo bezpečnější než zdánlivě nesrozumitelný a nerozpoznatelný text j4fS<2. Je tomu skutečně tak – už jen při pohledu na délku hesla, což je zpravidla ten nejdůležitější parametr, jelikož exponenciálně zvyšuje počet možných kombinací až do astronomických čísel biliard biliard kombinací.

531 855 448 467 let na webu

Angličtina má v zásobě několik set tisíc slov, stačí tedy po jistotu použít třeba ještě fluffy is puffy a slovníkový robot bude mít podle Baekdala vystaráno na 39 milionů let. Pokud budete chtít být skutečně originální, kombinaci du-bi-du-bi-dub brute-force rozlouskne v nejhorším případě až za 531 855 448 467 let. V té době však už nebude existovat naše sluneční hvězda a docela možná ani nám známý vesmír. Především ale nebude existovat Google či Microsoft a pozůstatek lidské evoluce bude přežívat v inteligentní telekinetické plastelíně levitující v 35. dimenzi nám doposud neznámého kosmu. To je už ale spíše téma pro předvídání hodně vzdálené budoucnosti na VTM.

This is fun není jednoduché heslo

Článek vzbudil hromadu reakcí. Jednou z nich byla třeba výtka, že i když se slovíčko fun mezi těmi nejčastějšími anglickými slovy nevyskytuje, this a is jsou naopak ta nejběžnější. Útočník by tedy odhalil 2/3 hesla a ten zbytek – fun – zjistí pomocí techniky brute-force. Čtenáři Živě.cz jsou ale inteligentní, už teď se tedy klepou na čelo a nechápavě kroutí hlavou, takhle to totiž přeci nefunguje. Jak už jsem psal o pár odstavečků výše, útočník o heslu neví naprosto nic, musí ho tedy uhodnout jako celek. Pokud uživatel použije více slov vedle sebe, slovníkový útok je v podstatě k ničemu. Robot by totiž musel nejprve vyzkoušet všechny možné kombinace z databáze a teprve pak by mohl zkoušet, jestli se třeba heslo neskládá z více slov z databáze za sebou. Mohlo by ho snad ještě napadnout, že slova odděluje mezera a použil by ji jako první oddělovač, pokud byste ale místo mezery použili hvězdičku, můžete už hesla skládat klidně z naprosto běžných slov – robot se k ní jako k možnému oddělovači poměrně častých slov dostane až třeba při 500 000 000 000. zkoušce.

O čem byl tento článek a především jeho anglická inspirace? Baekdal byl především mnohými nepochopen. Schválně jsem použil stejně zavádějící název článku, jak to udělala hromada zahraničních médií, o to zde ale vlastně vůbec nejde. „This is fun“ je bezpečnější proto, že je to prostě delší text (sic teď už asi zkompromitovaný a dostal se jako celek do slovníkových databází útočníků). Pokud ale k j4fS<2 přidáte několik málo znaků, aby se jednalo třeba o jedno písmeno delší heslo než to naše jednoduché a zábavné, bude opět nesčetněkrát bezpečnější.

Thomas Baekdal se už od začátku věnoval pouze heslům v mráčku, která jsou z tohoto úhlu pohledu mnohem bezpečnější. Nemůžeme je odhalovat rychlostí stovek tisíců testů za sekundu, jelikož při každém testu komunikujeme se serverem kdesi na internetu, který má svá pravidla. Doba odhadnutí správné kombinace se tedy skutečně protahuje nejméně tisícinásobně a ve většině případů je to nakonec i prakticky nemožné.

Internet má svá rizika: čerstvá kauza PlayStation

Abyste si ale nemysleli, že snad tento článek vznikl na objednávku mráčkového lobby, i internet má svá rizika. Pokud vám někdo zcizí šifrovaný archiv z počítače, může jej zvesela prolamovat doma v laboratorních podmínkách a tisíckrát rychleji než při prolamování hesel do webové služby. Pokud ale bude webová služba špatně zabezpečená a útočníkovi se podaří získat třeba kontrolní součty hesel, v jejichž formě se hesla pro účely přihlašování zpravidla uchovávají, spíše jednodušší a krátká hesla, která odpovídají právě jednomu kontrolnímu součtu, už může díky duhovým tabulkám odhalit relativně rychleji. O tom je už ale jiný článek na Živě.cz.

rainbow table.png
Webový prolamovač kontrolních součtů MD5 pomocí duhové tabulky
najdete třeba na webu gromweb.com. Poradí si s obecně známými slovy
včetně hromady českých – zvláště místních názvů.

Něco podobného se v posledních dnech stalo pravděpodobně na serverech spjatých s herní konzolí PlayStation. Z webových databází herního systému unikla hormada osobních údajů blíže nespecifikovaného počtu uživatelů, přičemž se spekuluje, že se to mohlo týkat i toho nejhoršího – čísel kreditních karet hráčů. Čerstvé kauze se věnuje TechCrunch.

Jaké je vaše heslo? Používáte opticky složitá hesla, která ale mohou být v důsledku stejně bezpečná jako několik běžných slov za sebou, nebo se ke svému čtenářskému profilu na Živě.cz připojujete s tradiční kombinací 12345 a slůvky bobik, franta, slunicko, pepa, 1984 aj.? Podělte se v diskuzi pod článkem. A nezapomeňte: prolamovací roboti nejsou inteligentní, jsou vlastně úplně hloupí a primitivní. Jejich jediná síla spočívá v ohromné rychlosti opakování jednoduchých úkonů.

Diskuze (128) Další článek: Facebook spouští vlastní slevový server

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,