Portál AbcLinuxu, 15. prosinec 2017 05:49

Yubikey. Co to je a co to umí (2)

3. 5. 2016 | Bystroushaak
Články - Yubikey. Co to je a co to umí (2)  

Koupil jsem si Yubikey 4. Po úvodním článku pokračujeme v popisu, jak Yubikey zprovoznit na Linuxu.

Instalace v distribuci Linux Mint (pokračování)

Předchozí kroky najdete v závěru minulého dílu.

Generování klíče

Trochu problém je, že jak je možné vidět na výpisu z „--card-status“, zatím jsou podporované pouze 2048bitové klíče. Osobně už od roku 2009 používám klíč 4096bitový. Asi bych mohl přidat jen podklíč, ale pro účely tohoto návodu vygeneruji nový klíč.

Návod v angličtině je přímo na stránkách Yubikey (webarchive), osobně ale používám systém v češtině a tenhle článek je zaměřen na české uživatele, proto zde návod zopakuji v české verzi systému.

Ke generování klíče a jeho nahrání do Yubikey použijeme gpg2, který budu takto explicitně uvádět, neboť na Mintu se tak momentálně jmenuje. Pokud máte v systému GPG verze 2 nainstalovaný jen jako „gpg“ (ověříte „gpg --version“), použijte ten.

$ gpg2 --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Prosím, vyberte druh klíče, který chcete:
   (1) RSA a RSA (implicitní)
   (2) DSA a Elgamal
   (3) DSA (pouze pro podpis)
   (4) RSA (pouze pro podpis)
Váš výběr?

Příkaz pro generování nového klíče je „gpg2 --gen-key“, který nám nabídne verzi šifrování. Vybereme 1, buďto napsáním čísla, nebo jen potvrzením klávesou Enter.

klíč RSA může mít délku v intervalu 1024 až 4096 bitů.
Jakou délku klíče si přejete? (2048)

Dále následuje dotaz na délku klíče. Jak už jsem psal – pro Yubikey potřebujeme délku 2048 bitů, která je implicitně vybrána. Potvrdíme tedy opět Enterem.

Požadovaná délka klíče je 2048 bitů.
Prosím určete, jak dlouho by klíč měl platit.
         0 = doba platnosti klíče není omezena
      <n>  = doba platnosti klíče skončí za n dní
      <n>w = doba platnosti klíče skončí za n týdnů
      <n>m = doba platnosti klíče skončí za n měsíců
      <n>y = doba platnosti klíče skončí za n let
Klíč je platný pro? (0)

PGP klíče mohou mít omezenou platnost. Pokud děláte opravdu paranoidní věci, platnost klíče byste měli omezovat. Na takové to domácí šifrování je v pořádku zvolit neomezenou dobu. Potvrdíme Enterem a poté znovu písmenem a.

Platnost klíče nikdy neskončí
Je to správně (a/N)? a

GnuPG potřebuje sestrojit uživatelské ID, aby bylo možné rozpoznat
váš klíč.

Jméno a příjmení:

GPG nyní požaduje metadata, která budou přidána ke klíči. Podle těchto metadat vás poté budou identifikovat ostatní uživatelé a také podle nich probíhá ověřování emailu, pokud klíč nahrajete do veřejné složky. Doporučuji si tedy nevymýšlet úplné blbosti.

Jméno a příjmení: Bystroushaak
E-mailová adresa: bystrousak@kitakitsune.org
Komentář: 
Zvolil(a) jste tento identifikátor uživatele:
    „Bystroushaak <bystrousak@kitakitsune.org>“

Změnit (J)méno, (K)omentář, (E)-mail, (P)okračovat dál nebo (U)končit program?

GPG se ještě ptá na potvrzení, tak mu ho dáme napsáním „p“ a stisknutím Enteru. Pak se zeptá na heslo, které se u mě otevře v externí aplikaci s grafickým uživatelským rozhraním. Tímto heslem budete odemykat svůj klíč, doporučuji tedy zvolit něco silného.

Změnit (J)méno, (K)omentář, (E)-mail, (P)okračovat dál nebo (U)končit program? pPro ochranu Vašeho tajného klíče musíte zadat heslo.

Okamžitě poté začne generování klíče. Jedná se o časově docela náročný proces, pokud nemáte hardwarový generátor entropie. Já nemám, takže to trvá několik minut:

Musíme vytvořit mnoho náhodných bajtů. Během vytváření můžete
provádět nějakou jinou práci na počítači (psát na klávesnici, pohybovat myší,
používat disky); díky tomu má generátor lepší šanci získat dostatek entropie.

Jakmile jsou klíče vygenerovány, následuje shrnutí:

gpg: klíč 3F6F3D1B označen jako absolutně důvěryhodný.
veřejný a tajný klíč byly vytvořeny a podepsány.

