Comment avoir une phrase de passe différente pour une sous-clé gpg?

16

J'ai besoin d'automatiser un processus de déploiement et l'outil signera automatiquement les artefacts de version. Mon trousseau de clés a une clé primaire que j'utilise uniquement pour créer des sous-clés et deux sous-clés. Une sous-clé pour la signature et une pour le cryptage.

Actuellement, il existe une seule phrase de passe pour toutes les clés. Je ne veux pas spécifier cette phrase de passe dans un fichier de configuration car cela risquerait également la clé primaire.

J'ai donc pensé définir une phrase de passe différente pour la sous-clé en faisant:

$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save

Mais cela a également changé la phrase de passe pour les autres clés.

Comment puis-je définir une phrase de passe distincte pour des clés individuelles?

Kshitiz Sharma
la source

Réponses:

14

La configuration de phrases de passe individuelles pour les sous-clés n'est pas possible avec GnuPG. Mais il existe une solution de contournement, qui ressemble même à une bonne idée de pratique dans ce cas:

  1. Exportez la sous-clé de votre choix (dans l'exemple, la sous-clé a un ID 0xDEADBEEF). N'oubliez pas le point d'exclamation, il s'assure que GnuPG fonctionne réellement avec la sous-clé elle-même et non avec la clé primaire à laquelle il appartient!

    gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
    

    La sous-clé aura la clé primaire publique et un "talon de clé" privé attaché, mais pas la clé primaire privée elle-même.

  2. Importez la sous-clé dans un autre répertoire personnel de GnuPG. L'exemple s'attend à ce que vous soyez dans le répertoire racine de votre projet et que vous ayez un dossier etcpour des trucs comme ce trousseau.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Modifiez la phrase secrète de la sous-clé séparée.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Au lieu d'utiliser votre trousseau de clés "normal", référez-vous toujours au répertoire GnuPG séparé comme mentionné ci-dessus.

Vous pouvez également envisager de créer une clé de projet que vous signez avec votre propre clé. Cela pourrait avoir l'avantage que d'autres contributeurs / utilisateurs pourraient également signer la clé (et certifier ainsi qu'il s'agit bien de la clé utilisée pour le projet), et la remise du projet pourrait être plus facile au cas où quelqu'un d'autre prendrait en charge la maintenance.

Jens Erat
la source
1
Cela ne fonctionne pas avec GnuPG 2.2.4. Il ne dit pas "Besoin de la clé secrète pour ce faire". Très triste: '(
steinybot
J'ai donc besoin d'utiliser des clés gpg sans mot de passe pour la signature automatique du dépôt?
SuperSandro2000
Non, vous pouvez également pré-mettre en cache la phrase secrète à l'aide de gpg-agent. Jetez un oeil à gpg-preset-passphrase.
Jens Erat
5

Une archive de messagerie gnupg.org très obsolète (2013) explique une solution de contournement maladroite pour créer un mot de passe distinct pour une sous-clé .
Cela implique que la contrainte ne se trouve pas dans la structure de données de l'ensemble de clés (c'est-à-dire le groupe de sous-clés maître) mais uniquement dans l'interface logicielle pour la construction et la modification de l'ensemble de clés.

Une citation de la référence:

Salut,

est-il possible d'avoir une clé principale et plusieurs sous-clés avec les sous-clés ayant une phrase de passe différente (par exemple plus courte) que la clé principale?

Ce que vous recherchez probablement, c'est une clé principale hors ligne (voir --export-secret- sous-clés). Mais la réponse est: oui. gpg-agent ne se soucie pas de la connexion des clés. Il vous demande même plusieurs fois la même phrase secrète (pour différents composants de la même clé).

Mais GnuPG ne prend pas cela directement en charge.

1) Exportez la clé secrète (--export-secret-keys sans --armor)

2) changer la phrase secrète

3) Exportez à nouveau (vers un fichier différent, bien sûr)

4) Utilisez gpgsplit sur les deux fichiers (dans différents répertoires). Le résultat ressemble à ceci:

000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig

5) Vous mélangez maintenant les composants des deux groupes: mkdir combiné mv a / 000001 * a / 000002 * a / 000003 * combiné / mv b / 000004 * b / 000005 * combiné / cd combiné / cat *> different_passphrases.gpg

6) Supprimez la clé du secret: --delete-secret-key

7) Importez le nouveau: gpg --import different_passphrases.gpg

Hauke ​​Laging

Je n'ai pas personnellement confirmé cette opération - je ne fais que rapporter ce que j'ai lu.

Le manque de spécification et de discussion dans la documentation GnuPG concernant ce sujet important est décevant.

Craig Hicks
la source