Portál AbcLinuxu, 30. dubna 2025 13:16
scdaemon
tom@mike:~$ sudo apt-get install scdaemonNejdří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.
--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 dataV 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.
gpg/card> name Cardholder's surname: Example Cardholder's given name: FirstZobrazí 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): mJak 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: czJazykové 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]
.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>
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> saveTeď 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 differVelikost 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:
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 12036855A 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 differZměna souboru (velikost + úvodní text) je stejná jako v prvním případě.
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 differSoubor 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.odtvytvoří 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.odtVyskočí 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
.
~/bin/yubitouch.sh sig on 12345678To čí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: onKdyž 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.
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 keyPř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") yesCelá operace nechtěla PIN. Takže myslete na to, že kdokoliv, komu dáte token do ruky, vám může smazat celou kartu.
Tiskni
Sdílej:
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.
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, (c) 1999-2007 Stickfish s.r.o.