Yubikey Neo po dvou letech

Ondrej Mikle 19. 11. 2015

Hardwarový token Yubikey Neo byl představen před dvěma lety, ale vývoj naštěstí neustal a od té doby přibyla řada zajímavých novinek. Token je nyní chráněn proti doinstalování či modifikaci appletů. Nabízí také podporu U2F autentizace a PIV, který je díky PKCS#11 použitelný v SSH nebo Firefoxu.

Před dvěma lety jsem psal článek o schopnostech tehdy nového hardwarového tokenu Yubikey Neo. Yubico s vývojem nepřestalo a novinky na čerstvě doručeném Neo tokenu jsou příjemné.

První rozdíl je, že Neo je zamčen proti doinstalování dalších javacard appletů nebo modifikaci existujících. Pro běžného uživatele to není až taková změna, je to spíše pozitivní bezpečnostní vlastnost. Pro potenciálního vývojáře javacard appletů je už ale velmi těžké sehnat odemknutý Yubikey, musí to řešit rovnou s NXP Semiconductors, kteří jsou dodavateli samotného čipu.

Druhý a hlavní rozdíl jsou nové aplikace nainstalované na Yubikey: U2F (Universal 2-Factor) a PIV (Personal Identity Verification) applet.

Universal 2-Factor (U2F)

U2F je relativně nový standard uskupení FIDO, který má pravděpodobně nejlepší šanci stát se nejrozšířenějším standardem na hardwarovou dvoufaktorovou autentizaci. Před ním jsou už jen mobilní aplikace typu Google Authenticator, které ale ukládají klíč do obyčejného filesystému – malware ho může zkopírovat.

Z uživatelského pohledu Neo U2F funguje tak, že zadáte heslo, vložíte Neo do USB slotu a zmáčknete tlačítko (kapacitní senzor), až vás aplikace vyzve. Důležitá vlastnost je, že fyzický dotek malware vyvolat nemůže.

Neo U2F autentizace je realizována eliptickou křivkou secp256r1 (neboli NIST-P256). Standard U2F specifikuje ještě vícero možností, takovou perličkou je biometrické U2F zařízení.

Z největších hráčů nabízí zatím možnost použít U2F pro autentizaci Google a GitHub, vyčerpávající seznam je potom zde. Samozřejmě můžete použít U2F ve vlastních aplikacích, webových i newebových – Yubico nabízí knihovny a klienty na Githubu. Dočasná nevýhoda je, že nativně U2F podporuje Chrome od verze 41, Firefox jen s doplňkem, i když U2F se už dostalo do Firefoxu Nightly.

Neo U2F interně komunikuje přes USB hidraw protokol, který je sice jednoduchý, ale z hlediska browserů dost nestandardní. To je zároveň důvod, proč implementace v browseru vyžaduje nativní kód. Přes NFC by U2F mělo být možné používat také na telefonu s NFC čtečkou, ale neměl jsem to možnost vyzkoušet.

Autentizace s Neo U2F funguje téměř „out-of-the-box“, jediný extra krok je instalace udev pravidel, aby běžný uživatel systému mohl přistupovat k tokenu přes hidraw protokol.

Trochu škoda je, že U2F nespecifikuje šifrování, ale jen autentizaci, takže například nepůjde použít na šifrování celého disku (třeba s LUKS).

Personal Identity Verification (PIV)

PIV standard má už 10 let, jeho autorem je NIST. Vzhledem k jeho stáří nepřekvapí, že jeho použití je spojeno s PKCS#11 rozhraní. Má to tu výhodu, že aplikace podporující PKCS#11 podporují také PIV applet – třeba SSH nebo Firefox. Na druhou stranu má některá historická omezení.

PIV applet umí uložit čtyři klíče, podporuje algoritmy RSA-2048 a eliptickou křivku secp256r1. Klíče lze použít na autentizaci, podepisování nebo šifrování. Z praktických důvodů je asi RSA užitečnější, protože ho bude podporovat více serverových protistran. V následujícím výpisu je jeden slot ze čtyř obsazen klíčem:

Slot 9a:
    Algorithm:    RSA2048
    Subject DN:   CN=SSH key
    Issuer DN:    CN=SSH key
    Fingerprint:  d113880b642fded57193a0e3dd29790bd19df0cff9c611ab9af52ca4408df252
    Not Before:   Nov 15 13:21:44 2015 GMT
    Not After:    Nov 14 13:21:44 2016 GMT
Slot 9c:    No data available.
Slot 9d:    No data available.
Slot 9e:    No data available.
PIN tries left:    8

Sloty mají přiřazený význam:

  • 9a – PIV autentizace
  • 9c – digitální podpis (vždy se kontroluje PIN)
  • 9d – správa klíčů
  • 9e – autentizace kartou (PIN se nikdy nekontroluje)

Díky podpoře standardu PIV lze přes PKCS#11 použít knihovnu OpenSC k autentizaci přes SSH. Zkoušel jsem také použití PIV appletu ve Firefoxu pro autentizaci klientským TLS certifikátem.

Výhoda použití PIV appletu pro SSH oproti použití OpenPGP appletu pro SSH je ta, že nemusíte nahrazovat ssh-agent gpg-agentem. Program gpg-agent sice funguje ve většině případů jako náhrada správně, ale má několik bugů – když ještě používáte klasické klíče ze souboru spolu s ssh-add, tak ten klíč ze souboru nelze z agenta odebrat.

Z historických omezení je patrné jedno – délka PIN a PUK je 4–8 ASCII znaků (přesněji bajtů). Vzhledem k omezení počtu pokusů na PIN a PUK nejdou všechny možnosti vyzkoušet hrubou silou. Stejně z toho má ale člověk takový divný pocit.

Druhý historický artefakt je spíše kosmetický – k SSH klíči si musíte vygenerovat certifikát, i když SSH potřebuje jen ten klíč a už ne certifikát. Ten ale jednou při inicializaci PIV klíče vygenerujete a pak se o to už nemusíte starat. Proto ve výpisu nahoře se uvádí not before a not after, i když to SSH vůbec nekontroluje.

Kromě PIN a PUK má PIV applet ještě třetí management key, ten je něčím jako hlavním klíčem, vždy je to 3DES klíč. Pokud se vyčerpají pokusy na PIN, lze jej odblokovat přes PUK. Pokud se vyčerpají pokusy na PUK, musí se PIV applet úplně resetovat, nebo použít právě management key na znovunastavení PIN a PUK. Je možné použít PIV applet i v módu, kde se používá jenom PIN, pokud vám to vyhovuje více. Na první pohled je to trocha komplikované, ale je to spíše otázka zvyku.

Asi největší námahu představuje nastavení. Naštěstí Yubico se s nástroji dost snaží, a tak je k dispozici jak grafický yubikey-piv-manager, tak yubico-piv-tool pro příkazovou řádku.

Článek byl původně napsán pro blog sdružení CZ.NIC.

Našli jste v článku chybu?
Měšec.cz: 10 změn novely zákoníku práce

10 změn novely zákoníku práce

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Lupa.cz: Co najdete uvnitř kosmické sondy?

Co najdete uvnitř kosmické sondy?

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

120na80.cz: Víte, co je svobodná menstruace?

Víte, co je svobodná menstruace?

Lupa.cz: Kdo vykrádá LinkedIn? Zjistit to má soud

Kdo vykrádá LinkedIn? Zjistit to má soud

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

DigiZone.cz: Hodlá Markíza skončit v DVB-T?

Hodlá Markíza skončit v DVB-T?

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

120na80.cz: Lepší poporodní sexuální život? Žádný problém

Lepší poporodní sexuální život? Žádný problém

DigiZone.cz: Pevnost Boyard v září a česká

Pevnost Boyard v září a česká

Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak