YubiKey NEO

Navzdory tomu, že od začátku 21. století již pěkných pár let uplynulo, nejčastější metodou autentizace je stále heslo. Poslední dobou se často objevuje možnost tzv. dvoufázové autentizace. Ta má podobu buď kódu zaslaného jiným kanálem (nejčastěji SMS) nebo jednorázového hesla generovaného na základě nějakého sdíleného tajemství, který zná pouze autentizační server a uživatel. S rozšiřováním chytrých telefonů a aplikaci Google Authenticator (a jim podobných) je druhá metoda také stále častější. Nicméně nejde o žádnou velkou novinku, autentizační hardwarové tokeny na bázi jednorázových hesel tu už nějakou dobu existují...

Generování jednorázových hesel (OTP) v aplikaci v mobilu a v hardwarovém tokenu má nějaká svá specifika. Hesla se generují na základě nějakých náhodně vygenerovaných dat, která znají obě strany. Pokud někdo k daným datům přijde, je schopen vygenerovat všechna jednorázová hesla. V případě aplikaci v mobilu jsou tyhle tajná data někde na flash paměti mobilu, tedy relativně přístupná. Naproti tomu hardwarový token je obvykle konstruován tak, aby z něj softwarově tyhle data nikdy dostat nešla. Neměly by tedy jít z něj vyextrahovat bez rozebrání tokenu a nějaké velké alchymie. To, že data (seed) kromě uživatele musí znát i autentizační server, přináší ale ještě další potíže. Prakticky nelze se jedním seedem autentizovat proti více autentizačním serverům. Autentizační server si drží i informaci kolikáté heslo v pořadí bylo naposledy použito. Při použití více nezávislých serverů se tahle informace časem rozjede a hesla přestanou být vyhodnocována jako správná. A vzhledem k tomu, že aplikace, kam se běžně přihlašujete, budou těžko používat jeden společný autentizační server, s jedním seedem si vystačíte prakticky jen k jedné aplikaci. U mobilního telefonu to není problém - seedů si tam uložíte, kolik chcete. Ale hw tokeny, které jsou běžně dostupné, umí generovat hesla jen z jednoho seedu, který navíc dost často bývá přednastaven od výrobce a mění se jen ztěžka. Další přítěží hw tokenů je typicky nutnost pro provozování vlastního autentizačního serveru používat jejich (placený software), za token se doplácí další licence a cenově to ve výsledku nevyjde zrovna levně. Tokeny YubiKey tyto nevýhody poměrně odstraňují - implementace je otevřená, bez problémů si lze spustit i vlastní autentizační server, platí se jen za hardware a model YubiKey NEO umožňuje i další zajímavé věci.

Základní verze YubiKey má dva programovatelné sloty. Na ně lze uložit buď seed pro generování OTP nebo statické heslo. Sloty se aktivují stisknutím tlačítka na tokenu - první slot krátkým stiskem, druhý dlouhým stiskem. Tokeny se ve výchozím stavu tváří jako USB klávesnice; po stisknutí tlačítka tedy dojde k vypsání hesla (ať už OTP nebo statického) automaticky, jakoby z klávesnice. YubiKey používá vlastní algoritmus pro generování OTP hesel. Vypsaná OTP hesla kromě samotného hesla obsahují i ID tohoto klíče a stav počítadla. Utility pro správu a ověřování klíčů jsou open source. Není tedy problém spustit si vlastní autentizační server, kterému jako jedinému sdělíme náš seed a budeme proti němu ověřovat. Nebo můžeme použít autentizační server YubiKey, do kterého seed uložíme. Nicméně pravda je, že generovaná hesla jsou samozřejmě nekompatibilní se standardem TOTP, který dneska většina aplikací umožňující dvoufázovou autentizaci používá (Google, Dropbox, Evernote, ...). U standardních YubiKey tokenů existuje možnost nahrád TOTP seed do slotu a následně pomocí aplikace v počítači z něj generovat validní TOTP hesla. Tedy na toto použití to fungovat bude, ale zabírá to jeden slot a standardní tokeny mají k dispozici jen dva. Model YubiKey NEO ale má ještě zajímavější alternativu.

YubiKey NEO je o něco dražší, než standardní verze, ale nabízí zajímavé funkce navíc. Je jím NFC rozhraní a možnost instalace Java Card appletů, které umožňují jeho funkce dále rozšiřovat. NFC rozhraní samo o sobě umožňuje posílání OTP hesel do zařízení s NFC. Tedy YubiKey heslo lze tak poslat i do mobilu/tabletu s NFC. Přes NFC lze používat i dohrané applety, viz dále.

Jednou z nejpoužívanějších appletů, který obvykle už bývá na tokenu přednahraný, je GPG applet. Po jeho nahrání se token tváří i jako GPG karta. Umožňuje tedy uložit soukromý GPG klíč a pracovat s ním tak, jak se u tokenů očekává - nelze jej vyexportovat ven, místo toho se požadavky na podepisování a dešifrování posílají do tokenu a ten vrací data. Nejedná se o náhradu za klasické PKI tokeny; funguje to v detailu trochu jinak, byť princip je velice podobný. Integrace karet v gpg je poměrně transparentní; karta se tváří jen jako další klíčenka, takže stačí token vložit do USB a pracovat s GPG jako standardně. Měl by tedy jít využít i pro autentizaci do SSH a tak podobně.

A dalším velice zajímavým appletem je OATH. Ten umožňuje právě ukládání seedů do tokenu a následné generování TOTP hesel. Lze jej tedy použít pro dvou fázovou autentizaci do aplikací, které TOTP podporují (a které se v poslední době tak rozmáhají). Ukládání seedů v tomhle případě není závislé na počtu slotů v tokenu. Patrně zde nějaký limit bude; nenašel jsem jaký, v mém tokenu mám uloženo 5 seedů a vše stále funguje. Pro čtení hesel na počítači se používá aplikace (napsaná v Pythonu, multiplatformní). Ta po otevření ukáže jednorázová hesla (která platí 30s) pro každý uložený seed. Generovat hesla z OATH appletu lze i na mobilních zařízeních s NFC. Stačí si nainstalovat aplikaci Yubico Authenticator, spustit ji a po přiložení tokenu k zařízení se přes NFC načtou vygenerovaná hesla a zobrazí se v aplikaci.

Osobně považuji Yubikey NEO za zajímavou alternativu pro dnešní dvoufázovou autentizaci. Cena samotného klíče není tak vysoká, narozdíl od softwarové aplikace v telefonu je zde prakticky minimální riziko, že klíč někdo zkopíruje, aniž bysme si toho všimli. Autentizaci lze dále provádět i z mobilních aplikací. S použitím Yubi OTP lze samotné přihlášení prakticky realizovat jen stiskem tlačítka. A použití s GPG se také může hodit. O nějakých nasazeních se ještě někdy příště rozepíšu...

Komentáře

Už se dá koupit i v ČR a první zkušenosti jsou super. Nevím, jeslti mi to schválí nasadit v práci, ale pro osobní užití paráda.