KeePass bezpečnost – část druhá
Minulý článek bylo takové nakousnutí toho, co všechno je potřeba pořešit pro kvalitní zabezpečení kritických dat. Dneska bych se chtěl věnovat tomu, jak vytvořit opravdu bezpečné úložiště pro Vaše data a přitom mít možnost ho mít kdekoli v cloudu. To jsou totiž většinou dva největší protiklady. Naštěstí je způsob, jak toto skloubit.
Odpovědí je aplikace KeePass a Dropbox (nebo kterékoli jiné synchronizované úložiště). Úplně slyším, jak teď většina z Vás říká cosi o tom, že je pěkná blbost dát do Dropboxu super-bezpečná data. Kupodivu to blbost není. Pojdmě na to.
Začnu KeePassem. Jak jsem už psal, jde o free a open-source bezpečnostní program, který umožňuje bezpečně a strukturovaně ukládat informace. KeePass tu je již řadu let a za tu dobu získal spoustu ocenění a certifikací, takže ho lze považovat za bezpečný.
V základu není KeePass nic jiného, než jakási kartotéka, kde můžete do složek přidávat položky. Ke každé položce můžete přiřadit uživatelské jméno, heslo, poznámku, url a pak hromadu dalších informací. Všechna zadaná data KeePass ukládá do jednoho souboru, který může (a měl by být) být zašifrován.
V základu umožňuje KeePass zašifrovat soubor pouze heslem, což není špatné, ale abychom dosáhli požadované super-bezpečnosti, muselo by být heslo raději opravdu dlouhé. Problém dlouhého a složitého hesla je pak v jeho zadávání. Je to zdlouhavé a otravné.
A tady přicházejí na řadu pluginy (rozšíření) do KeePassu. Díky nim lze do KeePassu doplnit obrovské množství dalších funkcí.
To, co jako první do KeePassu doplníme, je podpora pro Yubikey. Způsobů, jak Yubikey do KeePassu integrovat je více, ale nejlépe mi vychází integrace skrz Challenge-Response protocol, který Yubikey podporuje. Zároveň je možné nastavit stejné heslo do více Yubikey, takže není nutné přenášet jeden fyzický klíč, ale lze použít neomezené množství klíčů.
Abych trošku vysvětlil, o co jde. Zabezpečení Challenge-response spočívá v tom, že máte nějaký tajný klíč, který nahrajete jak do Vašeho Yubikey (viz dále), tak ho nastavíte do KeePassu. Během přihlašování pak KeePass vygeneruje náhodný řetězec, který do Yubikey pošle a nechá ho v Yubikey zašifrovat (klíčem, který jste tam původně nastavili). Yubikey poté náhodný řetězec vrátí a KeePass ho porovná s hodnotou, kterou sám vypočítal pomocí tajného klíče. Tím ověří, že Yubikey zná správné heslo. Zároveň ale toto tajné heslo nikdy neopustí ani KeePass, ani Yubikey. Prosté a jednoduché :).
Díky tomu přidáváte velkou část zabezpečení, aniž byste museli cokoli složitého psát. Zároveň se ale nelze obejít úplně bez hesla. Důvod je, že (alespoň u nás doma) zůstavají Yubikey zastrčené v PC. Představa přenášení a neustálého odpojování nebyla akceptována z důvodu snadného použití. Proto je potřeba pořešit ještě situace, kdy by Vám někdo ukradl notebook včetně Yubikey. Bez hesla by najednou existoval způsob, jak se Vám do Vašich dat dostat.
A proto je potřeba přidat ještě heslo. Ale to už nemusí být extra složité. A to ze dvou důvodů. Zaprvé, díky Yubikey klíči už nelze tak snadno použít brute-force útok (automatické tipování miliard kombinací), jelikož pro každé vygenerování hesla z Yubikey je potřeba ručně stlačit tlačítko na klíči. A zadruhé, v případě krádeže se o ni pravděpodobně vcelku rychle dozvíte a můžete provést náležitá protiopatření, takže i kdyby se nějaký útok uskutečnil, než proláme i to jednoduché heslo, vy už budete mít dávno kritické přístupy změněny.
Třetí obrovský benefit napojení Yubikey na KeePass je v tom, že se do KeePassu nelze přihlásit na dálku. Představme si scénář, kdy se Vám do počítače dostane škodlivý kód, který odposlouchává všechny Vaše stisky kláves a zároveň umožňuje ovládání Vašeho počítače někomu cizímu. I když tento účastník uvidí, co píšete za heslo, tak on nebude schopný se na dálku do Vašeho KeePasu dostat. Je to proto, že aby Yubikey vygeneroval challenge-response heslo, je nutné se fyzicky dotknout klíče. A tím totálně eliminuje vzdálený útok.
Jak vidíte, zabezpečení KeePassu jen heslem je o dost méně bezpečné.
- Kdokoli může zkoušet náhodný útok přes všechny možné hesla. A i když to bude trvat, udělat takový útok lze.
- Kdokoli, kdo odposlechne stisky Vaši klávesnice, se může poté na dálku přihlásit do Vašeho KeePasu.
- Heslo je potřeba mít dostatečně dlouhé a složité, což ale zase dost komplikuje jeho využití, když ho máte zadávat několikrát denně.
Poslední, co zbývá je synchronizace KeePassu. A tady přichází na řadu zmíněný Dropbox. Věřím, že po přečtení předchozích řádků je Vám jasné, že je úplně jedno, kam svůj datový soubor s hesly umístíte. Díky Yubikey a heslu je totiž šifrovaný tak dobře, že se do něj nikdo a nijak nedostane. V extrému byste ho mohli vyvěsit klidně veřejně na webu. Samozřejmě je stále lepší ho držet alespoň trochu rozumně bezpečně, ale, teoreticky by to mělo být opravdu jedno.
A proto si můžeme dovolit použít Dropbox. I když i ten by měl být sám o sobě bezpečný, už to znamená mít své věci někde v cloudu. Tam k nim teoreticky může mít přístup kdekdo, navíc stále existuje riziko, že Vám Dropbox můžou hacknout. Proto i s ostatními daty v něm opatrně.
Pro naše účely je ale Dropbox naopak naprosto ideální. Uložíme si na něj zaheslovaný KeePass soubor a díky tomu k němu můžeme přistupovat odkudkoli, kde budeme mít Yubikey klíčenku. Díky tomu jsem schopný se doma do dat dostat jak z pracovního PC, tak z jakéhokoli notebooku.
Jak nastavit Yubikey
Teorii máme za sebou, pojďme nastavovat. Jako první nakonfigurujeme Yubikey, konkrétně jeho slot2 (každý Yubikey má dva programovatelné sloty). Na to je nutné stáhnout a nainstalovat Yubikey Personalisation Tool.
V aplikaci pak zvolíme “Challenge-Response” položku v horním menu a zvolíme variantu HMAC-SHA1.
V následujícím okně pak zvolíte, že chcete programovat slot 2, že chcete využít fixed 64byte input, že se má vyžadovat user input (aby bylo nutné fyzicky kliknout na Yubikey) a stisknete tlačítko “Generate”
Heslo, které se Vám vygenerovalo, si uložte rovnou do KeePass, nebo dočasně někam do souboru na počítači, kde ho ho ale poté musíte 100% zlikvidovat. Jde totiž právě o ono super-bezpečné heslo, pomocí kterého se bude Váš KeePass synchronizovat s Yubikey. A proto se Vám k němu nesmí nikdo dostat.
Až budete mít heslo uloženo, stistkněte tlačítko Write Configuration. Ještě před samotným zápisem Vám aplikace nabídne uložit jakýsi CSV soubor, který obsahuje právě toto zmíněné heslo. Zde zvolte “Cancel”, protože rozhodně nepotřebujete, aby bylo heslo uloženo ještě v nějakém dalším souboru.
Tím máte Yubikey nakonfigurovaný. Pokud v budoucnu budete chtít spárovat další yubikey, stačí postupovat přesně stejným postupem jen s tím rozdílem, že namísto tlačítka “Generate” zkopírujete Vaše heslo do políčka Secret Key (v mém případě 61 4a 11 19 d0 14 85 75 db ce 85 07 ba bf a0 28 f3 e5 e1 eb). Takto můžete spárovat tolik klíčenek, kolik budete potřebovat.
Jak nastavit KeePass
Nejprve si KeePass stáhněte z oficiálních stránek (nikdy nestahuje odjinud, nemáte jistotu, že není kód jakkoli upraven ve Váš neprospěch).
A ze seznamu “Plugins” si stáhněte KeeChallenge plugin (https://keepass.info/plugins.html), případně ho lze stáhnout rovnou zde http://richardbenjaminrush.com/keechallenge/. Plugin rozbalte a umístěte do podsložky “Plugins” ve složce KeePass.
To, že jste plugin aktivovali správně, poznátek tak, že vyberete menu Tools->Plugins a uvidíte v seznamu pluginů KeeChallenge.
Pokud máte plugin nainstalovaný, pojďme se pustit do vytvoření bezpečného úložiště. Z menu zvolte “File” a “New”.
A potvrďte následující okno, kde Vás KeePass informuje, že si máte dobře zapamatovat heslo, které zadáte 🙂
V dalším kroku zvolte, kde se má soubor uložit a jak se má jmenovat. Já osobně ho mám uložený přímo ve složce s KeePassem, který mám celý v Dropboxu. Výhoda tohoto řešení je, že se mi krom samotného datového souboru synchronizuje i celé nastavení Dropboxu se všemu pluginy. Nemusím se proto starat o každý počítač zvlášť, ale všude mám stále stejné nastavení.
A teď se dostáváme k tomu zajímavému. V následujícím okně nyní zvolte Vaše “Master password”, tzn. heslo, které budete zadávat. Krom toho ale zaškrtněte ještě volbu “Show export options”
Po zaškrtnutí “Show expert options” se Vám ukáží další volby k nastavení. Vy dále zaškrtněte “Key file / provider” a ze seznamu vyberte “Yubikey challenge-response”.
A volbu potvrďte stisknutím “OK”.
Zobrazí se Vám další okno, kam nyní zadáte Vaše tajné heslo, které jste si vygenerovali v Yubikey.
V mém případě tak zadávám “61 4a 11 19 d0 14 85 75 db ce 85 07 ba bf a0 28 f3 e5 e1 eb”. Volbu “Variable Length Challenge” nechte odškrtlou. Opět stiskněte OK.
Nyní se Vám rozsvítí Váš Yubikey a vyskočí okno, kde běží časový odpočet. Klikněte na tlačítko na Yubikey. Tím je spárování dokončeno.
V tomto kroku můžete nyní nastavit parametry Vašeho KeePass souboru. Krom jeho popisu a názvu lze ještě dále upravit způsoby šifrování. Osobně využívám v defaultním nastavení. Toto lze v budoucny kdykoli změnit. Opět potvrďte OK.
V dalším kroku Vám KeePass nabídne vytisknutí formuláře, kam si můžete poznamenat veškeré bezpečností nastavení a hesla, která jste zvolili. Osobně dávám Skip a hesla ukládám jinam.
A tím je hotovo. Máte vytvořený bezpečnostní soubor, kam se Vám nikdo nedostane.
Nyní aplikaci zavřete a zkuste ji znovu pustit a přihlásit se. Ať si ověříte, že vše funguje jak má.
Po zadání hesla a jeho potvrzení byste měli opět vidět výzvu na stisknutí tlačítka na Yubikey spolu s rozsvícením Yubikey.
Dodatečná nastavení KeePass
Tak, máme nastavený Yubikey a KeePass, nyní ještě nastavíme pár dalších věcí v KeePassu. V základu totiž KeePass po odemknutí úložiště zůstane odemknut. Takže pokud počítač usne / zapne spořič a vy odejdete, tak je databáze stále odemknuta a někdo by se Vám fyzicky mohl k datům stále dostat.
I toto naštěstí umí KeePass vyřešit. Lze nastavit, aby se KeePass automaticky zpět zahesloval po x-minutách neaktivity, nebo při usnutí PC, nebo při spuštění screensaveru, nebo při stisku klávesy ESC v případě, že už víte, že přístup nebudete potřebovat. Díky tomu jsou data odemknuta po opravdu minimální nezbytnou dobu a jinak jsou data zaheslována a nepřístupná.
V menu Opitions najdete hromadu voleb, včetně:
- “Lock workspace when computer is about to be suspended”, která říká, že má KeePass být zamčen při usnutí.
- “Lock workspace after global user inactivity”, která říká, za jak dlouho KeePass sam zamkne, pokud se na PC nic neděje
Je toho opravdu spousta, co lze nastvit. Ostatní položky ponechám k vlastnímu studiu, jelikož už záleží na vkusu uživatele. Například, zda se má KeePass zobrazovat jako běžící aplikace nebo v Tray, zda Close tlačítko zavírá aplikaci, nebo ji jen minimalizuje do Tray, atd.
Obnova přístupu k datům
Poslední kapitola bude už dříve zmiňované “coby-kdyby”. Jak zajistit, že se k těmto datům dostanou i jiní v případě nouze. Já to pro tyto účely mám řešeno následovně.
- Je potřeba si na papír poznamenat heslo, které je zadáno do Yubikey (tzn 61 4a 11….), dále pak heslo, které se zadává přímo do KeePassu (v případě tohoto dema “heslo”).
- Kromě toho je pak potřeba ještě uživatel a heslo do Dropboxu.
- A k tomu nějaký návod, jak vše obnovit. V mém případě link na tento článek 🙂
Tyto údaje jsou zapsané na papíru, odkud je nelze nijak elektronicky zcizit. Papír pak lze dle uvážení vložit do bezpečnostní schránky banky, kde ke schránce nastavíte přístup i dalším osobám, případně jej zakopat někde na zahradě a lokaci sdělit ostantím. Případně poslední varianta je pak zalepená obálka, kterou uschováte u důvěryhodných osob pro případ nouze.
Všechna další data, závěti nebo krizové plány již můžete průběžně ukládat a měnit v KeePasu. To hodně usnadňuje distribuci těchto kritických informací. Jediné, kdy musíte obsah obálky a schránky aktualizovat, je, když změníte Yubikey heslo, KeePass heslo, nebo přístup do Dropboxu.
Závěrem
Tak, další část návodu mám za sebou. Stále je toho spousta, jak zabezpečit vše ostatní. Primárně právě 2FA ochrana, o které budu mluvit příště. Jak ale vidíte, jen samotné zabezpečení KeePassu je kapitola sama o sobě. Když se to ale udělá správně, je to úložiště naprosto bezpečné, zároveň synchronizované a k tomu obnovitelné v případě nouze.
Pokud Vám návod pomůže, zvažte zaslání nějaké té koruny na podporu našeho blogu. Jen pro představu, článek jako je tento jsem zpracovával dnes 3 hodiny. Je fajn ostatním pomáhat, ale je i fajn vidět, že to lidé dokáží ocenit. Díky!
Adresa pro příspěvky v BTC je bc1ql36zrs6gczm7zlfwdtqdc20jdx900l6wkxqdfv, případně převodem na účet 1012036013/3030. Děkujeme.
Všechny články v sérii:
Pekne sepsane, diky! Doporucuji pak u hesel jeste pouzivat 2-way obfuscation, pri automatickem zadavani pomoci klavesovych zkratek. https://keepass.info/help/v2/autotype_obfuscation.html Znesnadni to zivot klient-side keyloggerum.
Mne trochu vadi pouze dva sloty na Yubikey 🙁 Prvni pro U2F-supported sluzby jako Gmail, druhy pro dlouhe staticke heslo ke sluzbam, ktere nepodporuji zadnou formu OTP a treti by byl vhodny po challenge-response vyuziti (napr. pro KeePass). Jinak to pouziti statickeho hesla je pochopitelne ne prilis stastne, ale pouzivam zpusob, ze mam ruzne kratke “piny” pro ruzne sluzby, nasledovane tim dlouhym statickym heslem v Yubikey. Pouziti pak spociva v napsani pinu a delsim podrzenim Yubikey (pouzije se informace ve druhem slotu). Jinak mozna by tato drobnost stala za pridani do clanku (ruzne delky “stisknuti” Yubikey pro pouziti prvniho nebo druheho slotu).
Jo a pro Mac, pokud nekdo pouziva, lze stejneho nastaveni dosahnout pri pouziti KeePassXC – https://keepassxc.org/
diky za pochvalu, to rad slysim 😉
jojo, na ten autotype obfuscation sem koukal. Ja zatim na autofill pouzivam Lastpass, protoze ten ma lepsi integraci do prohlizece. Tam zatim bohuzel keepass pokulhava. Ale vsechna heslu beru tak, ze proste nejsou bezpecna. Kde to jde, mam pak 2FA pres keepass, o tom budu psat priste.
ad ty sloty, presne tak. on yubikey nabizi strasne moc ruznych fci, ale clovek si musi z nich vybrat jen 2. Coz je opravdu skoda. Jen si nejsem jisty, jeslti nahodou slot 1 nejde pouzit na neco jineho a na u2f pak funguje klic sam o sobe. Zkousel jsem totiz naklonovat yubikey i na u2f a i kdyz sem je do slot1 nakonfiguroval, tak jsou stejne rozdilne. Ale zatim jsem to vic nezkousel. Kazdopadne kdyby dali vic slotu, urcite by to bylo lepsi.
no ten dlouhy/kratky stisk je zase totiz jen pro nektere pripady. Protoze pokud mam challenge-response ve slotu 2, tak tam se uz dlouhy/kratky neresi, protoze si plugin sam rekne, odkud chce data cist.
Ono celkove to pouzivani Yubikey je trochu prekombinovane a komplikovane. da se nastavit hromada, ale pro novacka to musi byt peklo. Proto jsem tam spoustu veci vynechal a resim jen challenge-response, kde ani delka kliku nehraje roli.
A ad ty piny, uplne se mi to nelibi z pohledu bezpecnosti. jsou to hodne podobna hesla a pokud nekdo vyluxuje databazi, tak se staci podivat, ze jsou jen prvni ctyri cisla jina a muze to zkusit. Osobone mam na toto prave radsi Lastpass, ktery mi dovoli pro kazdou sluzbu automaticky vygenerovat nove unikatni heslo a to pak plni do formularu. Zaroven je i pro android, takze mam hesla vsude.
A jen to co ma byt bezpecne, tak k tomu mam 2FA, ktery je bud v Keepasu nebo Yubikey authenticatoru
Ad keepasXC, existuje, ale jsou tam “ale”. jednak uz to nema takovou duveryhodnost, a druhak, nepodporuje pluginy a napriklad challenge-response je tam implementovan jinak, takze neni kompatabilni s originalnim Keepasem. Coz je hodne nestastne.
Souhlas v podstate se vsim 🙂 Ja mam uz dost starou radu Yubikey, takze je mozne ze ve ctvrte nebo pate serii je U2F “mimo” ony dva sloty. Coz by bylo fajn. V breznu si na RSA2019 konferenci nafasuju nejnovejsi kousky a vyzkousim 🙂
Asi delam neco spatne, ale vsechno jsem nastavil podle popisu v clanku, zadam heslo do KeePass, jenom problikne okno s tim status barem “Please press the button on your Yubikey”, ale ani nemusim tlacitko na Yubikey stisknout a rovnou mi to otevre databazi. To je prece spatne. Je to treba nejakym nastavenim, ze mu staci, ze je token v usb ale nevyzaduje stisknuti tlacitka na tokenu? Diky za radu.
Je potreba mit nastaveno “Require user input (button press)” v Yubikey personalisation toolu, viz obrazek
Super, diky. V obrazku v clanku to je zaskrtnute, ale defaultne v toolu to nebylo, takze jsem to napoprve minul. Uz to jede, diky za tip.
aha, tak je mozne, ze sem to zaskrtaval rucne. pridam to tam
je to tam
Děkuji za Váš článek, je velice praktický pro rodinnou bezpečnost.
Před dvěma dny se mi vymazal telefon, protože jsem několikrát (cca 20+) zadal špatně PIN. Ačkoliv jsem zadával všechny známé kombinace, telefon smazal nakonec všechna data. Všechna, i na SD kartě.
Díky Keepassu jsem měl v záloze všechna hesla na PC.
Ale moc prosím o informaci, jak nyní zaheslovanou a šifrovanou (Yubikey) databázi v PC (Dropbox) převést do mobilu, kde chci používat pouze čtečku otisků prstu.
Děkuji za odpověď.
obavam se, ze na to neexistuje jednoducha odpoved. Keepass v originalu pro mobily neni vubec. Jsou nejake klony, mozna i pro mobil (nepisete, zda android nebo iphone, ale je to celkem jedno).
Problem je, ze jakmile mate tato data v mobilu, neni to uz tak bezpecne jako na pc. v mobilu se k tomu mohou dostat dalsi aplikace (malware, atd.) navic keepass nebude original keepas, ale nejaky klon od cizi osoby, kde nevite, jake jsou jeho umysly.
Osobne bych to do mobilu vubec nedaval.
V clanku nezaznela dost podstatna informace ohledne doplnku KeeChallenge a xml souboru, ktery se ulozi vedle souboru s databazi KeePass a nesmi o nej uzivatel prijit.Pak muzu mit treba 10 zaloznich youbikey klicu a do hesel uz se bez tajneho hesla nedostanu.
ses si tim jist? pokud mam inicializacni parametry keechallenge, tak by to melo generovat stejna hesla ne? Mam dokonce pocit, ze presne takto mam udelano vice ulozist.
Jestli to chapu dobre, tak bez toho xml souboru nefunguje doplnek KeeChallenge a tim propojeni KeePass a Yubikey. V tom xml jsou ulozene nejake crypto informace tohoto doplnku, na webu KeeChallenge to je take:
“If the xml file gets corrupted or deleted (or if you lose your Yubikey) a recovery mode is provided to allow you to enter your secret (you did save it, didn’t you?) and decrypt the database.”
Taze bez xml souboru na me vyskoci toto okno viz. obrazek.
Navic to okno je asi toho doplnku, takze to super tajne heslo vygenerovane pres Yubikey Manager se mi nikam mimo HW klic zadavat nechce.
Tak podle toho co pises, tak je to presne jak sem psal ja.
V tom xml je jen protikus tomu seedu, ktery zadavas pri inicializaci. Rozhodne to neni o tom, ze tam davas seed z yubikey.
Presne tam pisou
“pokud se xml ztrati nebo poskodi, pripadne se ztrati yubikey, je tam recovery mode, kde zadas iniciacni secret a tim to rozsifrujes”
Existence xml souboru me prekvapila, proto myslim, ze v clanku by bylo dobre to zminit (ze v dropboxu neni jen kdbx, ale i xml), aby se ho lidi nesmazali a pak se nedivili recovery procesu.
Me se hlavne nezdalo to okno, nebyl jsem si jisty, jestli to je okno toho doplnku nebo primo aplikace Yubikey, podle obrazku v navodu, je to okno aplikace Yubikey (je stejne jako pri inicializaci), tak napsat zde kompletni secret key Yubkey je asi bezpecne.
Jinak dik za navod, Yubikey je super.
To ale urcite neni okno yubikey, to je okno toho pluginu pro keepas. Do nej se zadava ten recovery seed ktery si mas na zacatku opsat pri inicializaci toho doplnku.
To xml tam zkusim zminit, ale predpokladam, ze lide stejne synchronizujou celou slozku. A i kdyby ne, maji porad ten recovery seed 😉
A ten seed, to je proste seed toho challenge-reposnse, nikoli celeho yubikey, ale jen tohoto protokolu, ktery sis predtim pro tyto ucely do yubikey vytvoril.
Funguje to i na modrém klíči?
nevim co presne ma byt “TO”, ale jestli myslis challenge-response protocol, tak ne. modry je jen FIDO2
Zdravím,
ak naprogramujem slot 2 kvôli kee passu, mojim F2A prístupom (kódom) a tam kde mám nalinkovaný fyzický yubikey ako Twitter, FB atď sa nič nestane? Keďže v návode je písane že Yubikey má dva sloty, tak to znamená že všetky F2A sú na slote 1? Chcem iba zabrániť vymazaniu F2A prístupov z Yubikey.
ano, tak jak pises. hlavni slot je normalne pouzityu dal na 2FA ala gmail, twitter, atd, a druhy slot pak prave pro keepass
ale pokud se do toho ted poustis poprve, urcite si pridej jeste druhy 2FA do techto sw, at kdyz si ten klic nejak rozbijes, neprijdes o pristupy.