---
title: "GPG : Guide bonnes pratiques (RSA)"
date: 2017-07-23T21:15:37+01:00
description: "Guide des bonnes pratiques pour créer et utiliser correctement des clés GPG en utilisant l'algorithme RSA."
draft: false
lastmod: 2017-07-28T12:18:37+01:00
tags: ["GPG", "guide", "RSA"]
---
## Description
Suite à mes précédentes réflexions à-propos du {{< inside "sec:gpg:gpg-usage-securise" "Bon usage sécurisé de GPG" >}},
finalement je me décide pour un article de ce genre : **Guide des bonnes pratiques pour la création de clés GPG**.
De fait, il ne suffit pas de se dire, "je vais créer ma clé à coup de
`--gen-key`, et puis zou…", ou d'utiliser une interface graphique
pour le faire, telle qu'Enigmail ou GPA, c'est un processus un peu
plus long, d'autant si l'on veut le faire correctement !
Ce guide s'inspire très fortement de celui d'[Alex Cabal](https://alexcabal.com/creating-the-perfect-gpg-keypair/)…
----
## Création parfaite de clés GPG
### Informations importantes
* **Ne pas utiliser le paramétrage par défaut de GPG, à savoir : 2048 - et, encore moins, inférieur !**
* **La seule taille forte de clé, valide, à ce jour est : 4096 !**
* **Le seul chiffrement à utiliser est : RSA !**
### Création
#### Création : Clients Graphiques
Pour **Enigmail**, il faut ouvrir la fenêtre de gestion de clés,
puis cliquer sur le menu '**Générer > Nouvelle clé**'…
Il ne reste plus qu'à choisir le courriel concerné, de créer une
passphrase, et de la répéter ; dans l'onglet 'Expiration', veillez à
la durée : {{< color red >}}pas plus de 2 ans{{}} !
Puis dans l'onglet 'Avancé', vérifier la taille de la clé : 4096, le type de la clé 'RSA'…
vous n'avez plus qu'à cliquer sur le bouton [ Générer la clef ], et à
laisser faire le temps de la génération…
Avec **GPA**, c'est sensiblement pareil, à la différence que c'est
le menu **'Clefs' > 'Nouvelle clef'** qui permet de le
faire…
Choisissez l'algorithme de chiffrement : RSA - *(RSA
(sign only) nous servira plus tard…)* -, la taille de clé - *il
est très probable qu'il ne soit pas possible de chiffrer avec une clé
plus forte que 3072* - puis remplissez les champs 'Nom', et
'Courriel' seulement, et finissez par cliquez dans la case à cocher
'Expires', pour choisir une date de 2 ans, maximum.
#### Création : Mode Console
Il y a deux options pour créer une clé, l'une permettant de faire plus
finement en demandant plus de choses que l'autre, à savoir :
- l'option `--gen-key`, version abrégée de l'option `--generate-key`,
- l'option `--full-gen-key`, version abrégée de l'option `--full-generate-key`.
----
Utilisons l'option `--gen-key` :
{{< code "sec-gpg-gen-key" sh >}}
### Ajout d'une photo
Veillez à utiliser une photo qui soit de taille légère !
#### addphoto : Clients Graphiques
**Enigmail** : il faut ouvrir la fenêtre de gestion de clés,
menu "Édition" > "Ajouter une photo" après avoir
sélectionné la clé.
- *2ème possibilité* : clic droit sur la clé, menu contextuel 'Ajouter
une photo"… et choisissez le fichier en question.
- *3ème possibilité* : clic droit sur la clé, menu contextuel "Propriété de la
clé", puis dans la fenêtre de propriété, cliquez sur le bouton [ Sélectionnez une action … ] et choisissez 'Ajouter une photo'.
**GPA** semble ne pas en être capable !
#### addphoto : Mode Console
C'est l'option `--edit-key` qui sera utilisée puis l'option `addphoto`, telles que :
{{< code "sec-gpg-edit-key-addphoto" sh >}}
### Préférences Hash
Paramétrer les hash préférés sont de bon aloi !
#### setpref : Clients Graphiques
**Enigmail** semble ne pas en être capable !
**GPA** semble ne pas en être capable !
#### setpref : Mode Console
C'est encore l'option `--edit-key` qui sera utilisée mais avec
l'option `setpref`, telles que :
{{< code "sec-gpg-edit-key-setpref" sh >}}
### Une nouvelle sous-clé de signature
Cette étape est vraiment importante ; elle sert à créer une sous-clé qui
ne servira qu'à signer de nouveaux messages et autres documents…
Si vous vous passez des deux étapes précédentes, ne vous passez pas de
celle-ci ; vous comprendrez plus bas le pourquoi !
**Les recommandations de création de cette sous-clé sont
ABSOLUMENT les mêmes que pour la création de la clé principale
!**
*Quoi ?* vous avez déjà oublié : RSA + 4096 bits - avec la différence
qu'on utilisera le choix 'RSA (sign only)', et pas besoin de
paramétrer une période de validité…
#### addkey : Clients Graphiques
**Enigmail** semble ne pas en être capable !
**GPA** semble ne pas être capable de générer de clés dont la
taille soit de 4096 bits, sinon, c'est menu "Clefs" >
"Nouvelle clé" ; choisir l'algorithme 'RSA (sign only)',
remplir les champs 'Nom', 'Courriel' - sur ce dernier,
remplir l'adresse mail correspondante, et ne pas cochez la case
'Expirer' puis validez !
#### addkey: Mode Console
C'est toujours l'option `--edit-key` qui sera utilisée mais cette
fois-ci avec l'option `addkey`, telles que :
{{< code "sec-gpg-edit-key-addkey" sh >}}
### Création du certificat de révocation
La création du certificat de révocation est une étape à faire ABSOLUMENT
!
**En effet, celui-ci vous sera nécessaire pour révoquer votre clé
GPG, ou la sous-clé de signature, si jamais vous avez perdu
celle-ci, et/ou qu'elle soit volée, et/ou qu'elle soit
compromise !**
**Il vous importe de placer ce certificat de révocation dans un
endroit sûr !**
#### revoke : Clients graphiques
**Enigmail** : Clic droit sur la clé, menu contextuel "Créer et
enregistrer un certificat de révocation".
* *2ème possibilité* : clic droit sur la clé, menu contextuel
"Propriétés de la clé", puis dans la fenêtre "Propriété", cliquez
sur le bouton [ Sélectionnez l'action …], puis "Créer et
enregistrer un certificat de révocation".
**GPA** semble ne pas en être capable !
#### revoke : mode console
C'est assez simple, pour une fois :
`$ gpg --output email@domain.tld.rev.asc --gen-revoke email@domain.tld`
### Exportez vos clés
L'export de vos clés fait partie du processus nécessaire. **Bien
entendu, il vous incombe de mettre en lieu sûr ces fichiers,
IMPÉRATIVEMENT la clé privée qui en résulte !**
#### export : Clients graphiques
**Enigmail** : clic droit sur la clé, menu contextuel "Exporter
les clés vers un fichier"
**GPA** : Menu 'Clefs' > 'Exporter des clefs'
*2ème possibilité* : clic droit sur la clé en question, puis dans le
menu contextuel, choisir 'Exporter des clefs'…
#### export : mode console :
`$ gpg --export-secret-keys --armor email@domain.tld > email@domain.tld.private_key.asc`
`$ gpg --export --armor email@domain.tld > email@domain.tld.public_key.asc`
### Transformons les clés
Transformez les clés que nous avons créées, dites clés primaires en clés
portables ou mode "protégé", est un autre processus IMPORTANT !
Ce processus est un peu long, non-prévu dans le fonctionnement interne
de GPG, *peut faire peur - et donner des suées*,…
Il a pour propos d'extraire les sous-clés, de les détruire du porte-clé, de les
importer correctement !
{{< note warning >}}
**ATTENTION** : Une fois, en mode "protégé", les clés ne sont plus éditables, ni modifiables… vous aurez le droit au final à l'erreur "{{< inside2 l="sec:gpg:gpg-erreurs" t="gpg: des parties de la clef secrète ne sont pas disponibles" a="gpg-des-parties-de-la-clef-secrète-ne-sont-pas-disponibles" >}}", et rien de ce que vous aurez pu faire, demandé, exécuté dans la modification de la clé ne sera acté, validé !
De même, vous ne pourrez pas signer une autre clé avec !
{{< /note >}}
#### transformation : Clients Graphiques
Ne cherchez pas ; ce processus n'est pas du tout géré !
#### transformation : Mode Console
Tout d'abord un aperçu de la clé, pour comparaison :
*celui-ci n'est absolument pas nécessaire - juste pour aider à remarquer la légére différence, avant ce processus et après !*
{{< code "sec-gpg-list-secret-keys" sh >}}
Maintenant, le processus de transformation - que vous devez exécutez :
{{< code "sec-gpg-guide-bonnes-pratiques-transformation" sh >}}
Comparons :
{{< code "sec-gpg-list-secret-keys-sec" sh >}}
En fait la différence visible/visuelle est très légère : sur la ligne
commençant par le mot `sec`, celui-ci est suivi du symbole `#`…
La présence du symbole dièze signifie que la sous-clé de
signature ne fait pas partie du trousseau de clé !
**{{< color red >}}Si le symbole dièze n'est pas présent, c'est qu'il y a eu un
problème dans la phase de ce processus… refaites-le !{{}}**
----
Voilà, vous avez suivi toutes ces étapes - c'est très bien. Elles vous
garantissent d'avoir fait correctement les choses ;-)
## Partagez votre clé publique !
Allez n'hésitez pas à partagez, publiez votre clé publique - informez
de l'empreinte relative à votre clé publique - privilégiez le contact
réel, physique lors de cet échange…
### En mode graphique :
**Enigmail** : Menu "Serveur de clefs" > "Envoyer les clés
publiques".
*2ème possibilité* : clic droit sur la clé, menu contextuel "Envoyer
les clés publiques vers un serveur de clefs"
**GPA** : Menu 'Serveur' > 'Envoyer des clefs'.
*2ème possibilité* : clic droit sur la clé, puis dans le menu
contextuel, choisissez 'Envoyer des clefs' ; confirmez votre choix, si
cela vous est demandé en cliquant sur le bouton [Oui].
### En mode console :
Utilisez donc l'option `--send-keys "fingerprint`, tel que :
`$ gpg --send-keys "fingerprint"`
{{< note tip >}}Si vous avez paramétré correctement votre
fichier personnel `~/.gnupg/gpg.conf` comme je vous l'ai démontré dans
mon {{< inside "sec:gpg:gpg-usage-securise" >}},
alors vous n'aurez même pas besoin de spécifier le serveur, et en plus,
cela se fera de manière sécurisée !
{{}}
## De bonnes lectures
Je renvoie très fortement vers les bonnes lectures en question :
* le [Mini-Guide Howto](https://www.gnupg.org/howtos/fr/GPGMiniHowto.html)- par GnuPG…
* le [Guide Autodéfense Courriel](https://emailselfdefense.fsf.org/fr/index.html)- par la FSF…
* le guide autodéfense numérique - tome 2 : [Comment créer et maintenir une clé GPG](https://guide.boum.org/tomes/2_en_ligne/3_outils/07_utiliser_openpgp/04_creer_et_maintenir_une_paire_de_cles/)-
* ou, les [bonnes pratiques pour l'utilisation d'OpenPGP](https://help.riseup.net/fr/security/message-security/openpgp/best-practices)…
----
## Du bon outil GPG
### Mon script shell POSIX
Vous retrouverez mon [script de gestion de clé GPG](https://framagit.org/hucste/tools/blob/master/mng_gpg)
sur mon espace git
*Du moins, j'espère bien qu'il soit POSIX*
* Pour afficher l'aide : `./mng_gpg help`
* Pour génèrer une clé : `./mng_gpg create`
Pour information, cet outil a aussi besoin de l'outil `shred`…
----