Renouveler les informations d’une clé PGP associée à une Yubikey

Il y a quelque temps, j’ai fais l’acquisition d’un Yubikey NEO. Je me suis alors créé une nouvelle clé PGP que j’ai stocké sur la Yubikey. Lorsque j’ai configuré ma clé, j’y ai exporté les sous-clés de chiffrement, de signature et d’authentification, et j’ai copier la clé primaire sur un support externe que j’ai précieusement stocké. Je n’ai gardé aucune clé secrète sur mes différents appareils (PC portable, smartphone, etc.), toute la cryptographie étant pris en charge par la Yubikey.

La clé primaire, que j’ai copié sur un support externe, est utilisé pour modifier ma clé PGP. Pour rappel, parler de clé PGP est un abus de langage, puisque est est composée de plusieurs sous-clés, ainsi que d’un ou plusieurs identité (cf. l’article sur la struture d’une clé PGP). Lorsque l’on veut ajouter/modifier une sous-clé ou une identité, nous avons besoin de la clé primaire pour signer ces informations.

Renouveler ma clé PGP

Prenons comme exemple la clé PGP que nous avions initialement généré pour configurer notre Yubikey. A l’époque, j’avais fais expiré la clé après un an, le 2019-06-15.

debian:~$ gpg --list-secret-keys

sec#  rsa4096 2018-06-15 [C] [expirée : 2019-06-15]
      15234153E3D076C272E01D31788FC46C8BB350B8
uid          [ expirée ] Wandrille <contact at vonkrafft dot fr>

Alors voilà, notre clé primaire est expirée, et puisque c’est elle qui signe nos trois sous-clés, nous ne pouvons plus ni chiffrer, ni signer, ni nous authentifier avec notre clé PGP.

Peu importe, nous éditons notre clé, renouvelons pour, mettons, 5 ans et l’affaire est pliée !

debian:~$ gpg --expert --edit-key 788FC46C8BB350B8
gpg> expire
gpg: échec de la signature : Pas de clef secrète
gpg: make_keysig_packet failed: Pas de clef secrète

Seulement voilà, nous n’avons plus la clé primaire, puisque nous l’avons copier sur un support externe …

Réimporter la clé primaire

Branchez le support externe sur lequel vous avez stocké votre clé primaire (si besoin, et j’espère vous vous en aurez besoin, déchiffrez le support ou l’archive de stockage).

debian:~$ gpg --import 788FC46C8BB350B8.key

Vous serez inviter à saisir la passphrase de votre clé primaire et l’importation devrait se dérouler sans soucis. Nous pouvons à présent modifie la clé PGP est renouveler la clé primaire.

debian:~$ gpg --expert --edit-key 788FC46C8BB350B8
gpg> expire
gpg> save

Supprimer (encore) la clé primaire

Si nécessaire, vous pouvez exporter la clé primaires et les sous-clés sur votre support externe (notamment si vous avez modifier/ajouter des clés).

debian:~$ gpg --armor --output ./secret-keys.txt --export-secret-key 788FC46C8BB350B8
debian:~$ gpg --armor --output ./secret-subkeys.txt --export-secret-subkeys 788FC46C8BB350B8

Nous n’avons à présent plus besoin de la clé primaire. Tout comme la première fois, nous pouvons la supprimer.

debian:~$ gpg --delete-secret-keys 788FC46C8BB350B8

Branchez ensuite votre Yubikey afin d’actualiser le magasin GPG et ajouter la clé PGP que vous venez de supprimer dans la liste de vos clés secrètes.

debian:~$ gpg --card-status
debian:~$ gpg --list-secret-keys

sec#  rsa4096 2018-06-15 [C] [expire : 2024-08-01]
      15234153E3D076C272E01D31788FC46C8BB350B8
uid          [  ultime ] Wandrille <contact at vonkrafft dot fr>
ssb>  rsa2048 2018-06-15 [S]
ssb>  rsa2048 2018-06-15 [E]
ssb>  rsa2048 2018-06-15 [A]

debian:~$ gpg --armor --export 788FC46C8BB350B8 > 788FC46C8BB350B8.asc