Podívejte se raději na online verzi přednášky, slajdy mohly být aktualizovány nebo doplněny.

Detail přednášky

Jak vytvářet hesla, co je to password manager a proč ho nutně potřebujete.

Zapomínáte hesla? Já taky ne. Používáte heslo pro přístup k vašemu emailu i pro přístup k jiným službám? Pokud ano, tak to není moc dobrý nápad. Prozradím vám, jak to dělat lépe.

Správné ukládání hesel probíráme na školení Bezpečnost PHP aplikací (nejbližší termín: termín zatím nevypsán) a jejich správný přenos na školení HTTPS pro vývojáře a správce (nejbližší termín: termín zatím nevypsán), přijďte!

Datum a akce

13. června 2015, Jihočeský Barcamp (35 slajdů)

Slajdy

Hlava není na hesla

#1 Hesla zapomíná každý. Tedy kromě mě. já si hesla nepamatuji, takže je nemůžu ani zapomenout. Je to skvělý pocit. Obrázek pochází z videa What is Your Password, pusťte si ho, stojí za to. A pokračování ta­ky.

Kdo & Jak

#2 Víte, kdo všechno zná vaše hesla? A vůbec, tušíte, jak je vytvářet správně? A jak to, že si hesla nemusím pamatovat? Nebojte, všechno vám prozradím. Mimochodem, tohle zvíře je jak domácí.

Kdo zná vaše hesla?

#3 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 té aplikace mohou mít přístup k této databázi i …

MIZEROVÉ!

#4 Mizerové, úplně 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ě.

MD5, SHA-1, SHA-2 - Nevhodné pro ukládání hesel

#5 Hesla by se měla ukládat hashovaná. Hashovací funkce vyrábí z hesla jeho otisk, ze kterého nelze původní heslo dostat. Je to něco jako otisk prstu člověka, z něj taky člověka zpátky nedostanete. Hashovacích funkcí je mnoho, některé jsou vhodné a některé ne. MD5, SHA-1, SHA-2 (SHA-256, SHA-512 a další), SHA-3 vhodné nejsou a je jedno, jestli přidáte salt nebo ne. Jsou příliš rychlé a tak je možné vytvářet miliardy otisků různých slov či kombinací písmen za vteřinu a porovnávat je s otiskem z databáze, tomu se říká offline útok. Pokud vás hashování hesel zajímá více, tak přijďte na školení bezpečnosti (nejbližší termín: termín zatím nevypsán) nebo si prohlédněte moji prezentaci o hashování. Nebojte, toto je nejvíc technický slajd, dál to bude zas normální.

Pixel Federation

#6 Jak vypadá takové nevhodné ukládání hesel v praxi? Třeba takto. Pixel Federation je vcelku úspěšná slovenská firma, která vytváří online hry. Taky jsem ji neznal. Do podvědomí mizerů i bezpečnostních expertů se zapsala v prosinci 2013, kdy někdo z její databáze získal e-maily a hesla 38 tisíc uživatelů. Nic výjimečného, podobné případy se objevují dnes a denně. Pixel Federation mizerům ale trochu usnadnila práci, hesla nebyla správně hashována.

email:md5 (heslo)

#7 Data, která unikla na web vypadala takto. E-mailová 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. Tady vidíme, že Šílená Mišulka má e-mail na Seznamu, její heslo pro přístup na web Pixel Federation mělo MD5 hash a3fa5atd. a že její původní heslo bylo 197412 – to vypadá jako nějaké datum, přesněji rok 1974 a 12. měsíc. O crackování hesel jsem o lámání napsal článek a udělal přednášku.

Heslo k ímejlu

#8 Kdyby Mišulka používala stejné heslo i pro přístup na Seznam, byla by v háji zeleném. Nepoužívá, nemusíte to zkoušet. Jenže spousta lidí hesla recykluje, používají jedno heslo na více místech. Vy to nedělejte. Když totiž zapomenete heslo, tak stačí zadat e-mailovou adresu a web vám pošle odkaz na nastavení nového hesla v tom nejlepším případě. V tom horším případě vám rovnou pošle nějaké vygenerované heslo. Kdyby Mišulka používala heslo 197412 i na Seznam, tak by si nějaký mizera mohl nechat do její schránky na Seznamu poslat odkazy nebo hesla z dalších webů a tím získat přístup i k dalším službám, které Mišulka používá.

Have I Been Pwned?

#9 Každou chvíli někdo vyhackuje nějakou databázi, stalo se to několikrát i u nás, naposled v prosinci 2014 Jabbimu. Z jeho databáze unikla hesla 150 tisíc uživatelů, hesla byla dokonce v čitelné podobě. Naštěstí databáze nebyla nikde zveřejněna, alespoň prozatím. Jestli vaše e-mailová adresa nebyla v nějaké takové veřejné uniklé databázi si můžete ověřit na webu haveibeenpwned­.com. Nebojte, je to důvěryhodný web, není to sběr e-mailových adres. Váš e-mail už spammeři dávno mají. Chodí vám spam? Tak vidíte.

P̶e̶p̶i̶c̶e̶k̶9̶2̶

#10 Jak vytvářet hesla? Takto rozhodně ne, Pepicek92 není silné heslo ani trochu. Je totiž známé, že když se po uživatelích chce, aby vytvořili „silné“ heslo, které má mít aspoň jedno velké písmeno a jedno číslo, že to velké písmeno bude na začátku a číslo na konci. To číslo na konci navíc často představuje nějaký rok. Hesla vymýšlená v hlavě jsou díky známým postupům při jejich vytváření v naprosté většině předvídatelná a proto jsou velmi slabá. Dokonce ani nepomůže, když použijete provařený trik a e nahradíte za 3 (otočené E, chápete) apod., to jsou předvídatelná nahrazení.

Dloooooooooooooooooooooouuuuuuuuuuhhhhhhhhhhhhhhhhhhhhhhhhhúáááááááááááááááááááá

#11 Vaše heslo by mělo být celkem dlouhé. Čím delší heslo, tím déle bude trvat crackování toho hesla. Délka vámi používaných a vytvářených hesel by měla být minimálně 8, lépe 12 a více znaků. Většina mých hesel má 20–40 znaků.

c̶o̶r̶r̶e̶c̶t̶h̶o̶r̶s̶e̶b̶a̶t̶t̶e̶r̶y̶s̶t̶a̶p̶l̶e̶

#12 Jeden ze způsobů tvorby dlouhých hesel uvádí komix 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 a na to, že způsoby, kterými uživatelé vytváří hesla jsou známé? Problém není ani tak v tom, že všechny části tohoto hesla jsou běžná slova, ale v tom, že jich je málo. Mizerové tento způsob tvorby hesel také znají a hesla ze 4 slova zvládají lámat. Tohle je ve finále fajn způsob, jak si nějaké heslo pamatovat, ale těch slov potřebujete aspoň 6. Mimochodem, XKCD popřel sám sebe, když o rok dříve vyšel díl, ve kterém tvrdí, že entropie zas není tak důležitá.

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn1

#13 Toto je jedno z nejdelších cracknutých hesel. Heslo je to parádní, obsahuje mezery a tak, jenže je uvedeno v článku o Cthulhu na Wikipedii. Cokoliv zveřejněného na webu se nehodí na tvorbu hesla, mizerové si totiž vytváří slovníky z mnoha zdrojů a pak takové slovníky používají ke zrychlení crackování. Všimněte si té jedničky na konci. Ta rozšířila původní heslo, ale i tak to bylo houby platné.

Dlooooouuuhááá + unikátní

#14 Délka ale není vše. Představte si, že máte sice dlouhé heslo, ale to jedno heslo používáte na více místech. Mizerovi pak stačí získat přístup do jedné databáze 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é.

Payment Method Visa **** 1337

#15 Jedno heslo pro e-mail a jedno heslo pro ty ostatní weby nestačí. Jednou jsem si na Amazonu koupil knihu, platil jsem kartou a část čísla té karty se zobrazuje v seznamu objednávek. Když budu mít na Amazonu stejné heslo, jako na službě, k jejíž databázi čitelných hesel má mizera přístup, tak se mizera část čísla mé karty může dozvědět a pak přesvědčit podporu nějaké jiné služby, že on je , protože zná nějaký můj údaj. Podpora pak změní e-mail mého účtu na nějaký mizerou založený. A mizera si pak na tu adresu nechá poslat odkaz na nastavení nového hesla mého účtu. Co není důležité pro vás, může být důležité pro mizeru.

