Ano, vím, správně by tam mělo být svá hesla. To je schválně.
Kdo myslíte, že má přístup k vašim heslům? Vytváříte hesla správně? A víte, že si je vůbec nemusíte pamatovat? Odpovědi na tyto otázky, i na všechny ty další, bych vám chtěl naznačit v následujících slajdech. Tyhle poznámky jsou jen v této online verzi, v původní prezentaci chybí.
Takže především, vaše hesla byste měli znát vy sami. Určitě je zná také web nebo aplikace, do které se přihlašujete, kvůli ověření. Daná aplikace má také vaše heslo v nějaké formě uloženo v databázi a kvůli bezpečnostním chybám mohou mít přístup k této databázi i …
Normální lidi. Jako vy. Nebo jako já. Nebo vlastně kdokoliv. Je dobré počítat s tím, že k nějaké té databázi mají přístup a zařídit se podle toho. Když mizera získá databázi, ve které je nějak uloženo vaše heslo, může se stát, že to vaše heslo zjistí, protože je tam uloženo nevhodně.
Hesla by se do databáze měla ukládat tzv. hashovaná. Hashovací funkce vyrábí otisk hesla, ze kterého nejde původní heslo získat. Je to něco jako otisk prstu člověka – z něj taky člověka zpátky nevyrobíte. Hashovacích funkcí je mnoho, některé jsou vhodné pro ukládání hesel a některé ne. Ty výše uvedené jsou ty nevhodné a je celkem jedno, jak je použijete. Jsou zkrátka příliš rychlé a tak je možné vytvářet miliony otisků různých slov či kombinací písmen za vteřinu a porovnávat je s otiskem, který mizera získal z databáze a dříve nebo později původní heslo takto zjistit. Správné ukládání hesel je rozsáhlé téma, které se nám sem nevejde a pokud vás zajímá více, tak vás raději odkážu na moji prezentaci z konference Devel.cz nebo vás rád přivítám na školení Bezpečnost PHP aplikací (nejbližší termín: termín zatím nevypsán). Nebojte, toto je nejvíc technický slajd, dál to bude zas srozumitelné.
Jak takové nevhodné ukládání hesel v praxi vypadá? Takhle. Pixel Federation je vcelku úspěšná slovenská firma, která vytváří online hry. Taky jsem ji neznal, nebojte. Do podvědomí mizerů i bezpečnostních expertů se zapsala v prosinci 2013, kdy někdo z její databáze získal e-mailové adresy a hesla přibližně 38 tisíc uživatelů. Nic výjimečného, podobné případy se objevují dnes a denně. Pixel Federation však mizerům usnadnila práci, hesla totiž nebyla správně hashována.
Data, která byla vystavena na webu, vypadala takto. Adresa uživatele byla doplněna MD5 hashem jeho hesla (obojí pocházelo z databáze Pixel Federation) a v případě, že se heslo podařilo mizerům rychle cracknout, tak to původní heslo uvedli do závorky. Vidíme, že Šílená Mišulka má e-mail na Seznamu, její heslo pro přístup do her Pixel Federation mělo MD5 hash a3fa5
atd. a že její původní heslo bylo 197412
. Kdyby Mišulka používala stejné heslo i pro přístup na Seznam, byla by tak trochu v háji. Nepoužívá, nemusíte to zkoušet. Spousta lidí bohužel své heslo k e-mailu používá i jinde. Vy to NEDĚLEJTE. Proč? Protože když jdete na nějaký web a zapomenete heslo, tak většinou jediné, co musíte udělat, je zadat e-mailovou adresu a ten web na ni v lepším případě pošle odkaz na nastavení nového hesla, v tom horším případě nějaké náhodné vygenerované heslo, které si stejně nikdy nezměníte. A když k té e-mailové schránce bude mít přístup i nějaký mizera, tak vám může změnit hesla na všech dalších webech, které používáte. E-mail je branou k vaší digitální identitě. Jestli vaše e-mailová adresa byla v nějaké uniklé databázi si ověřte na haveibeenpwned.com.
Aby tihle všichni mizerové měli celkem dost práce s crackováním vašeho hesla z nějakého hashe, pokud aplikace hesla takto vůbec ukládá, tak by vaše heslo mělo být celkem dlouhé. Čím delší heslo, tím déle to bude trvat. Délka hesla by měla být minimálně 8, lépe je 12 a více znaků.
correcthorsebatterystaple
Jeden ze způsobů tvorby dlouhých hesel ukazuje komiks XKCD a tvrdí, že uhádnout toto heslo by trvalo stovky let. Jenže hesla se dnes zas tak často nehádají, pamatujete na mizery s přístupem do databáze? Problém zde je ten, že všechna slova tohoto hesla (nebo passphrase) jsou běžná slova.
Tohle je jedno z nejdelších cracknutých hesel. Heslo je to parádní, o tom žádná, obsahuje mezery a tak, jenže je uvedeno v článku na Wikipedii. Cokoliv napsaného na webu se nehodí na tvorbu hesel, je to totiž i ve slovnících mizerů a ti takové slovníky používají ke zrychlení crackování. Odkazy na články zabývající se crackováním dlouhých hesel najdete u mě na webu, zajímavé čtení.
Délka není vše. Představte si, že máte sice dlouhá hesla, ale jedno heslo používáte na více místech, mizerovi pak stačí najít jednu databázi s hesly v čitelné podobě a získá přístup i k dalším webům, kde používáte tohle dlouhé heslo. Každé heslo by mělo být jiné.
A když říkám každé, tak myslím každé. Když budete mít jedno heslo pro e-mail a jedno heslo pro ty ostatní weby, tak to nestačí. Nedůležitý web se může jednoho dne stát důležitým, navíc to, co se vám zdá nedůležité může být naopak velmi důležité pro mizery. Například tenhle Amazon – jednou jsem si tam koupil knihu, nic extra. Jenže jsem platil kartou a Amazon zobrazuje část čísla karty v seznamu objednávek. To je důležitý údaj, některé weby totiž změní e-mailovou adresu jen díky znalosti těchto čtyř číslic. Když mizera zná tenhle údaj, může napsat na jinou službu a říci, že již bohužel nemá přístup k té staré e-mailové adrese, ale že zná poslední čtyři čísla karty, kterou jste platili, takže určitě musí být vy a že ji chce změnit na nějakou jinou, kterou má pod kontrolou. Podpora daného webu mu ji samozřejmě změní a on si pak nechá poslat odkaz na nastavení nového hesla, protože to vaše zapomněl a získá tak plný přístup k vašemu dalšímu účtu. Ehm.
Již víme, že mít dlouhá hesla nestačí, mohou být ve slovnících používaných k tzv. slovníkovému útoku. To platí i o unikátních heslech, když budete mít každé heslo jiné, ale všechny budou jak ze slabikáře, tak je to taky k ničemu. Hesla by tedy měla obsahovat různé znaky náhodně za sebou.
DSy$&yWH /T&s4p'vRER@K2;qTFiG
Ideální heslo vypadá asi takto. Je dlouhé, není nikde na webu napsáno, ačkoliv se zveřejněním slajdů vlastně už bude, a obsahuje všechny možné znaky, včetně mezer, náhodně za sebou. Jenže kdo si taková hesla má pamatovat, že. Soukromý e-mail, pracovní e-mail, Twitter účet, falešný Twitter účet, Facebook účet, falešný Facebook účet, LinkedIn profil, falešný… ah, to je jedno.
Ale ne všechna. Buďte v klidu, existuje totiž řešení, navíc celkem jednoduché a příjemné. Lidský mozek totiž není dobrý nástroj na pamatování hesel (ale ani na jejich vytváření), takže je možné je v klidu zapomenout. Já sám mám přes 600 hesel, ale pamatuji si jich jenom pár. Jak to jako, cože?
Každý se již asi setkal s nějakým managerem nebo managerkou. Jsou to lidé, kteří se snaží pomoci a dělají věci za vás, že. Stejně tak password manager. To ovšem není žádný člověk, je to program, který si hesla pamatuje za vás a pomáhá vám je vytvářet a navíc vás umí na web přihlásit jedním kliknutím. Takže si musíte pamatovat jen jedno heslo, to pro password managera. Všechny vaše hesla jsou tedy schovaná pod jedním hlavním silným heslem, ale to je v dnešním světě zasílání zapomenutých přihlašovacích údajů e-mailem již dávno běžné. Většina vašich hesel je již dnes chráněna jen jedním heslem – tím k e-mailu. Se stim smiřte.
Password managerů je spousta. Za zmínku stojí asi tak tyhle tři, díky 1Password si budete muset pamatovat jen jedno heslo a díky LastPass to bude to poslední. Oba tyto nástroje jsou také online a umí synchronizaci mezi mobilním zařízením a počítačem. KeePass je program, který si nainstalujete do počítače nebo telefonu a sdílení dat si musíte zařídit sami. Třeba přes nástroj Wuala, jehož výrobce zaručuje, že k vašim datům nemá nikdo jiný přístup, díky použité technologii, nebo pomocí Dropboxu, jehož někteří zaměstnanci přístup k vašim datům mají. Před používáním jiných password managerů si raději prověřte jejich zabezpečení.
Žádný password manager vás nezachrání, když si dáte víc piv, než snesete a svoje hesla někomu vykecáte, ačkoliv s hesly vytvořenými podle dříve uvedených pravidel to asi nebude snadný úkol. Před touto katastrofou vás může zachránit dvoufaktorová autentizace (2FA). Dvoufakcožé? Takže dejme tomu, že něco víte a že to, co víte, je vaše heslo. To je první faktor. Když to heslo někomu řeknete nebo ho někdo uhádne, tak je to lidský faktor, ale o tom jindy. Dvoufaktorové ověřování potřebuje i druhý faktor, tedy něco mít. Třeba zaregistrovaný telefon, který umí přijímat SMS. Provozovatel webu vám pošle nějaký kód, který potom zadáte společně s heslem a tím se ověří, že něco máte (telefon) a něco víte (heslo) a tak to jste asi opravdu vy.
SMS ovšem někdy mohou dorazit s malou prodlevou nebo můžete být zavřeni v místnosti s olověnými zdmi bez mobilního signálu a tak existují alternativy, jako třeba mobilní aplikace Google Authenticator. Ta umí tyhle kódy potřebné pro dvoufaktorovou autentizaci (2FA) generovat sama. Ovšem ani 2FA není dokonalá, stačí si na telefon nějak nainstalovat aplikaci od nějakého mizery a ta bude odchytávat SMS a je to celé v háji. Případně stačí hledat two factor authentication bypass
a najdete (již nefunkční) návod na obejití 2FA většiny služeb, které tento způsob nabízí. Dnes bohužel neznáme nic lepšího běžně dostupného, než 2FA.
A které služby a aplikace tedy dvoufaktorové ověřování nabízí? Google a Gmail, Facebook, Twitter, Dropbox, Github a další. Kód zaslaný SMS nebo vygenerovaný mobilní aplikací nevyžadují vždy, ale například jenom když se hlásíte z jiného počítače nebo jednou za 30 dní.
Na závěr snad jen pár dobrých rad: vytvářejte silná hesla a zbytečně si je nepamatujte, k obojímu si najděte nějakého oblíbeného password managera a na službách, které podporují dvoufaktorovou autentizaci si ji zapněte. Může vám to jednou zachránit zadek, opravdu.
********