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.

widgety

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?
Vitalia.cz: Senioři a děti budou mít léky levnější

Senioři a děti budou mít léky levnější

DigiZone.cz: Rapl: seriál, který vás smíří s ČT

Rapl: seriál, který vás smíří s ČT

DigiZone.cz: UPC má v nabídce Discovery v HD

UPC má v nabídce Discovery v HD

Vitalia.cz: Studie porovnávala efekt homeopatie

Studie porovnávala efekt homeopatie

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

Vitalia.cz: Fyzioterapeutka: Chůze naboso? Rozhodně ano!

Fyzioterapeutka: Chůze naboso? Rozhodně ano!

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko