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.

Ohodnoťte jako ve škole:

Průměrná známka 1,14

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
DigiZone.cz: Šlágr TV dostala pokutu 100 000 Kč

Šlágr TV dostala pokutu 100 000 Kč

Vitalia.cz: Utrhli jste kusadla? Nevadí

Utrhli jste kusadla? Nevadí

Vitalia.cz: Kam zmizela půlka ryby?

Kam zmizela půlka ryby?

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

120na80.cz: Odřenina. Jakou použít dezinfekci?

Odřenina. Jakou použít dezinfekci?

Lupa.cz: Je IoT bezpečnostní noční můra?

Je IoT bezpečnostní noční můra?

DigiZone.cz: Stream představil souboj žroutů

Stream představil souboj žroutů

Vitalia.cz: Grilujte v parku i na loďce

Grilujte v parku i na loďce

DigiZone.cz: Podzim přinese sport Viasat Ultra HD

Podzim přinese sport Viasat Ultra HD

Podnikatel.cz: Konečně vývar. Skoro jako od Steva Jobse

Konečně vývar. Skoro jako od Steva Jobse

120na80.cz: Jak správně vytrhnout mléčný zub?

Jak správně vytrhnout mléčný zub?

DigiZone.cz: Kolik lidí sleduje hokej na webu ČT?

Kolik lidí sleduje hokej na webu ČT?

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Podnikatel.cz: Využijte v byznysu nulové tarify

Využijte v byznysu nulové tarify

Podnikatel.cz: Přechod z OSVČ na firmu? Totální šok!

Přechod z OSVČ na firmu? Totální šok!

120na80.cz: Co jí dělá? Sklerotizaci

Co jí dělá? Sklerotizaci

Vitalia.cz: Kupujete český česnek? Je to trik

Kupujete český česnek? Je to trik

DigiZone.cz: V RS7 ukončila vysílání Retro Music Television

V RS7 ukončila vysílání Retro Music Television

DigiZone.cz: Panasonic v Praze uvedl TV pro rok 2016

Panasonic v Praze uvedl TV pro rok 2016

DigiZone.cz: Rádio Retro spouští stream o Karlu IV.

Rádio Retro spouští stream o Karlu IV.