KeePass a časové 2FA TOTP

KeePass a časové 2FA TOTP

Categories
You are here:
< Zpět

Dnešní článek bude o dvoufaktorovém zabezpeční pomocí TOTP kódů. Článek navazuje na ten minulý, kde jsem ukázal, jak si pomocí Yubikey, Keepassu a Dropboxu udělat bezpečné a zálohované úložiště.

Nejprve trochu o tom, co je TOTP.  TOTP je zkratka “Time-based One-time Password” a jsou to takové ty klasické 2FA kódy, které Vám generuje mobil nebo nějaké zařízení a vy je přepisujete do aplikací a webových stránek. Jak už jsem totiž zmiňoval dříve, ačkoli jsou tu mnohem lepší způsoby zabezpečení (například challenge-response z minulého článku), když už nějaká služba podporuje 2FA, tak většinou využívá právě tyto časové kódy.

Úvod do těchto 2FA kódů a toho, jak fungují, jsem se věnoval v jednom z dřívějších článků, kde jsem také doporučoval aplikaci Authy. Ta sama o sobě nění špatná, ale znamená to věřit externí službě. A i když neříkám, že je Authy špatné, je vždy lepší mít 100% kontrolu nad tím, jak a kde jsou moje data skladována. A o tom bude dneční článek. Jak si udělat náhradu Authy, jak tyto kódy synchronizovat, jak je uchovávat a jak zálohovat.

Celé řešení staví na aplikaci Keepass představenou minule. Za pomocí dvou dalších pluginů rozšíříme Keepass tak, že nejen, že si do něj uložíme zálohovací kódy k 2FA generátorům, ale také Keepass naučíme tyto kódy generovat, ale především, naučíme Keepass generovat QR kódy, které pak můžete vyfotit například mobilem, abyste si tento generátor přenesli i tam. A o tomto si dovolím tvrdit, že nikdo jiný zatím nemá a nenapadlo ho to :).

Standardní postup s 2FA kódy je, že Vás web vyzve, abyste si do mobilu vyfotili QR kód, někam bokem zapsali záložní kód a pak do webu vyplnili pro kontrolu vygenerovaný 2FA kód z mobilní aplikace.

Celý tenhle postup má hned několik nedostatků. Pokud budete chtít kódy synchronizovat mezi více zařízeními, nebo si pořídíte nové zařízení, znamená to ručně bezpečnostní kód přepsat. U jednoho kódu o nic nejde, ale pokud jich máte 20+, je to opruz. Další problém je s bezpečným uložením těchto záložních kódů. A třetí problém je, že pokud používáte 2FA na desktopu, tak se buď upíšete, protože neustále přepisujete kódy z mobilu do počítače, nebo budete mít Authy na počítači, kterému ale co se týká zabezpečení a bezpečnosti uložených dat moc nevěřím.

A nyní, jak to vyřešit lépe.

Jak nascanovat QR kód na počítači

Jako první budeme potřebovat ještě jednu aplikaci. A tou je ShareX. Krom toho, že je ShareX snad nejlepší aplikace na screenshoty na Windows, umí ještě jednu supr věc. Umí vyfotit QR kód, který je kdekoli na PC a přeložit ho do textové podoby. A tady začíná to kouzlo :).

Klikněte pravým tlačítkem na ikonce ShareX, vyberte “Tools” a “QR Code”.

Ukáže se Vám okno, které umí překládat QR kód na text a dokonce i opačně. Vyberte záložku “Decode” a stiskněte tlačítko “Decode from screen”. Ukáže se vám výběrový obdélník, pomocí kterého označíte QR kód na obrazovce.

Takto vyfocený QR kód se Vám přeloží na uri adresu. Pokud například vyfotíte kód, který je na obrázku výše, získáte kód otpauth://totp/me2%40example.com?secret=RLVSCIGF5GOFGW6OEX6F34N432IJKGW3&issuer=DevMovieManager.

QR kódy a KeePass

Jako další si do KeePassu nainstalujte KeePassQRCodeView (link na přímé stažení zde). Po stažení nahrajte soubor KeePassQRCodeView.plgx  do adresáře KeePass/Plugins/KeePassQRCodeView.plgx

Restartujte KeePass a vytvořte novou položku, do které si chcete službu uložit. Po vyplnění základních údajů se přepněte na záložku Advanced a stiskněte Add.

Do “Name” vyplňte třeba “2FA QR” a do Value vložte získaný link (otpauth://……). Zaškrtněte ještě “Enable in-memory protection” pro ještě větší bezpečnost a stiskněte OK.

Celou položku nyní uložte dalším stisknutím OK. Tím máte v KeePassu uložený secret seed (česky řečeno tajný řetězec), ze kterého se pak odvozují časové kódy.

Nyní na nové položce stiskněte pravé tlačítko a v kontextovém menu zvolte QR Code a v něm 2FA QR.

A voila…. Máte QR kód, který můžete kdykoli znovu vyfotit a máte ho bezpečně uložený v KeePassu. Takže je zálohovaný v cloudu, zároveň bezpečně šifrovaný. Dostanete se k němu jen vy, případně kdokoli další, komu dáte do KeePassu skrz Yubikey a heslo přístup.

Generování časových kódů z Keepasu

Jak by řekl Horst Fuchs “To ale to stále není vše!”.

Nyní Keepass umí generovat QR kódy, ale my bychom chtěli, aby uměl také generovat časové kódy, abychom je mohli snadno vkládat do aplikací a webových stránek bez nutnosti je přepisovat z mobilu.

Pro tyto účely nainstalujeme další plugin s názvem Tray TOTP Plugin for KeePass2 ke stažení zde. Po stažení opět nahrát do KeePass/Plugins/TrayTotp.plgx. Po restartu KeePassu se v kontextovém menu jakéhokoli záznamu objeví nová položka  “Copy TOTP” a “Selected Entries->Setup TOTP”.

Jelikož se jedná o jiný plugin, je pro něj potřeba znovu vyplnit TOTP heslo generátoru, které jsme vyfotili z QR kódu. To uděláme tak, že na zvolené položce v kontextovém menu vybereme Selected Entries->Setup TOTP.

Nyní je potřeba projít a vyplnit parametry generátoru. Na první obrazovce dáme “Next”, na další obrazovce ponechte 30 second a zase “Next”. Na další pak vyplňte “6 lenght”, jelikož v 99% budete potřebovat šestimístné kódy.

Na další obrazovce je potřeba zadat tajný kod, který jsme předtím nascanovali pomocí aplikace ShareX z QR kódu. V našem případě to bude “RLVSCIGF5GOFGW6OEX6F34N432IJKGW3″  a opět potvrďte pomocí “Next”. Na další obrazovce nic nevyplňujte (jelikož to v pluginu asi teď nefunguje) a dejte opět “Next”. Na poslední obrazovce pak dejte “Proceed”. Tím máte generátor vyplňený.

Po tomto vyplnění lze nyní TOTP kód získat dvěma možnostmi. Tou první je v okně KeePassu zvolit položku, stisknout pravé tlačítko a dát “Copy TOTP” (případně stisknout CTRL+T v tomto okně). To není špatně, ale lze to ještě snadněji.

KeePass má totiž ještě ikonku v Tray oblasti (to je to ve Windowsech vpravo dole vedle hodin, kde jsou různé malé ikonky). Na té, když kliknete pravým tlačítkem, se nyní ukáže seznam všech nakonfigurovaných TOPT kódů. Stačí tak jen vybrat ze seznamu a do clipboardu (schránky) se Vám ihned kód nakopíruje.

Samozřejmě, pokud máte úložiště uzamčeno, ke kódům se ani přes Tray ikonu dostat nedá. Je potřeba nejprve odemknout úložiště heslem a Yubikey a pak až se Vám kódy vygenerují.

QR Kódy na mobilech

A o mobilech bude poslední část článku. Občas je totiž dobré mít 2FA kódy u sebe a bohužel, k takto uloženým a zabezpečeným kódům v KeePassu se na mobilu nedostanete. Je proto potřeba udělat ještě jeden krok.

Na mobilu lze mít Google Authenticator, ale ten není nijak zabezpečen. A jelikož 2FA má fungovat jako zvýšená bezpečnost, tuto variantu bych určitěn nedoporučoval. Další je Authy, ale jak jsem už psal, musíte věřit třetí straně a hlavně, toto celé děláme proto, abychom Authy nemuseli mít. A pak je tu ještě jedna aplikace – Yubico Authenticator.

Jde o 2FA TOTP generátor kódů pro mobilní zařízení (tuším, že mají i desktopové verze, ale ty už nepotřebujem), kdy kódy jsou zabezpečeny pomoci HW klíče od Yubico s NFC přístupem. Celé to funguje tak, že jsou 2FA kódy uložené někde u nich v cloudu, ale jsou zašifrované pouze Vaším klíčem. Díky tomu, když aplikaci na mobilu spustíte, tak neuvidíte žádná data. A podle toho, jaký klíč s NFC přiložíte, tak takové klíče se Vám na mobilu ukážou. Díky tomu, když HW klíč přiložíte na jiném mobilu, stále uvidíte své kliče.

Bohužel, na druhou stranu, pokud máte klíče dva, je nutné pro oba zadat TOTP kódy znovu. To nám ale nevadí, protože KeePass umí tyto QR kódy vygenerovat, takže přidat nový klíč je hračka.

Přidat klíče do Yubico Authenticatoru je opravdu snadné. Nainstalujte si jejich aplikaci z Android Store, spustťe aplikaci a dejte “Přidat QR kód”. Pro přidání je potřeba kód potvrdit přiložením NFC klíče k mobilu (v případě Samsungu přiložit doprostřed zad mobilu). Tím se klíč zašifruje a uloží.

Zkuste si aplikaci ukončit a znovu spusťit. Po spuštění je aplikace opět prázdná. Přiložte ale klíč k zádům mobilu a najednou uvidíte všechny uložené kódy. Toto je super vlastnost, na kterou jsem přišel až později při využívání Yubikey. Bohužel se o tom člověk na webu nedočte.

V případě ztráty mobilu stačí aplikaci znovu nainstalovat a přiložit klíč. Vše máte opět k dispozici. A v případě ztráty nebo poruchy Yubikey, stačí QR kódy znovu vyfotit z KeePassu.

Závěrem

Jak vidíte, vysoké zabezpečení v dnešní době bohužel obnáší i trochu té práce navíc. Spousta z kroků by se dala zjednodušit, sjednotit funkce pluginu do jednoho, atd. Na druhou stranu, buďme rádi, že to lze aspoň takto. Dalo mi to opravdu spoustu hledání a vymýšlení, než jsem našel způsob, jak udělat vše takto uceleně a s co nejméně externími aplikacemi.

I když je uložení a nastavení trochu složité a šlo by udělat lépe, díky tomuto postupu budete mít absolutní kontrolu nad Vašimi 2FA kódy, budete mít komfort focení QR kódů z mobilu, budete mít vše zaheslované a zálohované.

A to je pro dnešek vše. Tímto třetím článkem uzavírám tuto mini sérii zabezpečení. Předal jsem Vám mé kompletní know-how v zabezpečení a ukázal, jak máme zabezpečení u nás řešeno my. A jelikož mu opravdu věřím, nebojím se ho proto takto sdílet. Pokud by někdo viděl v tomto zabezpečení nějakou slabinu, určitě napište dolů pod článek. Rád se přiučím :).

Jak jsem už několikrát zmiňoval, v případě celého řešení nešlo jen o 100% bezpečnost, ale taky o zálohování a recovery proces. Díky všem těmto krokům budete mít Vaše data a klíče v bezpečí jak před útoky, tak proti případným živelným katastrofám, či při jiných nepředvítelných událostech. Pokud někam do bezpečné schránky uložíte přístup do Dropboxu spolu s jedním záložním Yubikey (nebo jiným U2F klíčem), bude se moci kdokoli oprávněný ke všem Vašim datům v případě potřeby dostat. (Z dropboxu stáhne KeePass, tam se dostane pomoci Yubikey, kde má pak všechny hesla, 2FA kódy a případně i třeba poznámky nebo Vaši závěť 🙂 ).

Článek pak zakončím stejně jako minule prosbou o podporu našeho blogu. Pokud Vám návod pomůže, zvažte zaslání nějaké té koruny na podporu našich článků. I tentokrát si jeho výroba vzala cca 4 hodiny a to nepočítám množství času, než jsem celý systém vymyslel a dal dohromady. Proto pokud Vás článek inspiroval a pomohl Vám s Vaším zabezpečením, budu rád, když nám nějakou korunu přispějete.

 

Pomohl Vám náš blog? Chcete nás podpořit? I málo udělá radost 😉
Table of Contents

9 thoughts on “KeePass a časové 2FA TOTP

  1. Diky za podrobny navod, sice to vypada jako spousta prace s prvotnim nastavenim, ale lepsi nez si pak trhat vlasy nad ukradenym uctem 🙂

  2. Ahoj, používám podobně managera Bitwarden…taktéž open-source, moznost totp, 2FA, moznost na mobilu, atp …neni nutno instalování pluginů, atp….jednodušší nastavení s podobným výsledkem myslím….

    1. Ahoj, diky za tip. Do ted jsem o Bitwardenu neslysel, ale podle stranek vypada zajimave. mas primo zkusenosti s tim premium uctem a propojenim na Yubikey?

  3. S yubikey zkusenost nemám, protože zatim nevlastním, ale plánuji….zatim používám U2F pres hw peněženku Ledger…bohužel nefunguje na rozšíření v prohlížeči, což ale bude problém Ledgeru (načítá, ale nenačte)…takze musim mit zatim pres email (je tam moznost take yubikey, google, authy a jeste něco + samozrejme recovery kódy)…prave chci vyzkoušet jeste yubi, ale nebude problém myslím…
    S tim 2FA pres mail jsem to vyřešil tak, ze jsem si dal zapamatovat zařízení po ověření pres mail a pak moznost mailu zrušil a nechal jen 2FA….
    Veškeré tohle nastaveni je ale pres webtrezor (kde mi take U2F s Ledgerem funguje)….
    Jinak za me zatim spokojenost (přešel jsem nedávno z jinych služeb – authy, atp)….jedine co, tak porad přemýšlím, zda-li je rozumne nechávat i hesla i 2FA na jednom místě…..?

    1. No, prave to jedno umisteni hesel i 2FA mi na tom trosku vadilo.

      Je fajn, ze konecne nejaka sluzba umi ulozit 2FA QR kody k jejich zaloze, ale tim, ze je to zaroven v cloudu, tak musis verit, ze je to 100% safe.

      Z tohodle duvodu mam radsi hesla v Lastpassu a 2FA v Keeppassu, takze by utocnik musel prolomit a vyluxovat dve sluzby.

      Jelikoz beru, ze vsude, kde je 2FA jsou kriticke sluzby (email, cryptoburzy, dropbox,…), tak by to chtelo mit opravdu v 100% bezpeci.

      I kdyby Bitwarden pouzil HW data z klice k totalnimu zasifrovani, tak stale je problem v tom, ze v urcitou chvili bude na PC vse rozsiforovane (pri odemknuti a pristupu se to proste jinak udelat neda). A v tu chvili mas hesla, 2FA a hlavne i 2FA seed + recovery odemceny.

      Tady je to na zvazenou, jestli preferovat pohodli nebo bezpeci a co presne temi 2FA chranis a jak velka je potencionalni sance, ze se na to nekdo zameri.

      1. Ano, souhlasím…na ten keepass se podívám pro 2FA….ja predelaval hromadu věcí, abych zvýšil sve soukromi, čili napr. Authy a jeho podminky soukromí me docela “šokovali”….bitwarden mi zatim vyhovuje ve všem, krome zmíněného kombinovaneho uložení hesel a 2FA….+ teda předpokládám, ze s yubi bude spolupracovat perfektně….
        Ohledne uložení v cloudu – take k zamyšlení, pokud vezmu v úvahu, ze klíče k rozšiřování vlastnim jen já (zero-knowledge+end-to-end), tak by to melo byt safe, ale musi člověk věřit (i kdyz open source)….

        1. s tim cloudem, pokud by opravdu bylo vse zasifrovane HW klicem, tak cloud neni problem (sam pro sifrovany Keepass storage pouzivam dropbox).

          Problem je spis v tom, ze na vsech zarizenich, kde rozsifrujes ten storage (tzn nejen PC, ale i android nebo jiny mobilni OS) musis verit tomu, ze po rozsifrovani ti to nikdo nevydoluje.

          V tom je nejvetsi potiz. Ze rozsifrujes celou DB jednim klicem a v tu chvili je v pameti nechranena.

          Zatimco kdyz to mas ve dvou sluzbach, tak mas rozsifrovanou teoreticky vzdy jen pulku veci, navic ve dvou ruznych SW, takze by utok musel cilit na vice SW najednou.

          Vyhoda toho mit ty 2FA recovery v keepasu je, ze nikdy neopusti me PC, protoze do KeePassu se prihlasuju jen na PC.

          Tim padem na mobilu, kdyz pak vyuzivam LastPass, tak i v pripade uniku cele DB mi nehrozi zadne velke riziko (dulezite veci jsou pod 2FA a nedulezite at si klidne utocnik veme).

          A k 2FA TOTP casovym kodum pak pouzivam od Yubio jejich appku, ktera pomoci Yubikey sifruje a generuje klice.

          Je to defakto zabezpeceni diky rozdeleni dat na vice mist, takze pripadnemu utocnikovi znesnadnuju pristup k datum.

          Toto by slo resil leda nejak dvema databazemi v bitwardenu, kdy jedna, online, by obsahovala jen hesla. a druha, offline, by obsahovala pak 2FA recovery klice a dulezitejsi veci.

          Ale to nevim, jeslti nejak bitwarden umi. Tim by se to dalo dost vyresit, protoze na potencionalne nebezpecnych zarizenich (cim android nebo plugin v prohlizeci rozhodne jsou) by si pristupoval jen k mene kritickym vecem.

  4. Jasně, rozumím….proto právě pořád přemýšlím, jestli je to dobrý nápad, mít vše v Bitwardenu…jakmile by byl napaden, tak má útočník vše potřebné k přihlášení….přesně na ty kritické věci je lepší mít rozděleno….

    no popřemýšlím, každopádně díky za pokec 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *