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 18:33 | Nová verze

    Offpunk byl vydán ve verzi 3.0. Jedná se o webový prohlížeč podporující také protokoly Gemini, Gopher a RSS běžící v terminálu. Přibyl nástroj xkcdpunk pro zobrazení XKCD v terminálu.

    Ladislav Hagara | Komentářů: 0
    dnes 18:22 | Zajímavý projekt

    Promethee je projekt, který implementuje UEFI (Unified Extensible Firmware Interface) bindingy pro JavaScript. Z bootovacího média načítá a spouští soubor 'script.js', který může používat UEFI služby. Cílem je vytvořit zavaděč, který lze přizpůsobit pomocí HTML/CSS/JS. Repozitář se zdrojovými kódy je na Codebergu.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 12:44 | Bezpečnostní upozornění

    Zpráva Justičního výboru Sněmovny reprezentantů upozorňuje na cenzurní kampaň Evropské komise, mířenou proti svobodě projevu na sociálních sítích. V dokumentu se uvádí, že se Evropská komise během posledních šesti let účastnila více než 100 uzavřených jednání, během nichž po platformách požadovala úpravy pravidel moderování obsahu, přičemž toto úsilí Komise zahrnovalo i cenzuru politických názorů a pravdivých informací. Výbor zdůrazňuje, že tento přístup Bruselu ohrožuje ústavou zaručená práva Američanů na svobodu projevu.

    NUKE GAZA! 🎆 | Komentářů: 10
    dnes 04:33 | Nová verze

    Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).

    |🇵🇸 | Komentářů: 0
    včera 03:33 | IT novinky

    Do prodeje jde tichá bezdrátová herní myš Logitech PRO X2 SUPERSTRIKE s analogovými spínači s haptickou odezvou (HITS, Haptic Inductive Trigger System). Cena je 4 459 Kč.

    Ladislav Hagara | Komentářů: 7
    7.2. 21:00 | Zajímavý projekt

    Microsoft na GitHubu zveřejnil zdrojový kód projektu LiteBox, jedná se o 'knihovní operační systém' (library OS) zaměřený na bezpečnost, využívající systémovou architekturu LVBS k ochraně jádra před útoky z uživatelského prostoru. LiteBox je napsán v Rustu a uvolněný pod licencí MIT. Projekt je teprve v rané fázi vývoje.

    NUKE GAZA! 🎆 | Komentářů: 3
    7.2. 16:11 | Zajímavý software

    BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    7.2. 16:00 | Humor

    Byl představen cross-assembler xa.sh, napsaný čistě v Bourne shell skriptu. Tento nástroj umožňuje zpracovávat assemblerový kód pro Intel 8080, přičemž je možné snadno přidat podporu i pro další architektury, například 6502 a 6809. Skript využívá pouze různé běžné unixové příkazy jako jsou awk, sed nebo printf. Skript si lze stáhnout z GitHubového repozitáře projektu.

    NUKE GAZA! 🎆 | Komentářů: 6
    6.2. 17:22 | IT novinky

    Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.

    NUKE GAZA! 🎆 | Komentářů: 20
    6.2. 16:44 | Komunita

    Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.

    NUKE GAZA! 🎆 | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (26%)
     (3%)
     (5%)
     (2%)
     (12%)
     (28%)
    Celkem 815 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    GPG a Yubikey

    13.6.2020 23:10 | Přečteno: 2676× | 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: 71 | 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: 71 | 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.