Hlavní navigace

Co se stalo LastPass a jak vytvářet silná a zapamatovatel­ná hesla

25. 6. 2015
Doba čtení: 15 minut

Sdílet

Problém LastPassu zas nebyl tak velký, jak to mohlo na první pohled vypadat. A používat password manager je vcelku dobrá věc.

O bezpečnostním problému oblíbeného správce hesel LastPass jste už asi zaslechli a možná si o něm i něco přečetli. Po incidentu vyšla spousta článků s informacemi pro uživatele, a poněvadž se o hesla tak trochu zajímám, tak jsem jich pár přečetl, a dokonce jsem se začetl i do komentářů, což obvykle nedělám. 

Pokusím se shrnout, co o problému víme, a zabrousím i trochu do technických detailů fungování LastPassu, a tím se pokusím aspoň trochu vyvrátit některé fámy a mýty. Na závěr uvedu pár dobrých rad, jak LastPass více zabezpečit.

Password1

K čemu vůbec je správce hesel? Protože pro každou online službu, e-shop nebo počítač byste měli mít unikátní silné heslo, proto. Jedno heslo byste tedy neměli používat na více místech. A lidský mozek si dokáže po troše tréninku zapamatovat jen pár silných hesel, ale rozhodně ne desítky nebo stovky. Správce hesel si hesla bude pamatovat za vás. 

Druhá věc, se kterou vám password manager pomůže, je vytváření hesel. Lidé a jejich hlavy totiž generují předvídatelná hesla. Je jedno, jaký systém na vytváření hesel máte, ale vždy z něj vypadne něco lépe, nebo hůře předvídatelného, pokud tedy samozřejmě negenerujete hesla na základě vesmírného šumu, který chytáte na váš satelit místo Eurosportu. 

Vy byste možná váš vlastní systém nerozlouskli, ale to neznamená, že ho někdo jiný neodhalí poměrně rychle. Však si vzpomeňte na trojčlenku, která vám dělá problémy ještě dnes, a na Martínka od vedle, který ji uměl vypočítat sám a dokonce z hlavy! 

Možná je také na čase vám prozradit, že silné heslo není Pepicek92, correcthorsebatterystaple ani Pat&Mat nebo cokoliv jiného, co jste někde četli nebo zaslechli. Nepomůže ani to, když na konec přidáte číslo, protože to nejspíš bude jednička, dvojka, sekvence 123 nebo aktuální rok, nebo rok narození váš nebo vašeho potomka. Tohle známe. Speciální znak? Nejspíš bude na konci a bude to vykřičník. To také víme, takže ani to nepomůže. 

Zkrátka password manager vám pomůže vytvářet a pamatovat si silná, tedy dlouhá, unikátní a náhodně vytvořená hesla. Takovému správci hesel ale musíte věřit, že vaše hesla dokáže zabezpečit. Stejně jako věříte svojí bance (a manželce), že vaše peníze z účtu nezmizí lusknutím (cizích) prstů, tak musíte věřit i tvůrcům aplikací pro správu hesel, že ví, co dělají. 

Mezi námi, jisté riziko, že vám z účtu zmizí peníze a ze správce vaše hesla, tady je a vždy bude, ale je přijatelné. Výměnou za přijetí tohoto rizika dostanete pohodlnou a vcelku bezpečnou správu všech těch důležitých údajů, podle kterých vás různé služby identifikují, a které si normální člověk nemůže zapamatovat. Pojďme si takové zabezpečení ukázat na konkrétním příkladu.

LastPass


LastPass na svém blogu minulé pondělí oznámil, že předchozí pátek jeho lidé na síti detekovali nějakou podivnou aktivitu. Podrobnějším zkoumáním zjistili, že to byl úspěšný útok, ale že se naštěstí útočníci nedostali k samotným zašifrovaným trezorům. Odnesli si e-mailové adresy uživatelů LastPassu, jejich nápovědu k heslům (password reminders), kryptografickou sůl (server per user salts) a ověřovací hashe (authentication hashes) hlavních hesel, tedy těch, kterými se uživatelé do LastPassu přihlašují. 

Pokud jste uživateli LastPassu a nevěříte prohlášení, že se útočníci k zašifrovaným trezorům nedostali, tak byste LastPass vůbec neměli používat. Otázkou může být, jestli se do LastPassu nedostal někdo již dříve a nečekal se stažením dat na vhodnou dobu, ale to se asi nedozvíme. Koneckonců, asi to není ani tolik důležité.

LastPass zašifrovaná hesla uživatelů uchovává na svých serverech, a tak jsem se v komentářích pod některými články dočetl, že tento incident je přesně ten důvod, proč Franta Leet Haxor nepoužívá “cloudové” správce hesel. Nemá cenu se pozastavovat nad tím, že svá hesla ukládá do souboru passwords.txt, který má zabalený do RAR archivu s heslem, protože použitelnost tohoto řešení se limitně blíží k nule. 

Nicméně Franta má jako správný odborník několik různých počítačů a občas potřebuje heslo zadat na jednom, občas na druhém počítači, a tak si soubor passwords.rar nahraje na flash disk, který nosí pořád v kapse u kalhot. Franta efektivně zvýšil riziko, že se k jeho heslem chráněnému souboru dostane někdo nepovolaný, protože šance, že mu v tlačenici v tramvaji někdo flashku z kapsy vytáhne, je větší, než že někdo získá přístup k zašifrovaným datům na disku LastPassu. 

V obou případech by Frantova hesla chránilo jen nějaké silné hlavní heslo. Podobně na tom bude, když pro synchronizaci mezi počítači použije třeba Dropbox. I v Dropboxu se může stát, že se k zašifrovanému trezoru dostane někdo nepovolaný. Frantův super offline systém pro správu hesel najednou zdědil veškeré bezpečnostní problémy flashky nebo Dropboxu. 

Frantův kamarád Kája už ví, že na správu hesel se má používat speciální program a ne textový editor, a tak použije nějaký password manager, který data ukládá na lokální disk. K synchronizaci na pracovní laptop použije Dropbox nebo nějaké jiné “cloudové” úložiště a najednou je na tom dost podobně, jako Franta. Jeho data také chrání jen to hlavní heslo. 

To samé platí, když svůj zašifrovaný trezor budete chtít zálohovat na nějaký server, jiný počítač nebo síťové úložiště a věřte mi, že ho chtít zálohovat určitě budete. I k těm zálohám se totiž může nějaký mizera dostat, a pak vše záleží na síle hlavního hesla. Jak takové silné heslo vytvořit se dozvíte o pár odstavců níže. I kdyby databáze vašeho správce hesel byla pouze na jednom vašem počítači, pořád je tu šance, že si ho někdo napořád půjčí, nebo že data vyluxuje nějaký virus.

Načasování zmiňovaného útoku nemohlo být lepší, protože v sobotu, tedy den po tom incidentu, jsem měl přednášku o heslech na jihočeském BarCampu a tam jsem právě o správcích hesel mluvil. Zazněl dotaz, jak můžeme výrobcům password managerů věřit, že naše hesla nezneužijí. Odpovídal jsem, že vztah mezi uživatelem správce hesel a jeho výrobcem je založen na důvěře, že výrobci se neskrývají a často posílají své zástupce mluvit na konference. 

Jeffrey Goldberg z AgileBits, výrobce 1Password, pravidelně vystupuje na konferenci Passwords, kterou pořádá Per Thorsheim - toho jste mohli vidět na WebExpu 2014, kde vystoupil s přednáškou o použitelnosti hesel. AgileBits pravidelně blogují o tom, jaké riziko pro 1Password představují nově zveřejněné útoky a co mohou dělat uživatelé i oni sami, naposled napsali o útoku Unauthorized Cross-App Resource Access (označovaném zkratkou XARA). Důvěru posiluje i včasné a detailní informování o bezpečnostních problémech, například tak, jak to ukazuje právě LastPass.

LastPass nemá podobný problém poprvé. V květnu roku 2011 informovali uživatele o tom, že zjistili podezřelý provoz, který by mohl znamenat, že si někdo odnesl zahashovaná hlavní hesla. Uživatele donutili k jejich změně nehledě na to, jak silná jejich hesla byla a na blog napsali, jaké změny provedou, aby příště nebyl problém tak kritický. Zavedli například silnější, rozuměj pomalejší hashování hesel. Situaci ale nepomohlo to, že podcenili kapacitu a servery LastPassu nával uživatelů nezvládaly. V danou chvíli měl výpadek i Blogger, na kterém v tu dobu běžel blog LastPassu. Ve skutečnosti to byl trochu zmatek, ale otevřeně všechno popsali a přiznali se k tomu, co se zrovna dvakrát nepovedlo.

O pár měsíců dříve se výrobce LastPassu veřejně přiznal, že web byl zranitelný na útok Cross-Site Scripting. Podle logů toho ale nikdo nezneužil. Opět uvedli, jaké změny udělají, tenkrát zavedli třeba HTTP Strict Transport Security (co to je se dozvíte například z mojí přednášky z konference Devel.cz), přidali hlavičku X-Frame-Options, která brání útokům clickjacking, a začali implementovat Content Security Policy, díky které je možné do stránky načítat různé zdroje, jako obrázky nebo JavaScript pouze z předem definovaných umístění.

V létě 2014 se začalo mluvit o problému LastPassu, který byl nahlášen a opraven v srpnu 2013. Týkal se bookmarkletu, který údajně používalo méně než jedno procento uživatelů. Další problém se týkal jednorázových hesel (OTP, One-time password), která mohou uživatelé používat k přihlášení do LastPassu z neznámých míst, například z veřejných počítačů v hotelech apod. V tomhle případě LastPass trochu zaváhal a informace zveřejnil až pod tlakem, který vyvolala přednáška na konferenci USENIX, ale když vezmeme v potaz počet uživatelů, kterých se problém týkal, a prohlášení LastPassu, že ani jeden problém nikdo nezneužil, tak by se to dalo tolerovat.

Když mluvíme o prodlevě mezi objevením a zveřejněním problému, možná můžete namítat, že když na problém přišli už v pátek, tak ho měli oznámit co nejdříve a ne až v pondělí. Jenže první věc, kterou musíte v podobné situaci udělat, je dvakrát se přesvědčit, že to je opravdu nějaký bezpečnostní problém a zajistit, aby se již neopakoval. Použité algoritmy LastPassu jim poskytly dostatek času na obojí. Na veřejnost s tím jdete, až stoprocentně víte, co se stalo a že už to problematické místo je opraveno, jinak způsobíte akorát zmatek na všech frontách.

LastPass nezná vaše heslo, které používáte pro přístup k trezoru. Přesněji řečeno, zná a používá ho pro rozšíření vašeho prohlížeče nebo aplikace napsané v JavaScriptu běžící ve vašem prohlížeči, ale na serverech LastPassu uloženo není, ani se tam neposílá. LastPass ve vašem prohlížeči odvodí z vašeho hesla a e-mailu klíč, který se používá k šifrování dat. Z tohoto klíče se stále ve vašem prohlížeči vypočítá hash, který se posílá na server pro ověření, a z tohoto hashe servery LastPassu vypočítají další hash, který je teprve uložen v databázi.

Řečí čísel a algoritmů to vypadá takto:

  1. šifrovací klíč – odvozuje se v prohlížeči pomocí PBKDF2-HMAC-SHA-256(heslo, e-mail, počet opakování) – počet opakování se dá v LastPassu nastavit a je standardně nastaven na 5000
  2. ověřovací hash – vypočítá se v prohlížeči pomocí SHA-256(šifrovací klíč) – tento hash se posílá na servery LastPassu
  3. uložený hash – výstup z volání PBKDF2-HMAC-SHA-256(ověřovací klíč, sůl, 100000) – toto je uloženo v databázi

Útočníci si tedy odnesli výsledek volání PBKDF2-HMAC-SHA-256(SHA-256(PBKDF2-HMAC-SHA-256(heslo, e-mail, počet opakování)), sůl, 100000).

Lámání hesel, práce pro Titány

Možná jste již zaslechli něco o lámání hashovaných hesel a o tom, že v případě některých algoritmů jako např. MD5 nebo SHA-1 je to lámání velmi rychlé. To jste zaslechli velmi správně, takové algoritmy by se na hashování a ukládání hesel do databáze používat neměly. Ano, ano, já vás slyším, ptáte se, jak rychle se dá lámat algoritmus, který používá LastPass, že? Lámat se dá velmi pomalu a tak to má být. 

Jak pomalu? Jeremi Gosney ze společnosti Sagitta HPCkomentáři na Ars Technica prohlásil, že na lámání těchto hesel nikdo nemá dostatek času, cituji “Ain't nobody got time for that.” Jeremi a jeho firma staví počítače na lámání hesel a tak na podobný komentář těžko budete hledat někoho povolanějšího. Ačkoli: věřím, že v komentářích pod tímto článkem se také najde hrstka minimálně stejně kvalitních odborníků, kteří vypočítají, jak dlouho by prolomení jejich hesla trvalo. Jeremi se také pokusil odhadnout, kolikrát za vteřinu dokáže “LastPass hash” spočítat v současné době nejrychlejší grafická karta na lámání hesel – GeForce GTX TITAN X.


Ta dokáže provést necelých 10000 takových výpočtů za vteřinu. To podle zveřejněného benchmarku téhle karty velmi, velmi zhruba odpovídá rychlosti algoritmu bcrypt s parametrem cost nastaveným na 5 až 6. Jens Steube, autor programu na lámání hesel Hashcat, Jeremiho opravil a napsal, že to nebude úplně přesný odhad a že Hashcat by to zvládl asi rychleji. 

Nicméně pořád je to pěkně pomalý algoritmus, takže útočníka bude zkoušení mnoha různých kombinací hesel pekelně zdržovat. To už dřív v tom pekle skončí, než se mu podaří nějaké silné heslo rozlousknout. Jen pro porovnání, TITAN X umí pomocí Hashcatu spočítat 16 miliard MD5 hashů za vteřinu. 

Jeremi dokonce napsal, že si snad hlavní heslo ani nebude měnit, až tak je ten algoritmus pomalý. Samozřejmě předpokládám, že Jeremi má silné hlavní heslo a nepoužil ho pro přihlašování do jiné služby. Já jsem si hlavní heslo změnil, ačkoliv mám do LastPassu nejspíš velmi podobné heslo jako Jeremi. To heslo mi totiž vygeneroval správce hesel a ten si ho za mě také pamatuje. Hmm, nedělám něco špatně?

Vrhněte (kostky)

Nedělám. LastPass používám jen na hraní, historicky používám KeePass, už přes deset let. Kdybych se správcem hesel začínal dnes, asi bych zvolil právě LastPass nebo 1Password, ale k přesedlání jsem se zatím nedokopal. 

Při používání správce hesel je velmi důležité mít hlavní heslo, tedy to, které odemyká trezor s ostatními hesly, velmi silné. O tom, že Pepicek92 není bezpečné heslo, jsem již psal. Jak ale takové silné heslo vytvořit? Jedna z metod se jmenuje diceware. Spočívá v házení kostkou a generování čísel a skládání slov, která se v seznamu pod danými čísly nacházejí. 

Vezměte kostku, hoďte pětkrát a čísla si zapisujte. Toto opakujte nejméně šestkrát, tak abyste dostali alespoň 6×5 čísel. Podle hozených čísel najděte v seznamu anglických slov (o českém bohužel nevím) odpovídající řádky a slova na nich uvedená si poznamenejte. Já jsem naházel těchto 6×5 čísel 55162 (speak), 23242 (docket), 52634 (sans), 32221 (gyp), 12214 (amulet), 63622 (weird). Moje heslo by tedy bylo speak docket sans gyp amulet weird

Všimněte si, že v heslu zachovávám mezery, žádný dobrý správce hesel vám je nezakáže, některé mizerné weby bohužel ano. Toto heslo bych měl ještě trochu zesílit vložením speciálního znaku na nějaké místo. Opět použiji kostku a hodím čtyřikrát. První hod vybere slovo, druhý hod písmeno ve slově a třetí a čtvrtý hod vybere speciální znak podle následující tabulky, kterým to písmeno nahradím.


Já jsem hodil 3 (slovo sans), 3 (písmeno n), 6 a 2 (znak =). Výsledné heslo tedy je speak docket sa=s gyp amulet weird. Takové heslo je náhodně vygenerované, docela silné, a přesto jednoduše zapamatovatelné. Další metodou, která se dá použít k vytvoření silného hesla, je zkracování vět. 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 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. Určitě vám rodiče říkali nějakou ukolébavku.

Nezapomenu na tebe!

Když silné heslo nějak vytvoříte, tak ho zkuste nezapomenout. Ha ha. LastPass sice nabízí nastavení nového hesla, ale používá k tomu lokálně uložené náhodné číslo, které je na každém počítači jiné. Silné heslo si proto raději napište na lístek (a nepište tam, k čemu to heslo je) a noste ho nějakou dobu v peněžence. Když heslo zapomenete, tak víte, kam se podívat. Kdyby vám peněženku někdo ukradl, tak to stejně brzo zjistíte a heslo si změníte. Udělejte to hned potom, co zablokujete platební karty v bance. 

Jakmile si heslo dostatečně dobře zapamatujete, tak na papírek připište uživatelské jméno a dejte ho do zapečetěné obálky a tu dejte k rodičům, k právníkovi, nebo do bezpečnostní schránky do banky, podle toho, komu více věříte. Toto zopakujte vždy, když hlavní heslo změníte. Nemusíme hned myslet na nejhorší, ale opravdu se může stát, že heslo prostě jednoho krásného dne zase zapomenete. Ale budete mít celkem bezpečné místo, kde ho vždy najdete. Rodiče, banka i právník by vás určitě okamžitě informovali, pokud by došlo k loupeži a obálka zmizela.

Pravděpodobnost, že by někdo vykrádal byt vašich rodičů jen proto, aby zjistil vaše hlavní heslo, je velmi malá a je rozhodně menší, než že to heslo opravdu zapomenete. Kdyby někdo moc toužil po vašem master heslu, tak je pro něj jednodušší provést kryptoanalýzu gumovou hadicí.


Zdroj: https://xkcd.com/538/

Je řádově levnější a účinnější vás několikrát promyšleně zasáhnout tlustou gumovou hadicí na choulostivá místa, a pokud vaše heslo nestihnete zapomenout, tak ho rádi prozradíte.

Silné heslo mám, co dál?

Co můžete udělat pro lepší zabezpečení správce hesel? Budu se opakovat, ale stejně to napíšu. Mějte silné heslo. V případě LastPassu můžete ještě snížit rychlost hashování hlavního hesla pomocí nastavení počtu opakování na více, než standardních 5000, třeba na 20000, nebo dokonce na 50000. Přihlašování pak bude o něco pomalejší, ale asi to ani nepoznáte. 

V rozšířeném nastavení (Show Advanced Settings) můžete také omezit země, ze kterých se půjde na váš účet přihlásit. Pokud moc necestujete, tak doporučuji nastavit Českou republiku a okolní země a před každým větším výletem to zrušit nebo přidat další cílovou zemi.


Nepoužívejte nápovědu k heslu (password reminder), nepište tam rozhodně nic, co by vám heslo připomnělo. Pokud vás nenapadá proč, tak se podívejte na začátek článku na seznam toho, co si útočníci ze serverů LastPassu odnesli. Nápovědy k heslům jsou obecně špatný nápad, takže doporučuji tam napsat “Nápověda k heslu snižuje zabezpečení”.


Zapněte si ověřování pomocí mobilní aplikace a v případě použití Google Authenticatoru si někam poznamenejte váš privátní klíč (hlavně ne do LastPassu), jinak se k heslům nedostanete, pokud ztratíte telefon. Místo Google Authenticatoru se dá použít Authy, která umí kódy zálohovat a synchronizovat mezi různými zařízeními. Heslo k zálohám si opět někam poznamenejte, abyste ho nezapomněli.

Hesla na jedno použití

Jen si to představte, jste na dovolené, moře šumí, paraplíčko ve sklenici marně chrání kostky ledu před jejich nezvratným osudem a vy máte potřebu se s kamarády na Facebooku podělit o fotku svého oběda. Skočíte do hotelu, usednete k počítači na recepci a zadáte heslo do LastPassu. 

Netušíte však, že je počítač zavirovaný a každé stisknutí klávesy nahrává a posílá nějakému mizerovi. Ten se tak dozví i vaše silné heslo bez nutnosti cokoliv lámat. A to nechcete. Proto pro podobná nouzová přihlášení použijte tzv. jednorázová hesla (One-time passwords). Ta si vygenerujete v menu Nástroje (Tools) a dále Pokročilé nástroje (Advanced Tools). Můžete je mít zase třeba na lístku v peněžence nebo v mobilu. 

Možná narazíte na problém, kdy vám LastPass bude chtít poslat e-mail s odkazem na potvrzení, protože se na dovolené budete hlásit z neznámého umístění a heslo k e-mailu budete mít uložené v LastPassu, do kterého se nedostanete, ale víte co? Užívejte si dovolenou a nějaké přihlašování kamkoliv nechte plavat. Fotky ratolestí v mořských vlnách můžete na Facebook nahrát klidně až po návratu.

O heslech i jejich správcích by se dalo psát hodně dlouho, a pokud jste dočetli až sem a budete se chtít v komentářích na něco zeptat, tak hlavně do dotazu nepište své hlavní heslo a neptejte se, jestli je dostatečně silné. Komentáře nejsou vhodným místem pro zálohování master password

UX DAy - tip 2

Tímto článkem jsem chtěl ukázat, že problém LastPassu zas nebyl tak velký, jak to mohlo na první pohled vypadat a že používat password manager je vcelku dobrá věc. Rozhodně lepší, než mít na více webech stejné (a navíc slabé) heslo. 

Možná trochu paradoxně mi na LastPassu nejvíc vadí jeho “český” překlad, je totiž vytvořen strojově a tak trochu připomíná nebezpečný spam, který nás žádá o prohlédnutí divné přílohy nebo o zadání hesla na podezřelých stránkách, které náhodou vypadají stejně jako stránky vaší banky. LastPass údajně aktivně pracuje na zlepšení českého překladu, těším se!

Byl pro vás článek přínosný?

Autor článku

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

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).