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
# 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 ======
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) »
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)
====== Ajout d'une adresse mail supplémentaire pour la même clé ======
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)
gpg> adduid
Nom réel : Albirew GIT
Adresse électronique : gerard@jeandeauh.fr
Commentaire : GIT sign
Vous avez sélectionné cette identité :
« Gerard (GIT sign) »
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)
[ inconnue] (2). Albirew GIT (GIT sign)
gpg> save
====== Ajout des sous-clefs de chiffrement et de signature ======
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)
[ ultime ] (2). Albirew GIT (GIT sign)
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
= la clef expire dans n jours
w = la clef expire dans n semaines
m = la clef expire dans n mois
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)
[ ultime ] (2). Albirew GIT (GIT sign)
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
= la clef expire dans n jours
w = la clef expire dans n semaines
m = la clef expire dans n mois
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)
[ ultime ] (2). Albirew GIT (GIT sign)
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) :
gpg --output revocation.asc --gen-revoke 89ABCDEF
==== Clef primaire et sous-clefs ====
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 ====
gpg -a --export 89ABCDEF > public.gpg
gpg --keyserver eu.pool.sks-keyservers.net --send-key 0x0123456789ABCDEF