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

Detail přednášky

Jako odborníci v IT už asi víte, že máte používat nějaký password manager, že? Ale jaký a jaké jsou rozdíly mezi nimi? A v čem se liší 1Password od LastPassu, tedy kromě ceny? Jaké programy pro správu hesel se vyrábí u nás? Otázky, samé otázky. A taky odpovědi, nebojte.

Datum a akce

18. září 2017, HackerFest (délka přednášky 30 minut, 33 slajdů)

Slajdy

Hluboká tůň v parku Yellowstone

#1 Jakožto odborníci v IT už víte, že máte používat nějaký password manager, že? Ale proč vlastně, jaký a jaké jsou rozdíly mezi nimi? A v čem se liší 1Password od LastPassu, tedy kromě ceny?

Logo Mall.cz

#2 Pojďme si nejdříve na konkrétním příkladu ukázat důvody proč používat správce hesel. Provozovatel české nákupní galerie Mall.cz na konci srpna 2017 musel vymazat („resetovat“) hesla zhruba 1,3 milionu uživatelů. Je možné, že e-mail s touto informací přišel i vám, podobně jako mě.

Mallér

#3 Mall.cz totiž potkal malér. Zatím nevíme kdy přesně, ale víme, že to nebylo nic příjemného.

Screenshot Pastebinu

#4 Na konci července 2017 se na službě pro anonymní sdílení jakýchkoliv textů Pastebin.com objevil odkaz na stažení 750 tisíc účtů a hesel uživatelů Mall.cz. Odkaz vedl na Ulož.to, ale v době resetování hesel již nefungoval.

Screenshot článku na Lupě

#5 Později se zjistilo, že v onom souboru na Ulož.to bylo 750 tisíc hesel v čitelné podobě.

Způsoby hashování hesel Mall.cz

#6 Mall ale údajně hesla v čitelné podobě nikdy neukládal. Do roku 2012 používal pro ukládání uživatelských hesel hashovací funkci MD5, poté SHA-1 s kryptografickou solí a od podzimu roku 2016 používá jeden z doporučovaných způsobů ukládání hesel, hashovací algoritmus bcrypt. Detaily sleduje můj projekt se seznamem firem, které již zveřejnily způsob ukládání hesel. Moc to s hesly v čitelné podobě nejde dohromady, co? Jenže Mall.cz stará hesla správně nepřehashoval a tvrdil, že uniklá hesla jsou právě z dob, kdy používali MD5. Při vylepšování ukládání hesel je potřeba správně přehashovat i existující hesla.

Tesla Model S před benzínovou pumpou

#7 Hned se samozřejmě vyrojily různé teorie, že Mall hesla ukládal v čitelné podobě a že jsou neschopní a tak podobně. Já si myslím, že hesla opravdu unikla nějak hashovaná a někdo je cracknul. Tomu by odpovídalo i to, že Mall.cz resetoval hesla zhruba dvojnásobku uživatelů (1,3 milionu), než byl počet účtů, které se objevily na Ulož.to (750 tisíc). Abych to ověřil, tak jsem si pronajal Teslu a jelšel to vyzkoušet.

NVIDIA Tesla K80 GPU

#8 Jinou Teslu. Na „cloudu“ Amazon Web Services jsem si pronajal stroj s grafickou kartou NVIDIA Tesla K80. Tyto karty se používají na různé výpočty na GPU, ne na zobrazování na monitory. Všimněte si, že nemá žádný výstup, je to vůbec ještě grafická karta, když nikdy nezobrazí ani jeden pixel?

NVIDIA GTX 1080 Ti GPU

#9 Grafické karty řady Tesla nejsou na lámání hesel moc výkonné, NVIDIA GTX 1080 Ti toho zvládne o řád více. Řečí čísel to znamená, že Tesla K80 umí vygenerovat 4,5 miliardy MD5 hashů za vteřinu, GTX 1080 Ti umí 31 miliard. Co to pro lámání hesel znamená včetně přesnějších čísel se dozvíte v mém článku o crackování hesel z Mallu.

16× NVIDIA Tesla K80 GPU

#10 Amazon servery s GTX 1080 Ti nepronajímá, ale slabší výkon Tesla K80 se dá dohnat jejich počtem. Tak jsem si pronajal nejsilnější instanci p2.16xlarge s 16× GPU a celkovým výkonem 73 miliard MD5 hashů za vteřinu a zkusil hesla vycrackovat, tak jak to nejspíš udělal někdo, kdo 750 tisíc účtů zveřejnil. Hesla k těm účtům jsem zahashoval do MD5 a bez nějaké velké přípravy (profík by tuto část nepodcenil) se mi za 12 hodin (pak jsem šel spát a server vypnul) povedlo cracknout skoro všechna, zbylo mi jich 935 necracknutých. O způsobu crackování hesel píšu na Lupě.

Heslo fm9fytmf7qkckct

#11 V souboru na Ulož.to nebylo ani jedno heslo generované password managerem. Jak to vím? Předpokládejme, že ta hesla, která jsem cracknul opravdu správcem vytvořená nebyla (password manager by vytvořil silné heslo, které by za 12 hodin cracknout nešlo) a ten zbytek jsem ručně prošel. Některá hesla vypadala jako generovaná, například toto: fm9fytmf7qkckct.

Vyhledávání fm9fytmf7qkckct

#12 Jenže ho evidentně zná Google, takže bylo v nějakém seznamu hesel, které jsem pro lámání používal. Heslo fm9fytmf7qkckct je začátek nějakého licenčního čísla na Microsoft Office XP. Když budete používat správce hesel, tak vaše heslo nepůjde v rozumném čase nijak cracknout.

Loga Avast, StickyPassword, 1Password, LastPass

#13 Jenže správců hesel je tuna. I v Čechách a na Moravě se nějaký ten správce vyrábí. V Čechách je to Avast Passwords, na Moravě Sticky Password. V přednášce dále budu mluvit o dvou oblíbených password managerech, o 1Password a LastPassu.

Logo LastPass

#14 Jeden z nejznámějších správců hesel je LastPass. Co o něm víme? LastPass je online password manager, to znamená, že zašifrovaná hesla jsou uložena na serverech LastPassu. Je tedy možné se k nim dostat odkudkoliv, jen pomocí prohlížeče, po zadání správného hlavního hesla. Někdy se takovým správcům hesel říká cloudový správce hesel. LastPass můžete používat zdarma i na více zařízeních. Za prémiové funkce (např. sdílení jednoho hesla více uživatelům) zaplatíte ročně $24, existují i verze pro týmy a velké firmy. LastPass byl na podzim roku 2015 koupen firmou LogMeIn, která není zrovna moc důvěryhodná, a v létě 2016 byla firma LogMeIn společně s LastPassem koupena společností Citrix. Právě důvěra je u bezpečnostního software velmi důležitá. Také víme, že LastPass byl dvakrát hacknutý a že se občas najdou i jiné menší nebo větší bezpečnostní problémy.

Screenshot Password Reminder

#15 Na jeden takový drobný jsem během chvilky přišel i já. LastPass požaduje zadání něčeho, co vám heslo připomene. Do LastPassu používám heslo generované, které si nepamatuju a mám ho uložené v jiném správci hesel, takže neexistuje nic, co by mi to heslo připomnělo. Tak jsem tam napsal to, co vždy – kus JavaScriptu.

Screenshot XSS in PW Reminder

#16 K mému překvapení se po uložení tento JavaScript spustil. Chybu jsem nahlásil, LastPass ji opravil a jako odměnu jsem dostal … poděkování, protože tahle chyba nešla nijak zneužít. To jen tak pro pobavení.

Šifrovací klíč: PBKDF2-HMAC-SHA-256(heslo, e-mail, count)

#17 Víme také, jak LastPass ukládá hesla. Hesla šifruje algoritmem AES přímo v prohlížeči pomocí JavaScriptu. Šifrovací klíč je odvozen z hlavního hesla a e-mailu. Parametr count je standardně nastaven na 5000 a lze uživatelsky změnit.

Ověřovací hash: SHA-256(šifrovací klíč)

#18 Pro přihlášení uživatele se na server posílá SHA-256 hash vypočítaný ze šifrovacího klíče, tedy z PBKDF2-HMAC-SHA-256(heslo, e-mail, count).

Uložený hash: PBKDF2-HMAC-SHA-256(ověř. hash, sůl, 100k)

#19 Na serverech LastPassu je uložen PBKDF2 hash se 100000 iteracemi vypočítaný z ověřovacího hashe z předchozího slajdu. Po bezpečnostním incidentu z léta roku 2015 chtěl výrobce ještě navíc přidat scrypt hash, není ale známo jak přesně.

Logo 1Password

