Hlavní navigace

FIDO U2F by Plug-up: levný přihlašovací token nejen ke Google

8. 1. 2015
Doba čtení: 3 minuty

Sdílet

Google nedávno ohlásil podporu pro dvoufaktorovou autentizaci s použitím FIDO U2F a současně se na trhu objevil relativně levný token. Neodolal jsem a musel jsem jich pár na zkoušku objednat. Použít se dají u Google, ale i třeba ve WordPressu. Jak fungují v Linuxu? Co potřebují na straně počítače a služby?

Token dorazil asi tři týdny po objednání, na obrázku je vidět, že se jedná vlastně o plastovou kartičku, ze které se vylomí samotný token. Ten se potom ještě přeloží, aby seděl pevně v USB slotu a obě poloviny se slepí oboustrannou lepicí páskou. Ve srovnání s Yubikey působí méně profesionálně, ale přeci jen cena je výrazně příznivější. Také nemá žádné tlačítko, generování kódu se odvozuje od zasunutí do USB slotu.

Pokud jej chcete použít pod Linuxem, musíte přidat pravidlo do udev, tedy do souboru  /etc/udev/rules.d/10-security-key.rules:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", MODE="0660", GROUP="users"

Místo GROUP="users" lze použít i nějakou omezenější skupinu, kterou si vytvoříte pro uživatele, kteří budou toto přihlašování používat. Reloadnete konfiguraci pomocí udevadm trigger a můžete si klíč zkusit přidat do Google účtu. Pokud máte dostatečně aktuální Chrome, tak to funguje bez jediného zaváhání.

Klíč lze ale použít i ve vlastních projektech. Vyzkoušel jsem integraci do WordPressu a ani tam se nejedná o žádný složitý problém. Pokud chcete používat U2F pro vlastní projekty, je nutné do Chrome přidat plugin. Bez pluginu nemají aplikace přístup k API Chrome pro komunikaci s klíčem.

Na straně WordPressu jsem použil modul od Yubico, instalace je triviální, checkout z git, dotažení závislostí přes composer, umístění do adresáře pro pluginy ve WordPressu a aktivace modulu. Celá akce proběhla zcela hladce.

Nyní je možné v profilu uživatele přidávat klíče. Oproti použití s Google servery se bude objevovat žádost o povolení užití klíče:

Pokud přístup povolíme, klíč se přiřadí a při dalším přihlášení je uživatel po odeslání přihlašovacího dialogu podržen na mezistránce, dokud klíč nepoužije. Pokud 30 sekund klíč nevloží/neaktivuje, je vrácen zpět na zadání jména a hesla. Tady jsem zaznamenal jediný problém, ta stránka neobsahuje žádný vysvětlující text, takže pokud uživatel neví, jak klíč použít, jen sleduje prázdnou obrazovku a po chvíli dostává znovu přihlašovací dialog.

CS24_early

Další teoretickou možností využití klíče je přihlašování do Linuxu z konzole přes PAM. To je současně jediná funkcionalita, kterou jsem nedokázal rozchodit. Problém je zřejmě v tom, že PAM knihovna je psána jen pro klasický Yubikey s tlačítkem a tak se nevyrovná s tím, že klíč je potřeba do USB portu vložit k jeho aktivaci. Pokud klíč není vložen, PAM modul okamžitě vrací hlášení o neúspěchu, pokud je vložen a vytažen pro nové vložení, modul ohlásí chybu, že se mu klíč v průběhu ověřování ztratil bez odpovědi. Navíc tady budete možná narážet na „technologické omezení“ dané tím, že komunikaci s klíčem nelze forwardovat přes SSH, musí být vložen do USB portu přímo v tom systému, kde jej chcete použít.

I přes nefunkčnost PAM modulu bych klíč označil za dobrou koupi. Řešení konkuruje jednorázovým klíčům podle RFC 6238 (s nejznámější implementací Google Authenticator), lze jej ostatně aktivovat současně, ale pro uživatele je komfortnější než opisování čísel, která mají navíc omezenou platnost. Otázka je, jestli je bezpečnější, na toto téma očekávám vášnivou diskuzi. Na jednu stranu používá silnější šifrování, na druhou ke zneužití stačí útok na jedno zařízení (PC uživatele), proti použití generátoru jednorázových hesel, typicky umístěnému v zařízení jiném.

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

Autor článku

Dan Ohnesorg pracuje jako systémový administrátor, správce sítí a příležitostný programátor v jazycích, pro které se nedá najít nikdo, kdo by je znal.