Comment exporter une clé ASC privée / secrète pour déchiffrer des fichiers GPG

88

Contexte: Mon patron a essayé de m'exporter une clé ASC avec des parties publiques et privées, mais chaque fois que j'obtiens le fichier, la partie privée ne se charge jamais et elle ne déchiffre aucun fichier.

Nous avons essayé d'exporter la clé ASC en utilisant:

  • Application Windows Kleopatra 2.1 (incluse dans gpg4win)
  • Assistant de confidentialité de l'application Windows GNU (inclus dans gpg4win)

            Error: "Decryption failed. Secret Key Not available." 
    

Comment exporter correctement une clé ASC secrète ou privée pour décrypter les fichiers gpg?

Brian McCarthy
la source

Réponses:

185

Vous pouvez exporter la clé privée avec l' outil de ligne de commande de GPG . Cela fonctionne sur le shell Windows. Utilisez la commande suivante:

gpg --export-secret-keys

Une exportation normale avec --exportn'inclura aucune clé privée, vous devez donc utiliser --export-secret-keys.

Éditer:

Pour résumer les informations données dans mes commentaires, voici la commande qui vous permet d'exporter une clé spécifique avec l'ID 1234ABCD vers le fichier secret.asc:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

Vous pouvez trouver l'ID dont vous avez besoin à l'aide de la commande suivante. L'ID est la deuxième partie de la deuxième colonne:

gpg --list-keys

Pour exporter une seule clé secrète spécifique au lieu de toutes:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber est le numéro de l'identifiant de la clé que vous essayez d'exporter.

Démence
la source
4
@Brian: Cela videra la clé dans la console. Si vous souhaitez le stocker dans un fichier, vous pouvez rediriger la sortie vers un nom de fichier arbitraire ("gpg --export-secret-keys> secret.asc").
Demento
5
@Brian: Cela vous donne la sortie en ASCII et non en binaire. Si vous le conservez dans un fichier, cela n'a pas vraiment d'importance. Mais une fois que vous voulez le faire circuler d'une autre manière, la version ASCII est beaucoup plus facile à gérer (l'envoyer en ligne dans un e-mail par exemple)
Demento
8
Vous souhaitez peut-être emporter votre clé secrète à un autre endroit. Dans ce cas, vous devez crypter les données exportées: "gpg --export-secret-keys keyIDNumber | gpg -c> encrypted" le décrypter avec "gpg -o unencrypted encrypted".
rockdaboot
2
Les clés exportées depuis GnuPG restent cryptées (c'est pourquoi vous n'avez pas besoin de saisir la phrase de passe de la clé privée), il n'est donc vraiment pas nécessaire de la crypter à nouveau.
Ferry Boender le
1
@FerryBoender En êtes-vous sûr ?
Josh Habdas
32

Toutes les réponses ci-dessus sont correctes, mais il se peut qu'une étape cruciale manque, vous devez modifier la clé importée et «finalement faire confiance» à cette clé

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

et sélectionnez 5 pour activer cette clé privée importée comme l'une de vos clés

higuita
la source
18

Voir le traitement de Dark Otter

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Si le site est en panne, utilisez la référence à la sauvegarde archive.org:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

qui comprend un moyen raisonnablement sûr de transférer les clés. Vous pouvez mettre cette recommandation dans les scripts shell ci-dessous pour une utilisation répétée.

Commencez par obtenir le KEYID souhaité dans la liste affichée par

$ gpg -K

Dans la liste résultante, notez le KEYID (les 8 hexadécimaux suivant la seconde) dont vous avez besoin pour le transfert.

Ensuite, envoyez le shell testé scipts "export_private_key" sur le premier compte et générez votre pubkey.gpg + keys.asc. Appelez ensuite sur le deuxième compte "import_private_key". Voici leur contenu affiché avec cat (contenu copier-coller):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

Maintenant, transférez par certains moyens le "pubkey.gpg" (si nécessaire) et le privé "keys.asc" au deuxième compte et envoke le programme ci-dessous.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

Dans l'esprit de Otter "Et ça devrait être ça".

Wolfram J
la source
Merci pour le script d'inclure à la fois la clé publique et la clé privée dans un fichier protégé par mot de passe. Rend ma vie bien meilleure!
codekoala
L'option --no-use-agentest obsolète dans la version gpg 2.
Josh Habdas
9

Je pense que vous n'aviez pas encore importé la clé privée comme le disait l'erreur de message, Pour importer la clé publique / privée de gnupg:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
SIFE
la source
Je vous posais des questions sur l'exportation à partir d'un ordinateur qui fonctionne ... vous ne pouvez importer la clé que si c'est sur un serveur local.
Brian McCarthy
@Brian McCarthy: Qu'essayez-vous de dire?
SIFE
Avons-nous vraiment besoin d'importer la clé publique si la clé privée a déjà été importée? Si je comprends bien, une clé publique peut être générée à partir d'un élément privé.
farhany
@farhany je pense que oui, car vous en aurez besoin lorsque vous signerez votre message.
SIFE
6

cela a fini par fonctionner pour moi:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

vous pouvez nommer keyfilename.asc par n'importe quel nom tant que vous gardez l'extension .asc.
cette commande copie toutes les clés secrètes sur l'ordinateur d'un utilisateur dans keyfilename.asc dans le répertoire de travail où la commande a été appelée.

Pour exporter une seule clé secrète spécifique au lieu de toutes:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber est le numéro de l'identifiant de la clé que vous essayez d'exporter.

Brian McCarthy
la source
1
Vous pouvez lister toutes les clés disponibles avec "--list-keys". La deuxième colonne contiendra des identifiants tels que "2048g / 1234ABCD". Trouvez la clé désirée et exportez-la avec "gpg --export-secret-keys 1234ABCD> secret.asc", en changeant bien sûr 1234ABCD avec l'ID correct. Vous pouvez également ajouter l'indicateur "-a". Il écrit la sortie avec des caractères ASCII, juste au cas où la sortie binaire causerait des problèmes.
Demento
@demento, merci pour les commentaires supplémentaires ... je vais ajouter cela à la réponse
Brian McCarthy
2
vous avez toujours besoin du -a si vous voulez vraiment asc
RichieHH
Comment les importer ensuite sur un autre ordinateur?
Natim
@Natim J'imagine que vous prenez exportedKeyFilename.ascl'autre ordinateur et que vous le faites ensuite gpg --allow-secret-key-import --import exportedKeyFilename.ascdans le répertoire avec le .ascfichier. Voir: unix.stackexchange.com/questions/184947/…
Brōtsyorfuzthrāx
5

Semblable à la réponse de @Wolfram J, voici une méthode pour crypter votre clé privée avec une phrase de passe :

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

Et une méthode correspondante pour décrypter:

gpg private_key.asc
Mateen Ulhaq
la source
5

1.Exportez une clé secrète (c'est ce que votre patron aurait dû faire pour vous)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Importez la clé secrète (importez votre clé privée)

gpg --import privateKey.asc

Ce n'est pas encore fait, vous devez toujours faire confiance à une clé. Vous devrez vous assurer que vous faites également confiance à une clé.

gpg --edit-key yourKeyName

Entrez confiance, 5, y, puis quittez

Source: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

Michael James Kali Galarnyk
la source