Yubico Forum https://forum.yubico.com/ |
|
Import my old GPG private key in Yubikey Neo https://forum.yubico.com/viewtopic.php?f=26&t=1324 |
Page 1 of 2 |
Author: | j4pe [ Mon Feb 24, 2014 4:37 pm ] |
Post subject: | Import my old GPG private key in Yubikey Neo |
Hello to all. I would like to send my old private key on my YubikeyNeo . I follow the README repository: https://github.com/Yubico/ykneo-openpgp . The installation went very well and I use the script " keyParser.py " which also works fine except a regular expression in " parsingFunctions.py " because I 'm french . (line 121) : Code: regexp = r " ^ \ s + Footprint key = (+). ? " keyid + + "$" By executing this script , I have an commande line that appears to play . eg Code: ./keyParser.py e 00XXXXXX 12345678 opensc-tool -s '00 ...........' I execute opensc-tool result and the key is added to the yubikey in Signature, Encryption and Authentication modes. I test with a file: Code: gpg -ae test.txt which create me well an encrypted file . It is trying to uncrypt that is more complicated : Code: gpg -d test.txt.asc gpg : parts of the secret key is not available gpg : encrypted with RSA key 4096 bits , XXXX identifier created on 2014-02-24 " xxx x <x@x> " gpg : decryption fails public key : general error gpg : decryption failed : secret key not available Why Gpg can not find my key? Code: Application ID ...: D2760001240102000000000000010000 Version ..........: 2.0 Manufacturer .....: test card Serial number ....: 00000001 Name of cardholder: [non positionné] Language prefs ...: [non positionné] Sex ..............: non indiqué URL of public key : [non positionné] Login data .......: [non positionné] Signature PIN ....: forcé Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: XXXXXXXXXXX Encryption key....: XXXXXXXXXX Authentication key: XXXXXXXXXXXX General key info..: pub 4096R/XXX 2014-02-24 xxx <x@x> sec> 4096R/XXX créé : 2014-02-24 expire : jamais nº de carte : 0000 00000001 ssb# 4096R/XXX créé : 2014-02-24 expire : jamais Regards |
Author: | hiviah [ Mon Feb 24, 2014 6:11 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
This seems to suggest your RSA key had 4096 bit modulus, which is AFAIK not supported for Yubikey Neo, 2048 bit RSA is max: Quote: gpg : encrypted with RSA key 4096 bits Later, in the gpg output it shows that the imported key is 2048 bit, according to the card (something got truncated somewhere?) Quote: Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: XXXXXXXXXXX Encryption key....: XXXXXXXXXX Authentication key: XXXXXXXXXXXX General key info..: pub 4096R/XXX 2014-02-24 xxx <x@x> I also found out that the import doesn't work correctly if you created extra subkeys for your key (I had to revoke one signing subkey). BTW I used different method, moving keys directly to card with "keytocard" command from "gpg --edit-key". |
Author: | j4pe [ Mon Feb 24, 2014 7:18 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
I also tried with 2048 key and i have the same error. Tommorrow i try to reinitialise Yubikey with gpshell and upload 2048 key without sub key. I'm not verry confident because i think i have already tried. also keytocard (gpg --edit-key) dont work with me. i append log tomorow. |
Author: | j4pe [ Tue Feb 25, 2014 9:41 am ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
Here's what I did to reproduce my problem. Code: ja@x220:~/src/ykneo-openpgp$ gpshell gpinstall.txt mode_211 enable_trace establish_context card_connect select -AID a000000003000000 Command --> 00A4040008A000000003000000 Wrapped command --> 00A4040008A000000003000000 .... Response <-- 009000 card_disconnect release_context Code: ja@x220:~/src/ykneo-openpgp$ gpg --card-status gpg: detected reader `YubiKey Neo CCID 00 00' Application ID ...: D2760001240102000000000000010000 Version ..........: 2.0 Manufacturer .....: test card Serial number ....: 00000001 Name of cardholder: [non positionné] Language prefs ...: [non positionné] Sex ..............: non indiqué URL of public key : [non positionné] Login data .......: [non positionné] Signature PIN ....: forcé Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none] Code: ja@x220:~/src/ykneo-openpgp$ gpg --gen-key gpg (GnuPG) 1.4.12; Copyright (C) 2012 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. Sélectionnez le type de clef désiré : (1) RSA et RSA (par défaut) (2) DSA et Elgamal (3) DSA (signature seule) (4) RSA (signature seule) Quel est votre choix ? 1 les clefs RSA peuvent faire entre 1024 et 4096 bits de longueur. Quelle taille de clef désirez-vous ? (2048) La taille demandée est 2048 bits Veuillez indiquer le temps pendant lequel cette clef devrait être valable. 0 = la clef n'expire pas <n> = la clef expire dans n jours <n>w = la clef expire dans n semaines <n>m = la clef expire dans n mois <n>y = la clef expire dans n ans Pendant combien de temps la clef est-elle valable ? (0) 1 La clef expire le mer. 26 févr. 2014 09:22:26 CET Est-ce correct ? (o/N) o Une identité est nécessaire à la clef ; le programme la construit à partir du nom réel, d'un commentaire et d'une adresse électronique de cette façon : « Heinrich Heine (le poète) <heinrichh@duesseldorf.de> » Nom réel : My Name Adresse électronique : mail@mail.com Commentaire : Vous avez sélectionné cette identité : « My Name <mail@mail.com> » Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? o Une phrase de passe est nécessaire pour protéger votre clef secrète. .... gpg: vérification de la base de confiance gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s), modèle de confiance PGP gpg: profondeur : 0 valables : 1 signées : 0 confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u. gpg: la prochaine vérification de la base de confiance aura lieu le 2014-02-26 pub 2048R/41EF8C31 2014-02-25 [expire : 2014-02-26] Empreinte de la clef = D3E4 FAB7 E2CC A306 7509 2B06 2FE9 B563 41EF 8C31 uid My Name <mail@mail.com> sub 2048R/75FB60D7 2014-02-25 [expire : 2014-02-26] Code: ja@x220:~/src/ykneo-openpgp$ gpg --edit-key 41EF8C31 gpg (GnuPG) 1.4.12; Copyright (C) 2012 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. pub 2048R/41EF8C31 created: 2014-02-25 expires: 2014-02-26 usage: SC trust: ultimate validity: ultimate sub 2048R/75FB60D7 created: 2014-02-25 expires: 2014-02-26 usage: E [ultimate] (1). My Name <mail@mail.com> gpg> toggle sec 2048R/41EF8C31 created: 2014-02-25 expires: 2014-02-26 ssb 2048R/75FB60D7 created: 2014-02-25 expires: never (1) My Name <mail@mail.com> gpg> keytocard Really move the primary key? (y/N) y gpg: detected reader `YubiKey Neo CCID 00 00' Signature key ....: [none] Encryption key....: [none] Authentication key: [none] Please select where to store the key: (1) Signature key (3) Authentication key Your selection? 1 You need a passphrase to unlock the secret key for user: "My Name <mail@mail.com>" 2048-bit RSA key, ID 41EF8C31, created 2014-02-25 gpg: writing new key gpg: error writing key to card: not supported Ok, i use keyParser.py script Code: ja@x220:~/src/ykneo-openpgp/util$ ./keyParser.py a 41EF8C31 12345678 writing RSA key pub 2048R/41EF8C31 2014-02-25 [expire : 2014-02-26] Empreinte de la clef = D3E4 FAB7 E2CC A306 7509 2B06 2FE9 B563 41EF 8C31 uid My Name <mail@mail.com> sub 2048R/75FB60D7 2014-02-25 [expire : 2014-02-26] Empreinte de la clef = 536C 694F 5E46 B3A2 1ABD 64B7 6BB7 4D00 75FB 60D7 Code: opensc-tool -s '00 A4 04 00 ....' idem with option a s and e Code: ja@x220:~/src/ykneo-openpgp/util$ gpg --card-status gpg: detected reader `YubiKey Neo CCID 00 00' Application ID ...: D2760001240102000000000000010000 Version ..........: 2.0 Manufacturer .....: test card Serial number ....: 00000001 Name of cardholder: [non positionné] Language prefs ...: [non positionné] Sex ..............: non indiqué URL of public key : [non positionné] Login data .......: [non positionné] Signature PIN ....: forcé Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: D3E4 FAB7 E2CC A306 7509 2B06 2FE9 B563 41EF 8C31 Encryption key....: D3E4 FAB7 E2CC A306 7509 2B06 2FE9 B563 41EF 8C31 Authentication key: D3E4 FAB7 E2CC A306 7509 2B06 2FE9 B563 41EF 8C31 General key info..: pub 2048R/41EF8C31 2014-02-25 My Name <mail@mail.com> sec 2048R/41EF8C31 créé : 2014-02-25 expire : 2014-02-26 ssb 2048R/75FB60D7 créé : 2014-02-25 expire : 2014-02-26 Code: ja@x220:/tmp$ gpg -ea msg.txt Vous n'avez pas indiqué d'identité (vous pouvez utiliser « -r »). Destinataires actuels : Entrez l'identité, en terminant par une ligne vide : mail@mail.com Destinataires actuels : 2048R/75FB60D7 2014-02-25 "My Name <mail@mail.com>" Code: ja@x220:/tmp$ cat msg.txt.asc -----BEGIN PGP MESSAGE----- Version: GnuPG v1.4.12 (GNU/Linux) hQEMA2u3TQB1+2DXAQf/ZgHDgq/jBaMsDKUvXEsCGHnKvQyDUk8ByUnUrSOLz7CC WCvcYD37YA8ZdffNUpNOKqN9rMD8MwbGmu+HIxgvuY/T+HVXPi/xlUVa4t2rTqrj uqWyS2xpx3o5SXraegwg+Ekd2sxMG6BqKVI6N/nbbslYzIndvucFXzdWfGtievq4 DhQ0P0qlnd9hFkSpKp2EX6Xy9Qex0tvvhEGgGDLJJ5xs4OZMLYahPrXFxTUXYGBt GBgwXs6ssRKhWuUXtn0Gb9ZCqQcDVxJmmaXrgKcZbSQiKgEHVPF2k5ydDly6Xaeh wFvgkbPVE8hqxHiB/oufHXzy4N55aabnLQcOPC+sc9JMAWGykNqAk8QDtZchBTgX 4kTfn1LGrYH/qIr3qk/f9MtQQoP/aL5xOTIJEoderlsmVGKSkgv7fCXn7vm+g3Nd VG2Jfc3A2T8AOyGLfw== =tVGY -----END PGP MESSAGE----- Code: ja@x220:/tmp$ gpg -d msg.txt.asc gpg: chiffré avec une clef RSA de 2048 bits, identifiant 75FB60D7, créée le 2014-02-25 « My Name <mail@mail.com> » hello gpg ok Code: rm -rf /home/ja/.gnupg (as if I was on a new computer)Code: ja@x220:/tmp$ gpg -d msg.txt.asc gpg: directory `/home/ja/.gnupg' created gpg: new configuration file `/home/ja/.gnupg/gpg.conf' created gpg: WARNING: options in `/home/ja/.gnupg/gpg.conf' are not yet active during this run gpg: keyring `/home/ja/.gnupg/secring.gpg' created gpg: keyring `/home/ja/.gnupg/pubring.gpg' created gpg: encrypted with RSA key, ID 75FB60D7 gpg: decryption failed: secret key not available ja@x220:/tmp$ gpg -d msg.txt.asc gpg: encrypted with RSA key, ID 75FB60D7 gpg: decryption failed: secret key not available why ? why I can not use the secret key that is on the key? |
Author: | hiviah [ Tue Feb 25, 2014 11:26 am ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
First of all, you can't just delete ~/.gnupg, even if you moved key to smartcard. The key that you just moved to Neo is still on your keyring as secret key, but has a special "S2K" flag. This flag tells GnuPG that the private key is not present in the keyring as a file, but it has instead to ask the smartcard. If you list "gpg --list-secret-keys", there will be a new line showing that the key is on the card now: Code: Card serial no. = 0000 00000001 If you want to use the keycard on another computer, you have to export the key fully and import it on the new computer using the usual "gpg --import". This is the part that might have been very counter-intuitive. On the new computer, the key will also require Neo physically inserted to be usable. The key is really moved to the card - you can check with with "gpg --list-packets" that will show you low-level packet format of PGP file. ----- If the above did not help, here are few things you could try: I am a bit worried about this part, it may indicate you have an old build of openpgpcard.cap after the "keytocard" command: Quote: gpg: error writing key to card: not supported Where did you get the "openpgpcard.cap" file? The version that's for download from Yubico site may be the old one, without key import. I had to build the openpgpcard.cap myself from code in their git repo. Does the OpenPGP applet work if you let it generate key according to the older manual (instead of importing existing key)? You might also try to kill gpg-agent, and retry. Here is an openpgpcard.cap I built from current github master, you might try that one, too. It's built from revision 3c11acaf6b93402f032d8ac91ed31f79eff96d7c (just one commit after 1.0.5 that only changes version number to 1.0.6). SHA256 file checksum (the forum won't upload the file itself as attachment): Code: 7a26fd239ac6ef8d70c70b999741bef870d80292ac130504da4e9caa1f7dc6cb openpgpcard.cap
|
Author: | j4pe [ Tue Feb 25, 2014 11:57 am ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
Thank you for your reply. Now I better understand the principle of private key on the key. However, I can not use "keytocard". I had compiled from the git repo. In doubt I used your ".cap" but I have the same error. I also tried killing gpg-agent |
Author: | j4pe [ Tue Feb 25, 2014 12:06 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
ja@x220:~$ gpg2 --edit-key 4E99BDD5 gpg (GnuPG) 2.0.19; Copyright (C) 2012 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. La clé secrète est disponible. pub 2048R/4E99BDD5 créé: 2014-02-25 expire: jamais utilisation: SC confiance: ultime validité: ultime sub 2048R/8775108D créé: 2014-02-25 expire: jamais utilisation: E [ ultime ] (1). myname <m@xxxx> gpg> toggle sec 2048R/4E99BDD5 créé: 2014-02-25 expire: jamais ssb 2048R/8775108D créé: 2014-02-25 expire: jamais (1) myname <m@j4.pe> gpg> keytocard Enlever réellement la clé principale ? (o/N) o Signature key ....: [none] Encryption key....: [none] Authentication key: [none] Sélectionnez l'endroit où stocker la clé: (1) Clé de signature (3) Clé d'authentification Votre choix ? 1 Vous avez besoin d'une phrase de passe pour déverrouiller la clé secrète pour l'utilisateur: « myname <m@mail> » clé de 2048 bits RSA, ID 4E99BDD5, créée le 2014-02-25 gpg: error writing key to card: Non pris en charge gpg> |
Author: | hiviah [ Tue Feb 25, 2014 1:20 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
And can you try again the keyParser.py script again with 2048 bit key? That seemed to work. Just don't delete the .gnupg dir I think I used hand-compiled gnupg 2.0.22 for the "keytocard" part to work, but if it worked with the keyParser.py for you, then that shouldn't matter. Here's the related issue from github. |
Author: | j4pe [ Tue Feb 25, 2014 3:14 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
Thank you for your help I could actually use keytocard with version 2.2 gpg. So I then used "gpg - list-secret-keys" that adds me "Serial No. Card = 0000 00000001" Code: ja@x220:~$ gpg --list-secret-keys /home/ja/.gnupg/secring.gpg --------------------------- sec> 2048R/6AC871C1 2014-02-25 [expire : 2014-02-26] Nº de série de carte = 0000 00000001 uid name <m@mail> ssb 2048R/74F58795 2014-02-25 But, the Yubikey is never asked me when I want to decrypt. I was just wondering the pass of the secret key. I have a paramettre to add to the key? |
Author: | hiviah [ Tue Feb 25, 2014 6:03 pm ] |
Post subject: | Re: Import my old GPG private key in Yubikey Neo |
Tools like gpg-agent cache the passphrase for some time, I think 10 minutes is default. You can force purge it by sending SIGHUP to gpg-agent, like "killall -SIGHUP gpg-agent". The way to change the password is via "gpg --card-edit", the select "passwd" command. The OpenPGP applet has hardcoded minimum of 6 chars for password length and 8 chars for admin password. (Maybe someone from staff should add some of the stuff from here into FAQ, especially the part about using the Neo Openpgp on multiple computers.) |
Page 1 of 2 | All times are UTC + 1 hour |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |