Table des matières

Création de clés GPG — Sauce: https://next.ink/10925/102685-gpg-comment-creer-paire-clefs-presque-parfaite/

Renforcer l'environnement depuis lequel la clef est générée

Il faut commencer par renforcer les paramètres par défaut de GnuPG. Plusieurs méthodes existent pour cela, mais le plus simple est d'éditer le fichier de configuration. Celui-ci se trouve à l'endroit suivant :

  Linux   : ~/.gnupg/gpg.conf
  Windows : %AppData%\Roaming\gnupg\gpg.conf
gpg.conf
# Limite les informations diffusées
no-emit-version
no-comments
export-options export-minimal

# Permet d'afficher le format long de l'ID des clefs et leurs empreintes
keyid-format 0xlong
with-fingerprint

# Affiche la validité des clefs
list-options show-uid-validity
verify-options show-uid-validity

# Limite les algorithmes utilisés
personal-cipher-preferences AES256
personal-digest-preferences SHA512
default-preference-list SHA512 SHA384 SHA256 RIPEMD160 AES256 TWOFISH BLOWFISH ZLIB BZIP2 ZIP Uncompressed

cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512
compress-algo ZLIB

disable-cipher-algo 3DES
# weak-digest SHA1 peut poser problème avec d'anciennes versions de GPG. 
weak-digest SHA1

# Paramètres S2K (String-to-Key) de la phrase de passe des clefs
# Le paramètre s2k-count peut être réduit sur les machines peu puissantes
s2k-cipher-algo AES256
s2k-digest-algo SHA512
s2k-mode 3
s2k-count 65011712

Création de la clef de base

terminal
gpg --full-gen-key --expert

gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
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 and RSA
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
   (9) ECC (sign and encrypt) *default*
  (10) ECC (signature seule)
  (11) ECC (set your own capabilities)
  (13) Existing key
  (14) Existing key from card
Quel est votre choix ? 11

Possible actions for this ECC key: Signer Certifier Authentifier
Actions actuellement permises : Signer Certifier

   (S) Inverser la capacité de signature
   (A) Inverser la capacité d'authentification
   (Q) Terminé

Quel est votre choix ? s

Possible actions for this ECC key: Signer Certifier Authentifier
Actions actuellement permises : Certifier

   (S) Inverser la capacité de signature
   (A) Inverser la capacité d'authentification
   (Q) Terminé

Quel est votre choix ? q
Sélectionnez le type de courbe elliptique désiré :
   (1) Curve 25519 *default*
   (2) Curve 448
   (3) NIST P-256
   (4) NIST P-384
   (5) NIST P-521
   (6) Brainpool P-256
   (7) Brainpool P-384
   (8) Brainpool P-512
   (9) secp256k1
Quel est votre choix ? 1
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
Pendant combien de temps la clef est-elle valable ? (0) 1y
La clef expire le 04/31/34 13:37:00 Paris, Madrid
Est-ce correct ? (o/N) o

GnuPG doit construire une identité pour identifier la clef.

Nom réel : Albirew GIT
Adresse électronique : me@jeandeauh.fr
Commentaire : GIT signing key
Vous avez sélectionné cette identité :
    « Albirew GIT (GIT signing key) <me@jeandeauh.fr> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o

pub   ed25519/0x0123456789ABCDEF 2024-05-01 [C]
 Empreinte de la clef = 0123 4567 8987 6543 210F  EDCB 0123 4567 89AB CDEF
uid                             Albirew GIT (GIT signing key) <me@jeandeauh.fr>

Ajout d'une adresse mail supplémentaire pour la même clé

terminal
gpg --edit-key 89ABCDEF

gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

sec  ed25519/0x0123456789ABCDEF
     créé : 2024-05-01  expire : 2034-04-31      utilisation : C
     confiance : ultime        validité : ultime
[  ultime ] (1). Albirew GIT (GIT signing key) <me@jeandeauh.fr>

gpg> adduid
Nom réel : Albirew GIT
Adresse électronique : gerard@jeandeauh.fr
Commentaire : GIT sign
Vous avez sélectionné cette identité :
    « Gerard (GIT sign) <gerard@jeandeauh.fr> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o

sec  ed25519/0x0123456789ABCDEF
     créé : 2024-05-01  expire : 2034-04-31      utilisation : C
     confiance : ultime        validité : ultime
[  ultime ] (1)  Albirew GIT (GIT signing key) <me@jeandeauh.fr>
[ inconnue] (2). Albirew GIT (GIT sign) <gerard@jeandeauh.fr>

gpg> save

Ajout des sous-clefs de chiffrement et de signature

terminal
gpg --edit-key 89ABCDEF

gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

sec  ed25519/0x0123456789ABCDEF
     créé : 2024-05-01  expire : 2034-04-31      utilisation : C
     confiance : ultime        validité : ultime
[  ultime ] (1)  Albirew GIT (GIT signing key) <me@jeandeauh.fr>
[  ultime ] (2). Albirew GIT (GIT sign) <gerard@jeandeauh.fr>

gpg>addkey
Sélectionnez le type de clef désiré :
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
  (10) ECC (signature seule)
  (12) ECC (encrypt only)
  (14) Existing key from card
Quel est votre choix ? 10
Sélectionnez le type de courbe elliptique désiré :
   (1) Curve 25519 *default*
   (4) NIST P-384
   (6) Brainpool P-256
Quel est votre choix ? 1
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) 0
La clef n'expire pas du tout
Est-ce correct ? (o/N) o
Faut-il vraiment la créer ? (o/N) o

sec  ed25519/0x0123456789ABCDEF
     créé : 2024-05-01  expire : 2034-04-31      utilisation : C
     confiance : ultime        validité : ultime
ssb  ed25519/0x0123456789ABCDE2
     créé : 2024-05-01  expire : jamais      utilisation : S
[  ultime ] (1)  Albirew GIT (GIT signing key) <me@jeandeauh.fr>
[  ultime ] (2). Albirew GIT (GIT sign) <gerard@jeandeauh.fr>


gpg> addkey
Sélectionnez le type de clef désiré :
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
  (10) ECC (signature seule)
  (12) ECC (encrypt only)
  (14) Existing key from card
Quel est votre choix ? 12
Sélectionnez le type de courbe elliptique désiré :
   (1) Curve 25519 *default*
   (4) NIST P-384
   (6) Brainpool P-256
Quel est votre choix ? 1
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) 0
La clef n'expire pas du tout
Est-ce correct ? (o/N) o
Faut-il vraiment la créer ? (o/N) o

sec  ed25519/0x0123456789ABCDEF
     créé : 2024-05-01  expire : 2034-04-31      utilisation : C
     confiance : ultime        validité : ultime
ssb  ed25519/0x0123456789ABCDE2
     créé : 2024-05-01  expire : jamais      utilisation : S
sec  ed25519/0x0123456789ABCDE3
     créé : 2024-05-01  expire : jamais      utilisation : E
[  ultime ] (1)  Albirew GIT (GIT signing key) <me@jeandeauh.fr>
[  ultime ] (2). Albirew GIT (GIT sign) <gerard@jeandeauh.fr>

gpg>save

La sauvegarde des clefs

Passons maintenant à une étape importante : celle qui consiste à créer une sauvegarde de vos clefs. Ici, on passera par des fichiers qui sont à mettre en sécurité, mais il est possible de passer par des sauvegardes papier, sous forme de QR Code ou autre selon vos préférences. Des outils comme Kleopatra proposent même désormais directement une option d'impression

Certificat de révocation

Celui-ci vous permettra de révoquer votre clef complète en cas de problème. Si jamais elle venait à être découverte ou perdue, il sera possible de l'utiliser pour indiquer qu'elle ne doit plus être utilisée.

Dans les versions récentes de GPG il est généré automatiquement, vous le retrouverez dans le répertoire openpgp-revocs.d situé dans celui contenant votre fichier gpg.conf (voir ci-dessus). Sinon vous pouvez toujours le générer avec la commande suivante (à utiliser avec le nom, l'ID, l'empreinte ou l'email) :

certificat de révocation
gpg --output revocation.asc --gen-revoke 89ABCDEF

Clef primaire et sous-clefs

export des clés
gpg -a --export-secret-keys 89ABCDEF > secret_keys.gpg
gpg -a --export-secret-subkeys 89ABCDEF > secret_subkeys.gpg

Clef publique et envoi sur un serveur de clefs

serveur de clés
gpg -a --export 89ABCDEF > public.gpg
gpg --keyserver eu.pool.sks-keyservers.net --send-key 0x0123456789ABCDEF