abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:11 | Zajímavý software

    V reálném světě smícháním modré a žluté barvy vznikne barva zelená. V grafických editorech tomu ale tak není. Šárka Sochorová z ČVUT prezentovala na konferenci SIGGRAPH Asia 2021 možné řešení (Practical Pigment Mixing for Digital Painting) aneb blackbox Mixbox (online demo) snadno integrovatelný do grafických editorů s implementací modelu Kubelka-Munk. Zdrojové kódy jsou k dispozici na GitHubu. Licence ale nedovoluje jejich použití v open source grafických editorech. Nemělo by platit Public Money, Public Code?

    Ladislav Hagara | Komentářů: 11
    dnes 08:00 | Zajímavý software

    ZombieTrackerGPS je lokální správce a prohlížeč záznamů tras z GPS lokátoru/navigace, napsaný s využitím knihoven KDE a Qt. Současná verze je 1.11, podrobnosti v seznamu změn.

    Fluttershy, yay! | Komentářů: 0
    dnes 07:00 | IT novinky

    V OpenAI naučili neuronovou síť hrát Minecraft. Sledováním videí zveřejněných hráči této počítačové hry.

    Ladislav Hagara | Komentářů: 1
    dnes 06:00 | Nová verze

    Byla vydána nová verze 7.7.0 správce digitálních fotografií a videí digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení. Nově je například podporován fotoaparát OM System OM-1 (Olympus). Aktuální digiKam je postaven na Qt5. Verze 8.0.0 bude postavena na Qt6. Vydána by měla být koncem roku. Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Zajímavý článek

    Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 70 tisíc vývojářů. Z Česka jich bylo 692. Ze Slovenska 229. Celkově bylo 91,88 % mužů a 5,17 % žen.

    Ladislav Hagara | Komentářů: 10
    25.6. 00:55 | Nová verze

    Byla vydána nová verze 7.0 open source komunikační platformy Mattermost (Wikipedie). Podrobnosti v dokumentaci. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 25
    25.6. 00:33 | IT novinky

    Adventura VirtuaVerse je na portále GOG.com zdarma, akce trvá do 27. června.

    Fluttershy, yay! | Komentářů: 0
    24.6. 14:22 | IT novinky

    Amazon představil našeptávač kódu Amazon CodeWhisperer. Jedná se o alternativu k GitHub Copilot.

    Ladislav Hagara | Komentářů: 1
    23.6. 09:00 | Nová verze

    Byla vydána verze 12.0.0 nástroje pro vytváření a úpravu snímků obrazovky Flameshot (GitHub) postaveného nad frameworkem Qt. Přehled novinek i s náhledy v poznámkách k vydání Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 11
    23.6. 08:00 | IT novinky

    Vyhledávač Brave Search slaví první rok své existence a představuje Goggles. Za rok bylo zodpovězeno 2,5 miliardy dotazů. Nové Goggles umožňují vytvářet a sdílet vlastní sady pravidel a filtrů pro výsledky vyhledávání.

    Ladislav Hagara | Komentářů: 17
    Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
     (63%)
     (18%)
     (19%)
    Celkem 627 hlasů
     Komentářů: 29, poslední 24.5. 00:02
    Rozcestník

    GPG a Yubikey

    13.6.2020 23:10 | Přečteno: 2112× | Linux | Výběrový blog

    Jak jsem slíbil, podíváme se na spolupráci GPG a Yubico, konkrétně s Yubikey 5. Než začnu, chci všem poděkovat za diskusi k minulému dílu (https://www.abclinuxu.cz/blog/Tomik/2020/5/uvod-do-gpg). Je to opravdu studnice vědomostí.

    První oťukání

    Yubikey je věcička, která umí vícero protokolů, jedním z nich je i Smart Card, o které dneska bude řeč. Dostáváme se tak do schizofrenní situace, jak mu říkat. Pokud bude řeč o vlastnostech, které mají spojitost s protkolem Smart Card, budu psát karta, pokud budu psát o fyzickém zařízení, budu psát token.

    Yubikey 5 umí jenom RSA klíče, dobrá zpráva je, že už umí klíče délky až 4096. Potřebujete k tomu GnuPG verze 2 a výše (https://support.yubico.com/support/solutions/articles/15000014219-yubikey-5-series-technical-manual#OpenPGPattgv)

    Abychom mohli pracovat skrze GPG s kartou (Smart Card), potřebujeme nainstalovat scdaemon
    tom@mike:~$ sudo apt-get install scdaemon
    Nejdřív zkusíme zobrazit informace o kartě. Ve slotu mám Yubikey 5 (černý, s NFC)
    tom@mike:~$ gpg --card-status
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006120368550000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 12036855
    Name of cardholder: [not set]
    Language prefs ...: [not set]
    Sex ..............: unspecified
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa2048
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: [none]
    General key info..: [none]
    Všimneme si, že na kartě můžou být informace o držiteli (pokud si je tam dá), pak si všimneme, že můžeme uložit Signature key, Encryption key a Authentication key. Po jednom od každého kousku. Kartě je vcelku jedno, jaké klíče tam uložíme (ve smyslu identity), pokud tedy mají příslušný typ (capability). Pokud chcete mít na jedné kartě více klíčů se stejným účelem (a různou identitou), musíte asi sáhnout po nějakém HSM (hardware security module). Od Yubica stojí 650 dolarů (a to asi bez DPH), odkaz: https://www.yubico.com/store/#yubihsm. Konkurence Nitrokey má v nabídce něco, čemu taky říká HSM a stojí jenom 69 eur (https://shop.nitrokey.com/shop/product/nk-hsm-2-nitrokey-hsm-2-7). Nemám doma ani jedno, takže to víc nepopíšu.

    Práce s kartou

    Pokud chceme editovat informace, použijeme příkaz --edit-card. Zobrazí nám totéž, co předchozí příkaz a ještě čeká na další příkazy. Vypíšeme si nápovědu.
    tom@mike:~$ gpg --edit-card
    
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006120368550000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 12036855
    Name of cardholder: [not set]
    Language prefs ...: [not set]
    Sex ..............: unspecified
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa2048
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: [none]
    General key info..: [none]
    
    gpg/card> help
    quit           quit this menu
    admin          show admin commands
    help           show this help
    list           list all available data
    fetch          fetch the key specified in the card URL
    passwd         menu to change or unblock the PIN
    verify         verify the PIN and list all data
    unblock        unblock the PIN using a Reset Code
    
    gpg/card> 
    Význam zobrazených příkazů je vcelku jasný, ale nějak tam chybí něco, čím bychom mohli měnit data. Použijeme příkaz admin, abychom povolili a zobrazili všechny příkazy
    gpg/card> admin
    Admin commands are allowed
    
    gpg/card> help
    quit           quit this menu
    admin          show admin commands
    help           show this help
    list           list all available data
    name           change card holder's name
    url            change URL to retrieve key
    fetch          fetch the key specified in the card URL
    login          change the login name
    lang           change the language preferences
    sex            change card holder's sex
    cafpr          change a CA fingerprint
    forcesig       toggle the signature force PIN flag
    generate       generate new keys
    passwd         menu to change or unblock the PIN
    verify         verify the PIN and list all data
    unblock        unblock the PIN using a Reset Code
    factory-reset  destroy all keys and data
    V tuto chvíli jenom zmíním příkaz factory-reset, který uvede kartu do stavu, jak přišla z továrny (takže se nemusíte bát nejdřív si všechno vyzkoušet). Nenašel jsem nic, jak vynulovat jenom část údajů, musíte vždy smazat celou kartu.

    Zkouška informativních údajů

    Zkusíme přidat informace o uživateli. Jsou to jenom informativní údaje, které GPG ignoruje. Výhoda asi je, že když vám někdo token ukradne, tak zjistí, jak se jmenujete a ke kterému pohlaví se hlásíte.
    gpg/card> name
    Cardholder's surname: Example
    Cardholder's given name: First
    Zobrazí se dialog, který chce admin PIN, ve výpisu to není vidět.

    Dále nastavíme pohlaví a jazykové preference.
    gpg/card> sex
    Sex ((M)ale, (F)emale or space): m
    
    Jak vidíte, zde je svět v pořádku, člověk je buď muž, nebo žena. Ostatní případy se házejí pod položku "unspecified".
    gpg/card> lang
    Language preferences: cz
    
    Jazykové preference musí být 2 malá písmena, cokoliv jiného odmítne. Na druhou stranu, asi přijme libovolná 2 malá písmena.

    Na závěr si znovu vypíšeme informace
    gpg/card> list
    
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006120368550000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 12036855
    Name of cardholder: First Example
    Language prefs ...: cz
    Sex ..............: male
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa2048
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: [none]
    General key info..: [none]

    Práce s klíči

    Teď začneme přesouvat klíče. Máme je vygenerované už od minule. Předtím ještě uděláme zálohu adresáře .gnupg a nazveme ho .gnupg_orig.

    Chceme přesouvat soukromé klíče, tak si je zobrazíme:
    tom@mike:~$ gpg -K 
    /home/tom/.gnupg/pubring.kbx
    ----------------------------
    sec   rsa2048 2020-05-24 [SC] [expires: 2022-05-24]
          153130ED26CA404C8B29795B4703A5B671B96E4D
    uid           [ultimate] Example First <example.first@example.example>
    ssb   rsa2048 2020-05-24 [E] [expires: 2022-05-24]
    ssb   rsa4096 2020-05-24 [S]
    
    sec   rsa4096 2020-05-24 [SC]
          E2066568A1FB5723B550410D942AFD64430801F7
    uid           [ultimate] Example Second (Second) <example.second@example.example>
    ssb   rsa4096 2020-05-24 [E]
    
    sec   rsa4096 2020-05-24 [SC]
          40DB1E1705A9B52E3EFBB29EDD41A31BA28D0199
    uid           [ultimate] Example Third (Third) <example.third@example.example>
    ssb   elg4096 2020-05-24 [E] [expires: 2020-06-07]
    
    sec   rsa4096 2020-05-24 [CA]
          46C4F15BF45B274B155F9E08E815C1EA446EE732
    uid           [ultimate] Example Fourth (Authenticate) <example.fourth@example.example>
    

    Autentizační klíč

    Zkusíme na kartu přesunout poslední klíč jako autentizační klíč. Podle dokumentace (https://www.gnupg.org/howtos/card-howto/en/ch03.html) ho sice GPG nepoužívá, ale přesunout si ho můžeme. Spustíme tedy GPG --edit-key a potom použijeme příkaz keytocard. Příkaz bude chtít admin PIN, který opět není vidět ve výpisu.
    tom@mike:~$ gpg --edit-key 46C4F15BF45B274B155F9E08E815C1EA446EE732
    gpg (GnuPG) 2.1.18; Copyright (C) 2017 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.
    
    Secret key is available.
    
    sec  rsa4096/E815C1EA446EE732
         created: 2020-05-24  expires: never       usage: CA  
         trust: ultimate      validity: ultimate
    [ultimate] (1). Example Fourth (Authenticate) <example.fourth@example.example>
    
    gpg> keytocard
    Really move the primary key? (y/N) y
    Please select where to store the key:
       (1) Signature key
       (3) Authentication key
    Your selection? 3
    
    sec  rsa4096/E815C1EA446EE732
         created: 2020-05-24  expires: never       usage: CA  
         trust: ultimate      validity: ultimate
    [ultimate] (1). Example Fourth (Authenticate) <example.fourth@example.example>
    gpg> save
    Teď se podíváme, co nám to udělalo.
    tom@mike:~$ gpg --card-status
    
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006120368550000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 12036855
    Name of cardholder: First Example
    Language prefs ...: cz
    Sex ..............: male
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa4096
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: 46C4 F15B F45B 274B 155F  9E08 E815 C1EA 446E E732
          created ....: 2020-05-24 21:10:10
    General key info..: pub  rsa4096/E815C1EA446EE732 2020-05-24 Example Fourth (Authenticate) <example.fourth@example.example>
    sec   rsa4096/E815C1EA446EE732  created: 2020-05-24  expires: never     
    
    
    tom@mike:~$ gpg -K --with-keygrip
    /home/tom/.gnupg/pubring.kbx
    ----------------------------
    sec   rsa2048 2020-05-24 [SC] [expires: 2022-05-24]
          153130ED26CA404C8B29795B4703A5B671B96E4D
          Keygrip = 377C02935881630C7F4BA0807C8D753B6635CB90
    uid           [ultimate] Example First <example.first@example.example>
    ssb   rsa2048 2020-05-24 [E] [expires: 2022-05-24]
          Keygrip = 383B2ACADA9228E29820F89A1C4A4F4D18408562
    ssb   rsa4096 2020-05-24 [S]
          Keygrip = E186137C42342AA7D3588183CC4B1FB6ED590E61
    
    sec   rsa4096 2020-05-24 [SC]
          E2066568A1FB5723B550410D942AFD64430801F7
          Keygrip = 8590A9CA8F1385AD2984DD1ED501B1EDA947C90C
    uid           [ultimate] Example Second (Second) <example.second@example.example>
    ssb   rsa4096 2020-05-24 [E]
          Keygrip = 541540C36217BEED3F9147261B050026CB93166B
    
    sec   rsa4096 2020-05-24 [SC]
          40DB1E1705A9B52E3EFBB29EDD41A31BA28D0199
          Keygrip = D6C7F494928F6EA71BE53DA60BDEBFA0FCBC6DB2
    uid           [ultimate] Example Third (Third) <example.third@example.example>
    ssb   elg4096 2020-05-24 [E] [expires: 2020-06-07]
          Keygrip = 1E810267D620D288961DEA34A08CE42932ACEE10
    
    sec>  rsa4096 2020-05-24 [CA]
          46C4F15BF45B274B155F9E08E815C1EA446EE732
          Keygrip = C4EE06A7E2208178B43659AB57774A0642418A27
          Card serial no. = 0006 12036855
    uid           [ultimate] Example Fourth (Authenticate) <example.fourth@example.example>
    Podle řádku "Card serial no. = 0006 12036855" můžeme usoudit, že klíč čtvrtý klíč je přesunutý na kartu. Jinak bychom to také poznali podle skromného indikátoru v podově znaku ">".

    A podíváme se i na soubory.
    tom@mike:~$ diff .gnupg/private-keys-v1.d/ .gnupg_orig/private-keys-v1.d/
    Binary files .gnupg/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key and .gnupg_orig/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key differ
    Velikost souboru se změnila z 1.9kB na 615 B. Soubor je sice binární, ale na začátku jsou nějaká písmenka. Zatímco původní soubor začíná řetězcem
    (11:private-key(3:rsa(1:n513:
    Tak po přesunu klíče máme
    (20:shadowed-private-key(3:rsa(1:n513:

    Šifrovací klíč

    Teď zkusíme přesunout šifrovací klíč. Zvolíme si klíč s identitou "Second", který má podklíče, musíme proto zvolit správný klíč pro export (příkaz key 1)
    tom@mike:~$ gpg --edit-key E2066568A1FB5723B550410D942AFD64430801F7
    gpg (GnuPG) 2.1.18; Copyright (C) 2017 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.
    
    Secret key is available.
    
    sec  rsa4096/942AFD64430801F7
         created: 2020-05-24  expires: never       usage: SC  
         trust: ultimate      validity: ultimate
    ssb  rsa4096/8805963B89C93FE1
         created: 2020-05-24  expires: never       usage: E   
    [ultimate] (1). Example Second (Second) <example.second@example.example>
    
    gpg> key 1
    
    sec  rsa4096/942AFD64430801F7
         created: 2020-05-24  expires: never       usage: SC  
         trust: ultimate      validity: ultimate
    ssb* rsa4096/8805963B89C93FE1
         created: 2020-05-24  expires: never       usage: E   
    [ultimate] (1). Example Second (Second) <example.second@example.example>
    
    gpg> keytocard
    Please select where to store the key:
       (2) Encryption key
    Your selection? 2
    
    sec  rsa4096/942AFD64430801F7
         created: 2020-05-24  expires: never       usage: SC  
         trust: ultimate      validity: ultimate
    ssb* rsa4096/8805963B89C93FE1
         created: 2020-05-24  expires: never       usage: E   
    [ultimate] (1). Example Second (Second) <example.second@example.example>
    Opět si proklepneme výpisy. Je dobré doplnit přepínač --with-subkey-fingerprint, abychom mohli spárovat (pod)klíče s daty na kartě.
    tom@mike:~$ gpg -K --with-keygrip --with-subkey-fingerprint
    /home/tom/.gnupg/pubring.kbx
    ----------------------------
    sec   rsa2048 2020-05-24 [SC] [expires: 2022-05-24]
          153130ED26CA404C8B29795B4703A5B671B96E4D
          Keygrip = 377C02935881630C7F4BA0807C8D753B6635CB90
    uid           [ultimate] Example First <example.first@example.example>
    ssb   rsa2048 2020-05-24 [E] [expires: 2022-05-24]
          AE19DF502047AAED7EDD98B3F1C6AE6DAF3AE8BF
          Keygrip = 383B2ACADA9228E29820F89A1C4A4F4D18408562
    ssb   rsa4096 2020-05-24 [S]
          5ABA0105F9EEDE9BD0021DC08F2D5825D5689DE1
          Keygrip = E186137C42342AA7D3588183CC4B1FB6ED590E61
    
    sec   rsa4096 2020-05-24 [SC]
          E2066568A1FB5723B550410D942AFD64430801F7
          Keygrip = 8590A9CA8F1385AD2984DD1ED501B1EDA947C90C
    uid           [ultimate] Example Second (Second) <example.second@example.example>
    ssb>  rsa4096 2020-05-24 [E]
          056841E37C4B42D1872BC8B78805963B89C93FE1
          Card serial no. = 0006 12036855
          Keygrip = 541540C36217BEED3F9147261B050026CB93166B
    
    sec   rsa4096 2020-05-24 [SC]
          40DB1E1705A9B52E3EFBB29EDD41A31BA28D0199
          Keygrip = D6C7F494928F6EA71BE53DA60BDEBFA0FCBC6DB2
    uid           [ultimate] Example Third (Third) <example.third@example.example>
    
    sec>  rsa4096 2020-05-24 [CA]
          46C4F15BF45B274B155F9E08E815C1EA446EE732
          Keygrip = C4EE06A7E2208178B43659AB57774A0642418A27
          Card serial no. = 0006 12036855
    uid           [ultimate] Example Fourth (Authenticate) <example.fourth@example.example>
    
    Indikace, že (pod)klíč je na kartě, je opět provedena jenom skromným znaménkem ">" a ani nemáme informaci o seriovém čísle karty.
    tom@mike:~$ gpg --card-status
    
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006120368550000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 12036855
    Name of cardholder: First Example
    Language prefs ...: cz
    Sex ..............: male
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa4096 rsa4096
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: 0568 41E3 7C4B 42D1 872B  C8B7 8805 963B 89C9 3FE1
          created ....: 2020-05-24 20:22:25
    Authentication key: 46C4 F15B F45B 274B 155F  9E08 E815 C1EA 446E E732
          created ....: 2020-05-24 21:10:10
    General key info..: sub  rsa4096/8805963B89C93FE1 2020-05-24 Example Second (Second) <example.second@example.example>
    sec   rsa4096/942AFD64430801F7  created: 2020-05-24  expires: never     
    ssb>  rsa4096/8805963B89C93FE1  created: 2020-05-24  expires: never     
                                    card-no: 0006 12036855
    A ještě filesystém:
    tom@mike:~$ diff .gnupg/private-keys-v1.d/ .gnupg_orig/private-keys-v1.d/
    Binary files .gnupg/private-keys-v1.d/541540C36217BEED3F9147261B050026CB93166B.key and .gnupg_orig/private-keys-v1.d/541540C36217BEED3F9147261B050026CB93166B.key differ
    Binary files .gnupg/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key and .gnupg_orig/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key differ
    Změna souboru (velikost + úvodní text) je stejná jako v prvním případě.

    Podepisovací klíč

    Zkusíme exportovat podklíč z prvního klíče.
    tom@mike:~$ gpg --edit-key 153130ED26CA404C8B29795B4703A5B671B96E4D
    gpg (GnuPG) 2.1.18; Copyright (C) 2017 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.
    
    Secret key is available.
    
    sec  rsa2048/4703A5B671B96E4D
         created: 2020-05-24  expires: 2022-05-24  usage: SC  
         trust: ultimate      validity: ultimate
    ssb  rsa2048/F1C6AE6DAF3AE8BF
         created: 2020-05-24  expires: 2022-05-24  usage: E   
    ssb  rsa4096/8F2D5825D5689DE1
         created: 2020-05-24  expires: never       usage: S   
    [ultimate] (1). Example First <example.first@example.example>
    
    gpg> key 2
    
    sec  rsa2048/4703A5B671B96E4D
         created: 2020-05-24  expires: 2022-05-24  usage: SC  
         trust: ultimate      validity: ultimate
    ssb  rsa2048/F1C6AE6DAF3AE8BF
         created: 2020-05-24  expires: 2022-05-24  usage: E   
    ssb* rsa4096/8F2D5825D5689DE1
         created: 2020-05-24  expires: never       usage: S   
    [ultimate] (1). Example First <example.first@example.example>
    
    gpg> keytocard
    Please select where to store the key:
       (1) Signature key
       (3) Authentication key
    Your selection? 1
    
    sec  rsa2048/4703A5B671B96E4D
         created: 2020-05-24  expires: 2022-05-24  usage: SC  
         trust: ultimate      validity: ultimate
    ssb  rsa2048/F1C6AE6DAF3AE8BF
         created: 2020-05-24  expires: 2022-05-24  usage: E   
    ssb* rsa4096/8F2D5825D5689DE1
         created: 2020-05-24  expires: never       usage: S   
    [ultimate] (1). Example First <example.first@example.example>
    A obligátní výpisy
    tom@mike:~$ gpg -K --with-keygrip --with-subkey-fingerprint
    /home/tom/.gnupg/pubring.kbx
    ----------------------------
    sec   rsa2048 2020-05-24 [SC] [expires: 2022-05-24]
          153130ED26CA404C8B29795B4703A5B671B96E4D
          Keygrip = 377C02935881630C7F4BA0807C8D753B6635CB90
    uid           [ultimate] Example First <example.first@example.example>
    ssb   rsa2048 2020-05-24 [E] [expires: 2022-05-24]
          AE19DF502047AAED7EDD98B3F1C6AE6DAF3AE8BF
          Keygrip = 383B2ACADA9228E29820F89A1C4A4F4D18408562
    ssb>  rsa4096 2020-05-24 [S]
          5ABA0105F9EEDE9BD0021DC08F2D5825D5689DE1
          Card serial no. = 0006 12036855
          Keygrip = E186137C42342AA7D3588183CC4B1FB6ED590E61
    
    sec   rsa4096 2020-05-24 [SC]
          E2066568A1FB5723B550410D942AFD64430801F7
          Keygrip = 8590A9CA8F1385AD2984DD1ED501B1EDA947C90C
    uid           [ultimate] Example Second (Second) <example.second@example.example>
    ssb>  rsa4096 2020-05-24 [E]
          056841E37C4B42D1872BC8B78805963B89C93FE1
          Card serial no. = 0006 12036855
          Keygrip = 541540C36217BEED3F9147261B050026CB93166B
    
    sec   rsa4096 2020-05-24 [SC]
          40DB1E1705A9B52E3EFBB29EDD41A31BA28D0199
          Keygrip = D6C7F494928F6EA71BE53DA60BDEBFA0FCBC6DB2
    uid           [ultimate] Example Third (Third) <example.third@example.example>
    
    sec>  rsa4096 2020-05-24 [CA]
          46C4F15BF45B274B155F9E08E815C1EA446EE732
          Keygrip = C4EE06A7E2208178B43659AB57774A0642418A27
          Card serial no. = 0006 12036855
    uid           [ultimate] Example Fourth (Authenticate) <example.fourth@example.example>
    
    
    tom@mike:~$ diff .gnupg/private-keys-v1.d/ .gnupg_orig/private-keys-v1.d/
    Binary files .gnupg/private-keys-v1.d/541540C36217BEED3F9147261B050026CB93166B.key and .gnupg_orig/private-keys-v1.d/541540C36217BEED3F9147261B050026CB93166B.key differ
    Binary files .gnupg/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key and .gnupg_orig/private-keys-v1.d/C4EE06A7E2208178B43659AB57774A0642418A27.key differ
    Binary files .gnupg/private-keys-v1.d/E186137C42342AA7D3588183CC4B1FB6ED590E61.key and .gnupg_orig/private-keys-v1.d/E186137C42342AA7D3588183CC4B1FB6ED590E61.key differ
    Soubor se změnil jako v předchozích případech.

    Teď zkusíme něco podepsat. Mám na flashce nějaké staré verze textu minulého dílu:
    tom@mike:~$ gpg --detach-sign -a /media/tom/DTEG2_64GB/clanky/sifrovani.odt
    vytvoří se soubor /media/tom/DTEG2_64GB/clanky/sifrovani.odt.asc, jehož obsah vypadá nějak takto:
    -----BEGIN PGP SIGNATURE-----
    
    iQIzBAABCAAdFiEEWroBBfnu3pvQAh3Ajy1YJdVoneEFAl7ehucACgkQjy1YJdVo
    neGZWw/+LiDDbtv42nooVfcTAFy0rMcwepn0aszCxfTlLMkBDHgVHHbBVrA+GWPF
    l7iki+dd7WhzcRC2ddnevRK3PACq8XaKTWMRKrC+khbd/K/K7GDKISagyZZEfGHg
    osVgB9kFpd0PBr6pPjanGSa+Hc4+4LhXRafSOtpWHIBY7JgQRvRSsq561sG/U1UV
    1sCo0YYAqJW7doPLRBIYdPRpW1osoGenIJDFP2uV3AN78Jt3XteECu798b/Rlg4O
    5xPl/vPkGKZLDfS5hA+8GUSvWr7Vr7e/GuxN3qrp9I49hrDTFDr2WsJxl5Fi4bx5
    jk74FgT0A8Fs2NJjCJNx+qmeNCU3iX3h4geDFMHtc8cCzRMX30E09RB6LP6q6dzJ
    iVKbltalZFqi1+yR232YpKeM7D9EY48JtVzh2s9MoPCxdbCKdD5nQsyX0b2pvB/W
    MO8emi1vWMX4UlZphSb84FVvCBRDiwp8fTZ9jpoaQVrUvm0/9CvUNZo62MVL5mNx
    sPnpe06xvQXqN+fDGR1cN00KbtheY5nSdpl3mNHDkhbLTQbjXeiq6fCzTOzoIoaa
    xC4oeLUhGrbU6bAAT/EiDWTVfotYc6FQWZgwWFQSo+yw8+SNc3Nb8TveQ3pu0/3C
    tBKOJ6aggNYlaIqPH6cMNq4tmhrLQTJ0HI7jNRdsSUjlpvfsxdY=
    =uUz/
    -----END PGP SIGNATURE-----
    Všiml jsem si, že se soubor podepsal hned a nečekal na ťuknutí prstem. K tomu se vrátím později.

    Vytáhneme Yubikey5 a zkusíme podepsat znovu.
    tom@mike:~$ gpg --detach-sign -a /media/tom/DTEG2_64GB/clanky/sifrovani.odt
    Vyskočí na nás velmi otravné okno s textem
    Please insert the card with serial number:
    "D2760001240103040006120368550000"
    To číslo jsme už viděli na začátku, jenom se mu říkalo Application ID.

    Nastavení dotyku na Yubikey

    V základním nastavení Yubikey vyžaduje dotyk pro dvoufaktorovou autentizaci, ale pro práci s klíči ji nevyžaduje. Dá se ovšem nastavit.

    Navštívíme stránku https://developers.yubico.com/PGP/Card_edit.html, kde si najdeme odkaz na shellový skript https://github.com/a-dma/yubitouch. Na stránce jsou popsány závislosti skriptu. Skript si stáhneme, uložíme na vhodné místo (třeba ~/bin) a nastavíme mu práva na spuštění.

    Potom stačí napsat:
    ~/bin/yubitouch.sh sig on 12345678
    To číslo na konci je Admin PIN. Když ho nezadáte, tak se zeptá. Je v tom nějaká alchymie, protože mi to několikrát zahlásilo
    Verification failed, wrong pin?
    Nakonec to ale prošlo. O nastavení se můžeme převědčit pomocí příkazu:
    tom@mike:~$ ~/bin/yubitouch.sh sig get
    Current sig touch setting: on
    Když se znovu pokusíme něco podepsat, Yubikey se na nás rozbliká na znamení, že čeká na naší reakci.

    Je potřeba držet prst trošku déle, dokud neuvidíte, že GPG doběhlo. Může to být i několik sekund.

    Stejně si nastavíme, že vyžadujeme dotyk i pro ostatní akce
    tom@mike:~$ ~/bin/yubitouch.sh aut on 12345678
    All done!
    tom@mike:~$ ~/bin/yubitouch.sh dec on 12345678
    All done!
    Podrobné informace o možných akcích najdete na výše zmíněné stránce.

    Pokusy s druhým Yubikey

    Teď jsem ve slotu vyměnil černý Yubikey5 za Yubikey nano. Ono je vcelku jedno, který typ, důležité je, že to je jiný kus.

    Zobrazíme si informace o kartě
    tom@mike:~$ gpg --card-status
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006105300770000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 10530077
    Name of cardholder: [not set]
    Language prefs ...: [not set]
    Sex ..............: unspecified
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa2048
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: [none]
    General key info..: [none]
    Jak vidíme, Application ID i Serial number se liší.

    Teď zkusíme přeunout na kartu již přesunutý klíč. Samozřejmě očekávám, že to skončí chybou.
    tom@mike:~$ gpg --edit-key 46C4F15BF45B274B155F9E08E815C1EA446EE732
    gpg (GnuPG) 2.1.18; Copyright (C) 2017 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.
    
    Secret key is available.
    
    sec  rsa4096/E815C1EA446EE732
         created: 2020-05-24  expires: never       usage: CA  
         card-no: 0006 12036855
         trust: ultimate      validity: ultimate
    [ultimate] (1). Example Fourth (Authenticate) <example.fourth@example.example>
    
    gpg> keytocard
    Really move the primary key? (y/N) y
    Please select where to store the key:
       (1) Signature key
       (3) Authentication key
    Your selection? 3
    gpg: KEYTOCARD failed: Unusable secret key
    Přiznám se, že kdybych něvěděl, co jsem tropil, tak bych z hlášky nepochopil, v čem je problém.

    Teď ze zálohy obnovím adresář .gnupg a zkusím znovu přesunout stejný klíč.
    tom@mike:~$ gpg --edit-key 46C4F15BF45B274B155F9E08E815C1EA446EE732
    gpg (GnuPG) 2.1.18; Copyright (C) 2017 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.
    
    Secret key is available.
    
    sec  rsa4096/E815C1EA446EE732
         created: 2020-05-24  expires: never       usage: CA  
         trust: ultimate      validity: ultimate
    [ultimate] (1). Example Fourth (Authenticate) <example.fourth@example.example>
    
    gpg> keytocard
    Really move the primary key? (y/N) y
    Please select where to store the key:
       (1) Signature key
       (3) Authentication key
    Your selection? 3
    
    sec  rsa4096/E815C1EA446EE732
         created: 2020-05-24  expires: never       usage: CA  
         trust: ultimate      validity: ultimate
    [ultimate] (1). Example Fourth (Authenticate) <example.fourth@example.example>
    
    tom@mike:~$ gpg -K --with-keygrip
    /home/tom/.gnupg/pubring.kbx
    ----------------------------
    sec   rsa2048 2020-05-24 [SC] [expires: 2022-05-24]
          153130ED26CA404C8B29795B4703A5B671B96E4D
          Keygrip = 377C02935881630C7F4BA0807C8D753B6635CB90
    uid           [ultimate] Example First <example.first@example.example>
    ssb   rsa2048 2020-05-24 [E] [expires: 2022-05-24]
          Keygrip = 383B2ACADA9228E29820F89A1C4A4F4D18408562
    ssb   rsa4096 2020-05-24 [S]
          Keygrip = E186137C42342AA7D3588183CC4B1FB6ED590E61
    
    sec   rsa4096 2020-05-24 [SC]
          E2066568A1FB5723B550410D942AFD64430801F7
          Keygrip = 8590A9CA8F1385AD2984DD1ED501B1EDA947C90C
    uid           [ultimate] Example Second (Second) <example.second@example.example>
    ssb   rsa4096 2020-05-24 [E]
          Keygrip = 541540C36217BEED3F9147261B050026CB93166B
    
    sec   rsa4096 2020-05-24 [SC]
          40DB1E1705A9B52E3EFBB29EDD41A31BA28D0199
          Keygrip = D6C7F494928F6EA71BE53DA60BDEBFA0FCBC6DB2
    uid           [ultimate] Example Third (Third) <example.third@example.example>
    
    sec>  rsa4096 2020-05-24 [CA]
          46C4F15BF45B274B155F9E08E815C1EA446EE732
          Keygrip = C4EE06A7E2208178B43659AB57774A0642418A27
          Card serial no. = 0006 10530077
    uid           [ultimate] Example Fourth (Authenticate) <example.fourth@example.example>
    Jak se dalo čekat, teď už to dopadlo dobře. GPG má poznamenáno, že klíč je na druhé kartě.

    A nakonec si ukážeme factory reset.
    tom@mike:~$ gpg --edit-card
    
    Reader ...........: 1050:0407:X:0
    Application ID ...: D2760001240103040006105300770000
    Version ..........: 3.4
    Manufacturer .....: Yubico
    Serial number ....: 10530077
    Name of cardholder: [not set]
    Language prefs ...: [not set]
    Sex ..............: unspecified
    URL of public key : [not set]
    Login data .......: [not set]
    Signature PIN ....: not forced
    Key attributes ...: rsa2048 rsa2048 rsa4096
    Max. PIN lengths .: 127 127 127
    PIN retry counter : 3 0 3
    Signature counter : 0
    Signature key ....: [none]
    Encryption key....: [none]
    Authentication key: 46C4 F15B F45B 274B 155F  9E08 E815 C1EA 446E E732
          created ....: 2020-05-24 21:10:10
    General key info..: pub  rsa4096/E815C1EA446EE732 2020-05-24 Example Fourth (Authenticate) <example.fourth@example.example>
    sec>  rsa4096/E815C1EA446EE732  created: 2020-05-24  expires: never     
                                    card-no: 0006 10530077
    
    gpg/card> help
    quit           quit this menu
    admin          show admin commands
    help           show this help
    list           list all available data
    fetch          fetch the key specified in the card URL
    passwd         menu to change or unblock the PIN
    verify         verify the PIN and list all data
    unblock        unblock the PIN using a Reset Code
    
    gpg/card> admin
    Admin commands are allowed
    
    gpg/card> help
    quit           quit this menu
    admin          show admin commands
    help           show this help
    list           list all available data
    name           change card holder's name
    url            change URL to retrieve key
    fetch          fetch the key specified in the card URL
    login          change the login name
    lang           change the language preferences
    sex            change card holder's sex
    cafpr          change a CA fingerprint
    forcesig       toggle the signature force PIN flag
    generate       generate new keys
    passwd         menu to change or unblock the PIN
    verify         verify the PIN and list all data
    unblock        unblock the PIN using a Reset Code
    factory-reset  destroy all keys and data
    
    gpg/card> factory-reset
    gpg: OpenPGP card no. D2760001240103040006105300770000 detected
    
    gpg: Note: This command destroys all keys stored on the card!
    
    Continue? (y/N) y
    Really do a factory reset? (enter "yes") yes
    Celá operace nechtěla PIN. Takže myslete na to, že kdokoliv, komu dáte token do ruky, vám může smazat celou kartu.

    2 tokeny najednou

    Ještě jsem zkusil zasunout 2 tokeny najednou a vypsat informace. Zkoušel jsem různé pořadí zasunutí a vždy se vypsal informace ke stejnému tokenu (v mém případě Yubikey nano). Nenašel jsem postup, jak vypsat všechny karty, případně zvolit kartu. Starší návody nefungovaly. Možná to souvisí s tím, že oba tokeny se hlásí jako stejný Reader. Od verze 2.1.20 je to prý pořešené (https://dev.gnupg.org/T1621)

    Závěr

    Původně jsem si myslel, že to šifrování bude jednodušší. Zejména jsem si tedy myslel, že klíče uložím na tokenu a pak ho můžu zastrčit do libovolného počítače a použít. Bohužel to tak není možné, je potřeba mít nakonfigurované GPG. Pokud je potřeba používat token na vícero počítačích, musí se na každý z nich nakopírovat stejnou konfiguraci. V tom případě by asi bylo dobré nosit s sebou i flashku s konfigurací, nebo raději také nějakou portable verzi GPG.

    Dále mi vrtá hlavou, jak to udělat, pokud chci mít záložní token. Zatím mi vychází, že musím udržovat dvě verze konfigurace, protože GPG si drží sériové číslo karty. Pokud víte o nějakém nekalém postupu, který by problém vyřešil, napište ho do komentáře.

    Nezkoumal jsem konkurenční produkty. Je možné, že pro potřeby používání GPG by se líp hodilo i něco jiného.

    Někdy bych se chtěl ještě podívat, jak se dá Yubico použít k autentizaci SSH. Zatím mě k tomu nic netlačí, takže to nebude brzo.        

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    14.6.2020 11:23 pavele
    Rozbalit Rozbalit vše Re: GPG a Yubikey
    https://www.abclinuxu.cz/hardware/prislusenstvi/podle-sbernice/usb/krypto/yubikey-neo

    Ovšem dnes bych se na to vykašlal a zkusil bych spíš PKCS#11.

    Jediná výhoda je jednoduché použití ve Windows pomocí upraveného paegant:

    http://smartcard-auth.de/download-en.html
    14.6.2020 13:25 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: GPG a Yubikey
    autentizační klíč. Podle dokumentace (https://www.gnupg.org/howtos/card-howto/en/ch03.html) ho sice GPG nepoužívá

    Může ho používat např. gpg-agent pro ssh autentizaci. Není to sice přímo příkaz gpg, ale je součástí stejného projektu a obvykle i stejného balíčku.

    15.7.2020 22:36 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: GPG a Yubikey
    Ještě jsem zkusil zasunout 2 tokeny najednou a vypsat informace. Zkoušel jsem různé pořadí zasunutí a vždy se vypsal informace ke stejnému tokenu (v mém případě Yubikey nano). Nenašel jsem postup, jak vypsat všechny karty, případně zvolit kartu.

    Tak zrovna s tímhle jsem si dneska naběhl. Token, který mi na hlavním počítači bezproblémově fungoval, jsem chtěl vyzkoušet v notebooku a nedokázal jsem ho donutit ke spolupráci, pořád mi to tvrdilo, že "Takové zařízení neexistuje". Po asi půlhodině usilovného debugování (během které jsem se od gpg přes gpg-agent dostal až k scdaemon) mi došlo, že "Broadcom Corp 5880 [Contacted SmartCard]" je čtečka smart karet vestavěná v tom notebooku, kterou jsem nikdy k ničemu praktickému nepoužil a tudíž jsem zapomněl, že tam vůbec je. Ten scdaemon si ji automaticky vybral a protože v ní žádná karta nebyla, skončilo to chybou.

    Pak ještě následovalo hledání v dokumentaci a experimentování se správnou syntaxí. Nakonec jsem skončil se souborem ~/.gnupg/scdaemon.conf obsahujícím řádek

      reader-port Nitrokey Nitrokey Pro (000000000000000000007F04) 01 00
    

    S tím už všechno funguje jak má.

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.