gpg: kontroluji databázi důvěry
gpg: požadováno 3 částečné důvěry a 1 úplné důvěry, model PGP
gpg: hloubka: 0  platných:   1  podepsaných:   0  důvěra: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/3F6F3D1B 2016-01-11
      Otisk klíče = 9F87 EECF CDAA 263C AC00  A5A0 3F92 841C 3F6F 3D1B
uid                  Bystroushaak <bystrousak@kitakitsune.org>
sub   2048R/EF4ADF82 2016-01-11

Povšimněte si ID klíče hned na prvním řádku: „3F6F3D1B“. Toto ID je dobré si uložit, protože ho budeme ještě několikrát potřebovat.

Přidání autentizačního klíče

Nyní potřebujeme ke klíči přidat ještě další podklíče, které budou sloužit k autentizaci a podepisování.

$ gpg --expert --edit-key 3F6F3D1B
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Tajný klíč je dostupný.

pub  2048R/3F6F3D1B  vytvořen: 2016-01-11  platnost skončí: nikdy       použití: SC  
                     důvěra: absolutní    platnost: absolutní
sub  2048R/EF4ADF82  vytvořen: 2016-01-11  platnost skončí: nikdy       použití: E   
[  absolutní ] (1). Bystroushaak <bystrousak@kitakitsune.org>

gpg>

Příkazem „gpg --expert --edit-key 3F6F3D1B“ (nahraďte za ID vašeho klíče) vstoupíme do expertního módu editace klíče. Zadáme příkaz „addkey“:

gpg> addkey
Klíč je chráněný.

Musíte znát heslo, abyste odemknul(a) tajný klíč pro
uživatele: "Bystroushaak <bystrousak@kitakitsune.org>"
délka 2048 bitů, typ RSA, klíč 3F6F3D1B, vytvořený 2016-01-11

Prosím, vyberte druh klíče, který chcete:
   (3) DSA (pouze pro podpis)
   (4) RSA (pouze pro podpis)
   (5) ElGamal (pouze pro šifrování)
   (6) RSA (pouze pro šifrování)
   (7) DSA (nastavit si vlastní použití)
   (8) RSA (nastavit si vlastní použití)
Váš výběr?

Chceme možnost číslo „8“:

Váš výběr? 8

Pro klíč RSA lze provést: Podepisování Šifrování Autentizace 
Aktuálně povolené akce: Podepisování Šifrování 

   (S) Zapnout/vypnout schopnost podepisovat
   (E) Zapnout/vypnout schopnost šifrovat
   (A) Zapnout/vypnout schopnost autentizovat
   (Q) Konec

Váš výběr?

Na řádku začínajícím ‚Aktuálně povolené akce:‘ vidíme, že právě máme povoleno ‚Podepisování‘ a ‚Šifrování‘. My chceme čistě autentizační klíč, proto postupně zadáme „A“, „S“ a poté „E“.

Pro klíč RSA lze provést: Podepisování Šifrování Autentizace 
Aktuálně povolené akce: Podepisování Šifrování 

   (S) Zapnout/vypnout schopnost podepisovat
   (E) Zapnout/vypnout schopnost šifrovat
   (A) Zapnout/vypnout schopnost autentizovat
   (Q) Konec

Váš výběr? A

Pro klíč RSA lze provést: Podepisování Šifrování Autentizace 
Aktuálně povolené akce: Podepisování Šifrování Autentizace 

   (S) Zapnout/vypnout schopnost podepisovat
   (E) Zapnout/vypnout schopnost šifrovat
   (A) Zapnout/vypnout schopnost autentizovat
   (Q) Konec

Váš výběr? S

Pro klíč RSA lze provést: Podepisování Šifrování Autentizace 
Aktuálně povolené akce: Šifrování Autentizace 

   (S) Zapnout/vypnout schopnost podepisovat
   (E) Zapnout/vypnout schopnost šifrovat
   (A) Zapnout/vypnout schopnost autentizovat
   (Q) Konec

Váš výběr? E

Pro klíč RSA lze provést: Podepisování Šifrování Autentizace 
Aktuálně povolené akce: Autentizace 

   (S) Zapnout/vypnout schopnost podepisovat
   (E) Zapnout/vypnout schopnost šifrovat
   (A) Zapnout/vypnout schopnost autentizovat
   (Q) Konec

Váš výběr?

Jak vidíte, na konci by nám měl zbýt jen řádek popisující „Aktuálně povolené akce: Autentizace“. Poté vybereme „Q“, pro ‚Konec‘. GPG se opět zeptá na délku klíče. Opět chceme 2048, proto dotaz stačí jen odentrovat:

Váš výběr? q
klíč RSA může mít délku v intervalu 1024 až 4096 bitů.
Jakou délku klíče si přejete? (2048)