Dlooooouuuhááá + Unikátní + Náhodná

#16 Když budete mít každé heslo jiné (a dlouhé), ale všechny budou jak ze slabikáře nebo z Wikipedie, tak je to taky k ničemu. „Pokud vaše heslo není náhodné, tak ho crackneme,“ říká Jeremi Gosney. Jeho firma Sagitta HPC staví crackovací servery a Jeremi o crackování hesel ví docela dost. Hesla by měla obsahovat různé znaky náhodně za sebou.

@F-PjxZY@ f0Z^c/U 48ek+E2nK$n

#17 Takto vypadá ideální heslo. 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, 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, účet na Facebooku, falešný účet na Facebooku, LinkedIn profil, falešný… ah, to je jedno.

Zapomeňte svá hesla

#18 Ale hesla si nemusíte pamatovat. Buďte v klidu, existuje řešení, navíc celkem jednoduché a příjemné. Lidský mozek totiž není dobrý nástroj na pamatování všech těch 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 jen pár. Jak to?

Password manager

#19 Protože password manager. To je program, který si hesla pamatuje a vytváří za vás, navíc vás umí na web přihlásit jedním kliknutím. Takže si budete muset pamatovat už jen jedno heslo, to do password manageru. Ostatní hesla budou schovaná pod jedním hlavním silným heslem („master password“). Většina vašich hesel je stejně již dnes chráněna jen jedním heslem – tím k e-mailu. Tam se totiž posílají odkazy na nastavení nových hesel.

Notýsek "Password keeper"

#20 Úplně vás slyším: „další program?“ Stejnou funkci ale splní i speciální notýsek na hesla, třeba tento s krásnou nálepkou připomínající trezor. Mějte ho pak na bezpečném místě, v šuplíku nebo kabelce, hesla si do něj zapisujte stejně jako jste si kdysi psali telefonní čísla: přihlašovací jméno, heslo, kam se s tím přihlásím.

Bezpečně uložený notýsek vám nejspíš nikdo nevezme, zatímco ne tak úplně bezpečně uložená hesla z nějakého webu skoro určitě ano. Neopakující se hesla zapsaná v notýsku řeší dnes nejčastější útok, kdy se mizerové uniklými hesly zkouší přihlašovat do dalších služeb a díky recyklaci hesel se jim to často podaří. Notýsek neřeší situaci, když po vás půjdou tajné služby – v tom případě vůbec nepoužívejte Internet ani telefon – nebo když ho zapomenete v tramvaji – kochejte se raději pohledem z okna a v hromadných dopravních prostředcích žádná hesla v notýscích nehledejte.

Možná kdychom uživatelům netvrdili, že si nikdy nemají hesla nikam psát, tak by útoky stylem „vezmu tohle heslo odsud a zkusím se s ním přihlásit jinam“ třeba nebyly tak moc úspěšné.

1Password, LastPass, KeePass

#21 Vyberte si jeden z těchto třech password managerů, ty jsou nejčastěji doporučované. 1Password je placený program, verze 4.x má databázi hesel jen u vás v počítači a s mobilem se umí synchronizovat třeba přes Dropbox. Novější verze už umí uchovávat zašifrovanou databázi i na serverech výrobce, takže máte pořešené i zálohování a přenos mezi počítačem a mobilem. 1Password je můj oblíbený správce, kterého často doporučuju. Skvělá je rodinná verze pro až 5 členů jedné domácnosti za $4,99/měsíc.

LastPass je v základu zdarma, je online a umožňuje synchronizaci s telefonem, zašifrovaná databáze hesel je také na serverech výrobce. LastPass je také častá volba, ale s 1Passwordem mám lepší zkušenosti, což mi již potvrdilo i několik dalších uživatelů, včetně firemních.

KeePass je open source, zdarma, ale synchronizaci si musíte zařídit sami. KeePass nemá ani oficiální doplňky pro prohlížeč, ale nabízí produkty dalších autorů a firem (těm musíte také věřit), které s KeePassem umí spolupracovat. Dalšími alternativami jsou např. Bitwarden nebo Dashlane. Velkým obloukem se vyhněte správci hesel Keeper, jeho výrobce popíral bezpečnostní chybu a žaluje respektovaného novináře za článek o jiné bezpečnostní chybě – ani jedno nevzbuzuje důvěru v tuhle firmu.

Sk p#_s p- *s

#22 Aby password manager mohl dobře chránit vaše hesla, musíte použít silné heslo. Jak takové silné heslo vytvoříte? Vezměte nějakou větu, kterou si zapamatujete, třeba skákal pes přes oves, vezměte první písmena ze slov té věty a některá další písmena nahraďte tak nějak náhodně speciálními znaky. Výsledkem bude například Sk p#_s p- *s. Skákal pes přes oves je ale obecně známá říkanka, na hesla není vůbec vhodná a to ani jako základ. Vaše heslo založte na větě, která není tak profláklá, je blízká vám a pokud možno jenom vám.

Diceware

#23 Další častou metodou pro vytvoření silného hlavního hesla je Diceware. Ta vytváří více náhodná (tedy méně předvídatelná) hesla, která se dají lépe zapamatovat. Než „skákal pes“, tak zvolte raději diceware: vezměte klasickou kostku, pětkrát hoďte a čísla si zapište. V seznamu slov (je tam i český seznam) pak najděte slovo, které odpovídá těm pěti číslům. Já jsem hodil čísla 5, 5, 1, 6, 2 a tomu odpovídá slovo též. Tento postup zopakujte minimálně šestkrát, slova spojte a máte výsledné náhodné heslo, které je docela dobře zapamatovatelné: „též houští ss liga adept výhled“. Mezery zachovejte, háčky a čárky můžete, nebo nemusíte.

Ještě lepší Diceware

#24 Heslo vytvořené házením kostkou se dá ještě zesílit pomocí speciálních znaků. Opět použiji kostku a hodím čtyřikrát. První hod vybere slovo z vytvořeného hesla „též houští ss liga adept výhled“, druhý hod písmeno v tom slově a třetí a čtvrtý hod vybere speciální znak podle uvedené tabulky, kterým to písmeno nahradím. Já jsem hodil 3 (slovo ss), 3 (3 písmena to nemá, tak vezmu poslední s), 6 a 2 (znak =). Výsledné heslo tedy je „též houští s= liga adept výhled“. Takové heslo je náhodně vygenerované, velmi silné, a přesto si ho mozek po lehkém tréninku dokáže zapamatovat. Bezpečné master password vás ochrání od bezpečnostních problémů správců hesel, ty se nevyhýbají ani jejich výrobcům, o jednom problému LastPassu jsem se rozepsal v článku Co se stalo LastPass a jak vytvářet silná a zapamatovatelná hesla.

admin/admin

#25 Heslo k password manageru si někam poznamenejte, když ho zapomenete, tak máte většinou smůlu. Napište si ho někam na papírek a dejte do obálky, třeba k rodičům nebo právníkovi do sejfu. Na monitor si ho nelepte.

Účet vytvořen "Would you like to save this login in 1Password?"

#26 Správce hesel vás např. po registraci vyzve, abyste si přihlášení uložili. Takto vypadá okýnko 1Passwordu po registraci na Seznamu.

Heslo ●●●●●●●●●●●●●●●●●●●● 🔒

#27 Přihlašování s password managerem funguje tak, že na stránce s přihlašovacím formulářem kliknete na ikonu 1Passwordu, ten předvyplní heslo a rovnou se přihlásíte.

1Password umí hesla samozřejmě i vytvářet. Kliknete na ikonku Password generator a password manager vám nějaké silné vygeneruje. Některé služby bohužel nedovolí nastavit například hesla delší než 12 znaků, ale správce hesel na to myslí, stačí změnit parametry.

2FA Two-Factor Autentication

#28 Žádný (password) manager vás nezachrání, když si dáte pár piv navíc a svoje hesla někomu vykecáte, ačkoliv s hesly vytvořenými password managerem to asi nebude snadný úkol, zvlášť po tolika pivech. Před touto nepříjemnou situací vás může zachránit dvoufaktorová autentizace (2FA), někdy se tomu říká „ověření přihlášení“, „dvoufázové ověření“ apod. To od vás potřebuje něco navíc mít, nejenom znát. Můžete mít třeba telefon, na který provozovatel webu zašle SMS, kterou pak opíšete do políčka ve formuláři.

Google Authenticator

#29 SMS občas přijde pozdě nebo vůbec a tak existují alternativy, jako třeba mobilní aplikace Google Authenticator. Ta umí tyhle kódy potřebné pro 2FA generovat sama bez připojení kamkoliv. Použití téhle aplikace je lepší způsob, než ověřování pomocí SMS, protože na telefonu můžete mít zákeřné aplikace, které vás mizera nějak donutil nainstalovat a tyhle aplikace mohou číst SMS a mizerovi je posílat. Dávejte pozor na to, jaké aplikace do telefonu instalujete a jaká mají práva. Některé služby umí také použít vlastní aplikaci pro takové ověření, u nás třeba Air Bank pomocí vlastní aplikace. Je to boží. A taky bezpečnější než SMS.

Authy, Duo Security, YubiKey

#30 Když ztratíte telefon s Authenticatorem, tak máte smůlu. Raději používejte aplikace, které kódy zálohují a synchronizují mezi různými zařízeními, jako třeba Authy nebo Duo Security. Nebo rovnou nějaký hardwarový token, jako třeba YubiKey.

Facebook, Twitter, Google, GitHub, Dropbox

#31 Dvoufaktorové ověřování (2FA) nabízí (odkazy vedou přímo na stránku, kde si ověření můžete nastavit) Google včetně Gmailu, Facebook, Twitter, Dropbox, GitHub a další, u nás třeba Alza nebo Slevomat. 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í.

Dvoufázové ověření na Google

#32 A právě proto, že ty služby nechtějí ověřovací kód zadat pokaždé, tak to není skutečná dvoufaktorová autentizace (2FA, Two-Factor Authentication), ale dvoukrokové ověření (2SV, Two-Step Verification). Všimněte si, že Google to tak opravdu nazývá (Facebook se vrátil k „2FA“), ačkoliv tedy jen v angličtině. Naprostá většina toho, co se dnes označuje jako 2FA je ve skutečnosti 2SV. Ve finále je to jedno, „marketingový“ název 2FA se již vžil, takže tomu tak můžeme říkat. Hlavně si to zapněte a pokud to daná služba umožňuje, tak nejlépe pomocí aplikace, ale ověřování pomocí SMS je také fajn. Nezapomeňte si také uložit tzv. záložní kódy, které vám pomohou dostat se k účtu, pokud se např. něco stane s vaším telefonem. Kam se záložními kódy? No přece do správce hesel, některé mají speciální políčka pro poznámky, v jiných si to uložte jako další heslo. 1Password vám dokonce tyto každou půlminutu měnící se kódy umí generovat sám o sobě.

Používejte password manager a 2FA

#33 Pár dobrých rad na závěr: vytvářejte silná hesla a zbytečně si je nepamatujte, k obojímu si najděte nějakého oblíbeného password managera. Ten používejte úplně na všechno, doma i v práci, na bankovnictví, i na číselný kód ke kufru. Na službách, které podporují 2FA si ji zapněte. Jednou vám to zachrání zadek, věřte mi.

foo+example.com@gmail.com

#34 Pokud používáte Gmail a vaše adresa je foo@gmail.com, tak se na weby registrujte se speciální adresou. Za jméno (foo) před at-sign (česky zavináč) můžete za znak plus doplnit cokoliv, třeba adresu webu, na který se právě registrujete. Když vám pak na takovou adresu začne chodit spam, víte, kdo vaši adresu prodal nebo komu databáze unikla. Znak plus je normální povolený znak v adrese, ale web ho musí při registraci přijmout. Pokud nepřijme, je to chyba webu, nahlaste ji provozovateli.

BTW, Vaše (příští) heslo je: ********1

#35 Sledujte mě na Twitteru (@spazef0rze), pokud vás zajímají odstrašující případy zacházení s hesly, další tipy a triky nebo odkazy na články o heslech.

Michal Špaček

Michal Špaček

Vyvíjím webové aplikace, zajímá mě jejich bezpečnost. Nebojím se o tom mluvit veřejně, hledám hranice tak, že je posouvám. Chci naučit webové vývojáře stavět bezpečnější a výkonnější weby a aplikace.

Veřejná školení

Zvu vás na následující školení, která pořádám a vedu: