Vendredi 23 novembre 2018

Création de sous-clé chiffrement et signature

On liste

gpg --list-key
pub   rsa4096 2016-10-10 [SC]
      7B4704BED590598DDC8394BE05F958A089BF92FD
uid          [ inconnue] autre (autre-exemple) <autre@exemple.com>
uid          [ inconnue] untel-exemple (untel alias autre) <untel@exemple.com>
sub   rsa4096 2016-10-10 [E]

On édite

gpg --edit-key untel@exemple.com
gpg (GnuPG) 2.1.21; 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.

La clef secrète est disponible.

sec  rsa4096/05F958A089BF92FD
     créé : 2016-10-10  expire : jamais      utilisation : SC  
     confiance : inconnu       validité : inconnu
ssb  rsa4096/E7781DA66EC37634
     créé : 2016-10-10  expire : jamais      utilisation : E   
[ inconnue] (1). autre (autre-exemple) <autre@exemple.com>
[ inconnue] (2)  untel-exemple (untel alias autre) <untel@exemple.com>

Sélectionnez le type de clef désiré :
   (3) DSA (signature seule)
   (4) RSA (signature seule)
   (5) Elgamal (chiffrement seul)
   (6) RSA (chiffrement seul)
Quel est votre choix ? 4
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 4096
La taille demandée est 4096 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) 
La clef n'expire pas du tout
Est-ce correct ? (o/N) o
Faut-il vraiment la créer ? (o/N) o   la passphrase est exigée
De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.

On patiente…

sec  rsa4096/05F958A089BF92FD
     créé : 2016-10-10  expire : jamais      utilisation : SC  
     confiance : inconnu       validité : inconnu
ssb  rsa4096/E7781DA66EC37634
     créé : 2016-10-10  expire : jamais      utilisation : E   
ssb  rsa4096/51B85C4BD5FDDF4F
     créé : 2017-07-20  expire : jamais      utilisation : S   
[ inconnue] (1). autre (autre-exemple) <autre@exemple.com>
[ inconnue] (2)  untel-exemple (untel alias autre) <untel@exemple.com>

gpg> save

C’est ici qu’arrive la partie délicate. Il va vous falloir **supprimer la clé privée maîtresse**, mais GnuPG ne le permet pas de façon pratique.
Vous allez devoir exporter la sous-clé, supprimer la clé privée, puis réimporter la sous-clé.

Trouvez l’identifiant de votre nouvelle sous-clé privée : gpg --list-secret-keys
Exportez votre (ou vos) sous-clé(s) : gpg --output $HOME/subkeys.gpg --export-secret-subkeys [SubkeyID!...] saisie passphrase
Sans argument, toutes vos sous-clés seront exportées. Si vous n’en spécifiez que certaines, n’oubliez pas les points d’exclamation !

gpg --output $HOME/subkeys.gpg --export-secret-subkeys

Supprimez votre clé privée maîtresse :

gpg --delete-secret-keys 05F958A089BF92FD
gpg (GnuPG) 2.1.21; 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.


sec  rsa4096/05F958A089BF92FD 2016-10-10 autre (autre-exemple) <autre@exemple.com>

Faut-il supprimer cette clef du porte-clefs ? (o/N) o
C'est une clef secrète — faut-il vraiment la supprimer ? (o/N) o

Réimportez vos sous-clés (passphrase demandée):

gpg --import subkeys.gpg
gpg: clef 05F958A089BF92FD : « autre (autre-exemple) <autre@exemple.com> » n'est pas modifiée
gpg: To migrate 'secring.gpg', with each smartcard, run: gpg --card-status
gpg: clef 05F958A089BF92FD : clef secrète importée
gpg:       Quantité totale traitée : 1
gpg:                 non modifiées : 1
gpg:           clefs secrètes lues : 1
gpg:      clefs secrètes importées : 1

Vérifiez que gpg -K affiche sec# en face de l’identifiant de votre clé maîtresse, et non un simple sec. Cela signifie que la clé secrète n'est pas réellement présente.

gpg -K
/home/utilisateur/.gnupg/pubring.kbx
--------------------------------
sec#  rsa4096 2016-10-10 [SC]
      7B4704BED590598DDC8394BE05F958A089BF92FD
uid          [ inconnue] autre (autre-exemple) <autre@exemple.com>
uid          [ inconnue] untel-exemple (untel alias autre) <untel@exemple.com>
ssb   rsa4096 2016-10-10 [E]
ssb   rsa4096 2017-07-20 [S]

Changez la phrase de passe protégeant vos sous-clés : gpg --edit-key KeyID passwd. De cette manière, même si votre phrase de passe de tous les jours est compromise, la clé privée maîtresse et ses sous-clés sauvegardées précédemment sont encore protégées par votre ancienne phrase de passe.
Pour finir, effacez les traces : rm $HOME/subkeys.gpg $HOME/gnupg-backup.tar

https://wiki.archlinux.org/index.php/GnuPG