Následuje opět výběr platnosti:

Požadovaná délka klíče je 2048 bitů.
Prosím určete, jak dlouho by klíč měl platit.
         0 = doba platnosti klíče není omezena
      <n>  = doba platnosti klíče skončí za n dní
      <n>w = doba platnosti klíče skončí za n týdnů
      <n>m = doba platnosti klíče skončí za n měsíců
      <n>y = doba platnosti klíče skončí za n let

Pokud chcete neomezenou, opět stačí odentrovat a dvakrát potvrdit:

Klíč je platný pro? (0) 
Platnost klíče nikdy neskončí
Je to správně (a/N)? a
Opravdu vytvořit? (a/N) a

Načež následuje další časově náročné generování:

Musíme vytvořit mnoho náhodných bajtů. Během vytváření můžete
provádět nějakou jinou práci na počítači (psát na klávesnici, pohybovat myší,
používat disky); díky tomu má generátor lepší šanci získat dostatek entropie.

Nedostatek náhodných bajtů. Prosím, pracujte s operačním systémem, abyste
mu umožnili získat více entropie (je potřeba 156 bajtů).

Následuje opět shrnutí:

..+++++
....+++++

pub  2048R/3F6F3D1B  vytvořen: 2016-01-11  platnost skončí: nikdy       použití: SC  
                     důvěra: absolutní    platnost: absolutní
sub  2048R/EF4ADF82  vytvořen: 2016-01-11  platnost skončí: nikdy       použití: E   
sub  2048R/8F8041DC  vytvořen: 2016-01-11  platnost skončí: nikdy       použití: A   
[  absolutní ] (1). Bystroushaak <bystrousak@kitakitsune.org>

gpg>

Z programu vyskočíme stiskem Ctrl-D (nikoliv C!), ještě před ukončením se totiž zeptá, zda má zapsat změny:

gpg> Uložit změny? (a/N) a

Zálohy

Následně je na čase vytvořit si zálohy klíče. Ty si uložte pokud možno někam na šifrovaný Truecrypt/Veracrypt oddíl, každopádně však někam offline tak, aby se k nim nebylo možné dostat. Zálohy vytvářet nemusíte, ale riskujete, že při ztrátě Yubikey ztratíte přístup.

$ gpg --export-secret-key --armor 3F6F3D1B > yubikey.gpg.priv

Veřejný klíč poté exportujete pomocí příkazu

$ gpg --export --armor 3F6F3D1B > yubikey.gpg.pub

Pokračování příště

V příští části návod zakončíme nahráním klíčů do Yubikey a budeme se zabývat praktickým použitím.

Další články z této rubriky

Linuxové foto novinky: pozvolná evoluce
PCLinuxOS 2017.2 MATE - tak trochu zvláštní linuxová distribuce
Krátký pohled na Fedoru 25, Wayland a GNOME 3.22
Naprosto ničím nezajímavé Lubuntu 16.10
Calligra Suite - Dobrá alternativa k LibreOffice

Diskuse k tomuto článku

3.5.2016 07:22 Raketa
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Odpovědět | Sbalit | Link | Blokovat | Admin
Zazálohovat si klíč je dobré nejen kvůli ztracení tokenu, ale i kvůli jeho případné budoucí nefunkčnosti nebo zničení. Yubikey umí generovat klíč i přímo v sobě, ale nejde pak vyexportovat, což zůžuje použitelnost v praktickém životě.
3.5.2016 17:24 pavele
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Chtěl bych jenom upozornit, že jsem zkoušel importovat stejný klíč na jiný token (pro případ fyzické poruchy nebo zničení tokenu).

To proběhlo úspěšně, ale následná autorizace pomocí druhého tokenu nefungovala.

Někde tady na ábíčku jsem se ptal na vysvětlení a nemůžu to najít. Vysvětlení se týkalo jiného ID druhého tokenu, takže ta záloha klíče mi byla k ničemu, pozor na to...
Bystroushaak avatar 3.5.2016 17:42 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Mělo by to ale stále jít importovat přímo do GPG, ne? Jak jsi ten klíč exportoval?
3.5.2016 21:25 pavele
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Normálně jsem si na disku vytvořil klíč, zazálohoval a pak postupně importoval na dva tokeny. Exportoval jsem to na veřejný klíč přes openpgp2ssh (ten první token).
4.5.2016 23:09 veveričkaplešatá
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Chválim autora tento článok je už krajší Ešte by som chcel položiť otázku k YubiKey 4 Nano funguje tak isto ze sa potvrdzuje dotykom ? alebo nie ?
5.5.2016 09:33 alkoholik | skóre: 35 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
A na co bys tam chtel sahat? Vzdyt to zabere tak akorat USB konektor.
Bystroushaak avatar 5.5.2016 10:34 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Zadní strana afaik funguje pořád jako kapacitní snímač. Alespoň podle toho jejich prohlášení:
Other than size, there is no difference between the keychain and nano version of the YubiKey 4.
5.5.2016 12:37 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Tady se taky píše "S využitím obyčejného dotyku Vašeho prstu…". Ale to mohli klidně zkopírovat z popisu "dospělé" varianty.
5.5.2016 16:32 Filip Jirsák
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Na dotyk reaguje ta hrana (oblouk), který čouhá z USB portu. Alespoň to tak bylo u předchozích verzí.
5.5.2016 19:53 veveričkaplešatá
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
ano svoju lenivost som si podcenil , pravdepodobne to funguje kukal som nato videa na tube , a malo by ist potvrdzovanie , aspon na novom kluci :) tak pravdepodobne si to do mesiaca kupim :) ale este si to budem musiet nastudovat budem to sledovat co a ako , vyzera to byt uz zaujmavesie ..
3.5.2016 10:20 alkoholik | skóre: 35 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Odpovědět | Sbalit | Link | Blokovat | Admin
Po par pokusech s Ubikey 4 jsem dospel k zaveru, ze pro vzdaleny pristup je rozumnejsi pouzivat PKI applet misto GPG.
Stejny A klic se pak da pouzit pro OpenVPN i SSH, muzes pouzivat i EC klice a GPG emulovat pres gnupg-pkcs11-scd.
BTW: o tvrzeni "zatím jsou podporované pouze 2048bitové klíče" by se dalo s uspechem pochybovat.
Bystroushaak avatar 3.5.2016 13:17 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
BTW: o tvrzeni "zatím jsou podporované pouze 2048bitové klíče" by se dalo s uspechem pochybovat.
Ten článek jsem psal v lednu. Vycházel jsem z: THE BIG DEBATE, 2048 VS. 4096, YUBICO’S POSITION, kde je doslova uvedeno:
Both the NEO and the NEO-n implement OpenPGP and support RSA up to 2048 bits. This is not a constraint from Yubico, but rather a hardware limitation of the NXP A700x chip used within the YubiKeys.
Docela mě to zarazilo, tak jsem hledal informace o Yubikeyi 4, ale všude co jsem našel opakovali tu samou informaci, kterou jsem v tu dobu nenašel nikde vyvrácenou.

Máš ale pravdu a nyní se mi podařilo najít: YUBIKEY 4(096): YOU ASKED, WE DELIVERED.
Bystroushaak avatar 3.5.2016 13:22 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
+ mě teda zarazilo to
Key attributes ...: 2048R 2048R 2048R
z gpg2 --card-status.
6.5.2016 08:03 rkapl
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Nicmene 4096 bitu je podporovano jen v PGP modu, ne v PIV/PKCS11.
3.5.2016 10:21 alkoholik | skóre: 35 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Odpovědět | Sbalit | Link | Blokovat | Admin
Jo, abych nezapomnel. Pro PAM auth v Ubuntu pekne funguje balikovy libpam-poldi.
3.5.2016 13:34 nitro
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Odpovědět | Sbalit | Link | Blokovat | Admin
FYI: alternativa NitroKey https://www.nitrokey.com/ OSS SW i HW zni hezky. Mohl by nekdo vysvetlit, jestli "chci" (nevim, co chci :P) tu Pro/HSM verzi? dik
Bystroushaak avatar 3.5.2016 13:45 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Tam ale není to hardwarové tlačítko, ne? Tzn to funguje jen jako smartcarda bez autorizace fyzickou akcí.
3.5.2016 14:49 nitro
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
zda se mi, ze ano (tlac. neni). Coz je skoda. Mozna by se dalo misto fyz. akce tlacitkem dat akci "USB je/neni zasunute"
Bystroushaak avatar 3.5.2016 16:14 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Jo, to mě napadlo, ale nepřijde mi to moc praktické. Hlavně to má ten problém, že jak to jednou zasuneš a útočník si sniffne heslo, tak může dešifrovat / podepisovat co hrdlo ráčí. U toho yubikeye by k tomu potřeboval vždycky další dotek.
12.5.2016 16:53 Jiří VALENTA
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Odpovědět | Sbalit | Link | Blokovat | Admin
Koupit se dají s českou zárukou a slušnou cenu na www.yubikeys.cz

Osobně vyzkoušeno.
Bystroushaak avatar 12.5.2016 19:21 Bystroushaak | skóre: 32 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yubikey. Co to je a co to umí (2)
Jop. To už někdo upozorňoval v diskuzi, bohužel v době psaní článku ten obchod ještě neexistoval, tak jsem to musel objednávat z amazonu.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.