#20 1Password je další z oblíbených správců hesel. Od srpna 2016 funguje 1Password jako online služba, podobně jako LastPass. K dispozici je stále i klasická aplikace, kterou si nainstalujete. Verze 1Password 6 pro Windows ovšem „offline trezory“ nepodporuje, ale prý budou zase dostupné ve verzi 1Password 7 for Windows. Online služba funguje na bázi předplatného, stojí $2,99 měsíčně při roční platbě, pro klasickou aplikaci budou i „klasické“ licence, tedy jednorázové poplatky. Základní mobilní aplikace jsou zdarma, ale můžete si za jednorázový poplatek přikoupit vlastnosti navíc. Klasická verze 1Password s lokálními klíčenkami je offline password manažer, výrobce tedy neví, kdy a odkud program používáte (pokud při každém spuštění nebudete automaticky zjišťovat, jestli nebyla vydána nová verze). „Offline“ 1Password uchovává data pouze lokálně, ne na svých serverech, proto offline správce. Synchronizaci mezi zařízeními musíte řešit jinak, například přes Dropbox, iCloud nebo lokální Wi-Fi. Zálohování dat z klasického 1Passwordu je velmi důležité, ale jakmile zálohujete do cloudu, tak z toho z jistého úhlu pohledu máte v podstatě zase cloudový správce hesel.

OPVault: PBKDF2-HMAC-SHA512, AgileKeychain: PBKDF2-HMAC-SHA1

#21 Klasický 1Password odvozuje šifrovací klíče pomocí funkce PBKDF2 (Password-Based Key Derivation Function 2). Novější formát OPVault ji používá ve spojení s HMAC-SHA512 a počet opakování záleží na zařízení, na kterém byla databáze vytvořena. Nikdy však neklesne pod 10000. Starší formát AgileKeychain používá PBKDF2 společně s HMAC-SHA1. Počet opakování byl původně nastaven na 1000, koncem roku 2011 byl zvýšen na 10000. Od 1Passwordu verze 4 je počet iterací proměnlivý, minimální hranice je například pro 1Password for Mac 5 nastavena na 40000.

AgileKeychain: unencrypted URLs

#22 Rozdílů mezi formáty OPVault a AgileKeychain je více. Další podstatný je ten, že starší AgileKeychain má nešifrované URL adresy, takže pokud by se někdo dostal k vaší databázi, tak může jednoduše zjistit, k jakým webům máte uložené přístupové údaje. Hesla šifrovaná samozřejmě jsou. Pokud vám nešifrované adresy vadí, tak zkontrolujte, že používáte OPVault, případně na něj přejděte.

Ok, NOW we can panic!

#23 Cože, čitelné adresy v klíčenkách? Panika!

LastPass: unencrypted URLs

#24 LastPass také leakuje metadata, prý proto, aby bylo možné zobrazovat favicon, navíc informace o adresách může používat pro zobrazování relevantnějších reklam. Ale tohle všechno je známé, není třeba panikařit, obojí to bylo několikrát popsáno, navíc je to zmíněno jak v dokumentaci 1Passwordu, tak i LastPassu.

Just metadata

#25 Jasně, jenom metadata. Pokud vám to vadí, tak se ujistěte, že v klasickém 1Passwordu používáte formát klíčenky OPVault a pokud vám to vadí u LastPassu, tak se ujistěte, že nepoužíváte Internet.

Open Source

#26 Zdrojové kódy pro 1Password ani LastPass nejsou k dispozici, ale zas tak moc to nevadí. 1Password má obsáhlou dokumentaci, včetně popisu datových formátů, autoři na blogu navíc poměrně často komentují a zdůvodňují svá rozhodnutí. Pokud jste skálopevně přesvědčeni, že open source je bezpečný (nebo bezpečnější), tak si vzpomeňte na chybu Heartbleed. Existují i správci hesel s otevřeným kódem, nejznámějším je KeePass. Jeho použitelnost je pro většinu uživatelů hodně mizerná, nemá například rozšíření do prohlížečů nebo mobilní aplikace. Na to naštěstí existují doplňky nebo aplikace třetích stran, ale při jejich používání už musíte důvěřovat nejenom autorovi KeePassu, ale i autorům těch dalších doplňků a aplikací.

1Password Security Design

#27 Důležitý je samotný návrh aplikace. AgileBits, výrobce správce hesel 1Password, má na webu detailní popis návrhu zabezpečení jejich služby, včetně detailního 70 stránkového PDF. Takže i přesto, že kód 1Passwordu není k dispozici, tak se můžete přesvědčit, jak jsou některé věci navržené.

Such secure doge, wow

#28 Dostupnost podobných detailních materiálů vytváří důvěru v provozovatele a ta je u aplikací pro bezpečnost velmi důležitá. Pokud nemůžete najít popis a nastavení funkce pro derivaci šifrovacího klíče z master hesla (a případně další věci), tak daný správce hesel raději nepoužívejte.

2FA - Authentication

#29 LastPass podporuje ověřování přihlášení pomocí SMS nebo aplikace na telefonu (2FA, Two-Factor Authentication, někdy 2SV, Two-Step Verification), „klasický“ 1Password ne. Ale vůbec to nevadí a ani by to nemělo smysl. Jakožecože? To A v 2FA totiž znamená Authentication, tedy ověření a 1Password s lokální klíčenkou vás nijak ověřovat nemusí. Jenom z hesla odvodí šifrovací klíč a data dešifruje. Ani LastPass pro dešifrování dat žádný kód z SMS nebo mobilní aplikace nepoužívá. Když se někdo dostane k zašifrovaným datům LastPassu, žádné 2FA/2SV vám nepomůže. Pamatujete na klíč, který LastPass odvozuje pomocí PBKDF2-HMAC-SHA-256(heslo, e-mail, count)? Žádný token tam není, že? LastPass ho totiž používá jen pro ověření, že vám může poslat zašifrovaná data, ne pro samotné dešifrování. Kdybyste měli databázi 1Passwordu třeba na Dropboxu a pro přístup k němu měli nastaveno ověřování pomocí SMS, tak je to stejné, jako 2FA/2SV v LastPassu. Klasický 1Password má data lokálně, nic vám neposílá, nemělo by tedy moc smysl chtít po uživatelích zadávat nějaký kód navíc. Generovat takové kódy pro zadávání do webových aplikací ale 1Password samozřejmě umí.

Screenshot Saved password details v Chrome

#30 Hesla umí ukládat i webové prohlížeče. Pokud pro jejich zobrazení nepoužíváte speciální heslo, tak je může přečíst jakýkoliv program, který na vašem počítači spustíte vy nebo někdo jiný a to i přesto, že jsou uložena zašifrovaná. Například Chrome ani žádné speciální heslo neumožňuje zadat. Vám sice uložená hesla zobrazí až po kliknutí na tlačítko Show a zadání hesla, kterým se přihlašujete do operačního systému, ale programy běžící na vašem počítači k heslům uloženým v Chrome mají přístup i bez zadávání tohoto hesla. To ve většině případů nevadí, viz další slajd. Plnohodnotný správce hesel navíc umí hesla i generovat v několika různých formátech, umí hesla sdílet v týmu nebo rodině a k placeným správcům máte navíc i uživatelskou podporu.

10 Immutable Laws of Security

#31 První z 10 neměnných zákonů bezpečnosti říká: „Pokud vás mizera dokáže přesvědčit k tomu, abyste si na počítači spustili jeho program, tak už to není (výhradně) váš počítač.“ Záleží tedy jen na tom, jestli vám vadí, že by ten mizera měl přístup i k vašim heslům uloženým v prohlížeči. Pokud nevadí, nebo pokud používáte např. Firefox a hesla chráníte pomocí master password, v klidu používejte správce hesel v prohlížeči. Jen nezapomeňte hesla generovat třeba pomocí metody diceware. A také nezapomeňte na to, že zákeřný program spuštěný na počítači může odchytávat klávesy při zadávání toho hlavního hesla.

Teams

#32 Správci hesel umí hesla sdílet, ale pokud je ve firmě potřebujete sdílet ve velkém, tak raději sáhněte po nějakém specializovaném produktu. Ty fungují trochu odlišně, šifrovací klíče nemohou odvozovat od přístupových údajů, protože by je ostatní uživatelé s jinými uživatelskými jmény a hesly nedokázali rozšifrovat. Takovým specializovaným správcem hesel je např. LastPass pro týmy a firmy nebo 1Password Teams, existuje i výhodná „rodinná“ verze 1Password Families, to je má oblíbená verze mého oblíbeného správce hesel.

Stay safe

#33 Většina článků o správcích hesel je porovnává jen z pohledu uživatele a podle množství vlastností, případně ceny. Zabezpečení dat je ale neméně důležité. Držím palce, ať si vyberete správně!

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: