YubiKey NEO a OATH applet

Standardní YubiKey obsahuje vlastní implementaci jednorázových hesel se specifickým formátem. Na druhou stranu populární služby poslední dobou umožňují dvoufázovou autentizaci, ale typicky s návodem na podporu google authenticatoru - tedy generování hesel dle TOTP standardu o 6 znacích. Pro standardní YubiKey existuje aplikace, která generuje TOTP hesla. Nicméně každý seed zabere jeden slot v YubiKey (a sloty jsou zde jen dva) a přitom každá služba vygeneruje a vnutí seed vlastní. Nicméně pro YubiKey NEO existuje jiná varianta - doinstalování OATH appletu a ukládání seedů do něj - není to závislé na slotech YubiKey a seedů lze přidat relativně mnoho. A to možná nejlepší - hesla lze přečíst i pomocí mobilu/tabletu přes NFC.

OATH applet je další "aplikace" běžící přímo na YubiKey klíči. Tedy podobně jako GPG applet, který umožňuje yubikey chování jako OpenPGP card. U dnešních YubiKey NEO je OATH applet již standardně nainstalován. U starších tomu tak nebylo. Například ten můj přišel sice s nainstalovaným GPG appletem, ale OATH applet jsem musel doinstalovávat ručně. Řešení tedy existuje - applet je opensource a lze ho tedy dohrát i do starších klíčů, kde standardně nainstalován nebyl. Jen instalace nepatří mezi zrovna uživatelsky nejpříjemnější. Detailní návod jak postupovat je na fóru yubica.

Pokud applet již máme, budeme potřebovat ještě obslužnou aplikaci - Yubico Authenticator. Ta je dostupná jako multiplatformní aplikace pro desktop (yubioath-desktop) na adrese: https://developers.yubico.com/yubioath-desktop/Releases/ nebo v Google Play pro mobilní zařízení s Androidem. Aplikace se používá jak pro přidávání seedů, tak i pro generování jednorázových hesel. Na rozdíl od Google authenticatoru je ale seed stále uložen jen v tokenu a ne v samotném zařízení - tím se tedy značně minimalizuje riziko zkopírování seedu nějakým malwarem nebo 3. osobou. Jednotlivých seedů lze do tokenu přidat vícero. Nepovedlo se mi najít, jaký je jejich limit (který zjevně jednou někde narazit musí). Osobně jich mám aktuálně uloženo 5 a zatím nebyl žádný problém.

Níže je screenshot desktopové aplikace. Ta se po spuštění objeví v systray a po rozklepnutí ikony v systray se zobrazí vyfocené okno (samozřejmě je potřeba mít Yubikey vložen do USB portu počítače). Zde jsou vypsány jednotlivé zadané účty a k nim vpravo aktuálně platná jednorázová hesla. Dvojitým klepnutím na heslo se okno zavře a heslo se zkopíruje do schránky. Pomocí add account je možné přidat další seed - stačí vyplnit jméno účtu (to je to, co se v aplikaci ukáže vlevo) a seed, ze kterého se hesla generují. Drtivá většina dnešních služeb podporuje TOTP standard a obvykle uvádí návod pro použití s google authenticatorem. Ten se dá použít - v určitém kroku se objeví QR kód, ve kterém je právě uložen seed. U QR kódu obvykle bývá možnost zobrazit kód v textové podobě - toho využijeme a následně jej zkopírujeme do kolonky secret key. Tím se seed do yubikey uloží a začnou se generovat hesla. V menu aplikace je ještě jedna zajímavá možnost - nastavit heslo k Yubikey. Tím se Yubikey zamkne a následně při otevření aplikace znovu je potřeba napřed zadat toto heslo, než se zobrazí vygenerovaná hesla. Je to ochrana proti tomu, aby nemohl platné heslo získat každý, komu se klíč dostane na chvíli do ruky.

Desktopová verze Yubico Authenticator

Mobilní verze z Google play prakticky nabízí všechny možnosti desktopové verze s dvěma odlišnostmi. Jedna odlišnost je, že zde při přidávání je možno i scannovat přímo QR kód a ne jenom kopírovat textovou verzi seedu. Druhá je, že se s YubiKey nekomunikuje přes USB, ale přes NFC - je tedy potřeba mít zařízení podporující NFC a mít ho zapnuté. Po spuštění aplikace je tedy okno prázdné - v tuhle chvíli je potřeba přiložit YubiKey k zařízení a po přečtení údajů se opět objeví vygenerovaná hesla.

Jelikož seedy jsou uložené v Yubikey přímo, aplikace na desktopu nebo mobilních zařízeních je tedy pouhá aplikace prakticky bez možnosti nastavení. Pokud aplikaci tedy nainstalujeme na jiný počítač a vložíme náš YubiKey, uvidíme v ní vygenerovaná naše hesla, která jsme do něj předtím zadávali.