Description
Suite à mes précédentes réflexions à-propos du 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…
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 : 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 : sh
$ gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? **1**
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) **4096**
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) **2y**
Is this correct? (y/N) **y**
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and E-mail Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: **Nom Prenom**
E-mail address: **email@domain.tld**
Comment:
You selected this USER-ID:
"Nom Prenom <email@domain.tld>"
Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? **O**
You need a Passphrase to protect your secret key.
**demande votre passphrase**
gpg: key ******** marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 4096R/******* 2013-03-13
Key fingerprint = **** **** **** **** **** **** **** **** **** ****
uid Nom Prenom <email@domain.tld>
sub 4096R/******** 2013-03-13
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 : sh
$ gpg --edit-key email@domain.tld
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
Secret key is available.
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
[ultimate] (1). Nom Prenom <email@domain.tld>
gpg> addphoto
Pick an image to use for your photo ID. The image must be a JPEG file.
Remember that the image is stored within your public key. If you use a
very large picture, your key will become very large as well!
Keeping the image close to 240x288 is a good size to use.
Enter JPEG filename for photo ID: /repertoire_vers_photo/photo.jpg
Is this photo correct (y/N/q)? y
You need a passphrase to unlock the secret key for
user: "Nom Prenom <email@domain.tld>"
4096-bit RSA key, ID ********, created 2013-03-13
**demande votre passphrase**
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
[ultimate] (1). Nom Prenom <email@domain.tld>
[ unknown] (2) [jpeg image of size 5324]
gpg> save
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 : sh
$ gpg --edit-key email@domain.tld
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
Secret key is available.
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
[ultimate] (1). Nom Prenom <email@domain.tld>
[ultimate] (2) [jpeg image of size 5324]
gpg> setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
Set preference list to:
Cypher: AES256, AES192, AES, CAST5, 3DES
Digest: SHA512, SHA384, SHA256, SHA224, SHA1
Compression: ZLIB, BZIP2, ZIP, Uncompressed
Features: MDC, Keyserver no-modify
Really update the preferences? (y/N) y
You need a passphrase to unlock the secret key for
user: "Nom Prenom <email@domain.tld>"
4096-bit RSA key, ID ********, created 2013-03-13
**demande votre passphrase**
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
[ultimate] (1). Nom Prenom <email@domain.tld>
[ unknown] (2) [jpeg image of size 5324]
gpg> save
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 : sh
$ gpg --edit-key email@domain.tld
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
Secret key is available.
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
[ultimate] (1). Nom Prenom <email@domain.tld>
[ultimate] (2) [jpeg image of size 5324]
gpg> addkey
Key is protected.
You need a passphrase to unlock the secret key for
user: "Nom Prenom <email@domain.tld>"
4096-bit RSA key, ID ********, created 2013-03-13
**demande votre passphrase**
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
Really create? (y/N) y
pub 4096R/******** created: 2013-03-13 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/******** created: 2013-03-13 expires: never usage: E
sub 4096R/******** created: 2013-03-13 expires: never
[ultimate] (1). Nom Prenom <email@domain.tld>
[ unknown] (2) [jpeg image of size 5324]
gpg> save
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 !
ATTENTION : Une fois, en mode “protégé”, les clés ne sont plus éditables, ni modifiables… vous aurez le droit au final à l’erreur “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 !
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 : sh
$ gpg --list-secret-keys
/home/$USER/.gnupg/secring.gpg
-----------------------------
sec 4096R/******** 2013-03-13
uid Nom Prenom <email@domain.tld>
ssb 4096R/******** 2013-03-13
ssb 4096R/******** 2013-03-13
Maintenant, le processus de transformation - que vous devez exécutez :
Code : sh
$ gpg --export-secret-subkeys email@domain.tld > ~/.gnupg/email@domain.tld.subkeys
$ gpg --delete-secret-keys email@domain.tld
$ gpg --import ~/.gnupg/email@domain.tld.subkeys
$ shred --remove ~/.gnupg/email@domain.tld.subkeys
Comparons :
Code : sh
$ gpg --list-secret-keys
/home/$USER/.gnupg/secring.gpg
-----------------------------
sec# 4096R/******** 2013-03-13
uid Nom Prenom <email@domain.tld>
ssb 4096R/******** 2013-03-13
ssb 4096R/******** 2013-03-13
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é !
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"
Si vous avez paramétré correctement votre
fichier personnel ~/.gnupg/gpg.conf
comme je vous l’ai démontré dans
mon
GPG : Du bon usage sécurisé
, 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- par GnuPG…
- le Guide Autodéfense Courriel- par la FSF…
- le guide autodéfense numérique - tome 2 : Comment créer et maintenir une clé GPG-
- ou, les bonnes pratiques pour l’utilisation d’OpenPGP…
Du bon outil GPG
Mon script shell POSIX
Vous retrouverez mon script de gestion de clé 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
…