---
title: "GPG : Du bon usage sécurisé"
date: 2017-07-23T23:15:46+01:00
description: "Apprendre à utiliser de manière sécurisée GPG !"
draft: false
lastmod: 2020-01-08T19:23:46+01:00
tags: ["GPG"]
---
## Description
Ou, comment titrer autrement que : **De meilleures pratiques GPG/PGP** !
Je ne parlerais pas de comment créer une clé GPG pour communiquer de
manière chiffrée ; il existe de très bons guides/tutoriels qui le
font très bien, et vraiment mieux que ce que je ne pourrais le faire :
* Le guide de l'**[Autodéfense courriel](https://emailselfdefense.fsf.org/fr/index.html)** - par la FSF…
* Le tutoriel "**[Signature numérique et chiffrement des messages](https://support.mozilla.org/fr/kb/signature-numerique-et-chiffrement-des-messages)** - Assistance de Thunderbird" - par Mozilla.
* Le guide des **[bonnes pratiques pour l'utilisation d'OpenPGP](https://help.riseup.net/fr/security/message-security/openpgp/best-practices)** - par RiseUp
## Installation
Pour pouvoir utiliser correctement gpg, il faut installer non seulement
cet outil, mais vous avez besoin d'autres outils, tels que :
`gnupg gnupg-curl hopenpgp-tools parcimonie openssl`
{{< note warning >}} Certains de ces outils ne sont disponibles que sous Linux…
tels `hopenpgp-tools`, `parcimonie`.
Vous ne les trouverez pas nativement sous OpenBSD, ni en package, ni en ports !
Du fait d'installer l'outil `parcimonie`, il est **IMPÉRATIF** de ne plus utiliser l'option
`--refresh-keys` de GPG…
**parcimonie** le fera de la manière convenable et surtout sécurisé !
{{< /note >}}
### Certificat SKS
{{< note danger >}}Il n'est plus recommandé d'utiliser le certificat des serveurs SKS ;
mais de se fier qu'au seul serveur vraiment sécurisé du projet openpgp,
à savoir : `keys.openpgp.org`.
{{}}
## Configuration
{{< note danger >}}Hormis le fait d'avoir IMPÉRATIVEMENT son outil GPG/PGP à jour,
afin d'éviter les failles de sécurité, il est recommandé de ne plus utiliser dans aucun fichier toutes les options `keyserver-*`.
La seule option `keyserver` à utiliser, doit l'être dans le fichier `~/.gnupg/dirmngr.conf`,
tel que :
`keyserver hkps://keys.openpgp.org`
{{< /note >}}
La configuration sous Unix/Linux se fait dans votre dossier personnel : `~/.gnupg/gpg.conf`
Ajouter ces options :
{{< code "sec-gpg-usage-securise-keyid-fingerprint" >}}
* La première impose l'usage du format long - *sur 64 bits* - de l'identifiant de la clé GPG
* la deuxième demande à afficher l'empreinte, lors de la sortie…
Pour améliorer la qualité des clés GPG, il nous faut rajouter les options suivantes :
{{< code "sec-gpg-usage-securise-options-preferences" >}}
* La première demande l'usage de l'algorithme SHA512
* la deuxième annonce la liste des algorithmes préférées, ; il sera utilisé du plus fort au plus faible, le premier trouvé étant utilisé !
* la dernière annonce la préférence personnelle.
Pour finir, voici d'autres options à utiliser, elles aussi, nécessaires :
{{< code "sec-gpg-usage-securise-others-options" >}}
Je vous renvoie à la documentation du
[manpage](http://www.delafond.org/traducmanfr/man/man1/gpg.1.html)
pour que vous compreniez la raison de chacune.
## Les Recommandations
Autrement-dit, les IMPÉRATIFS à ABSOLUMENT tenir compte sont :
* {{< color red >}}NE PLUS utiliser toutes les options `keyserver`{{< /color >}} dans le fichier de configuration principal
* {{< color red >}}NE PLUS utiliser l'option `--refresh-keys`{{< /color >}} de gpg, sauf si vous n'avez pas l'outil **parcimonie**.
* {{< color red >}}NE PAS avoir confiance dans l'identifiant{{< /color >}} d'une clé GPG, qu'il soit de format court ou long - *le format court est [faillible](http://www.asheesh.org/note/debian/short-key-ids-are-bad-news.html) ; le format long pose son lot de [problèmes](https://www.debian-administration.org/users/dkg/weblog/105) !* — **Utilisez l'empreinte de clé GPG**…
* **NE PAS avoir une confiance aveugle dans les clés fournies**, même celles sur un serveur SKS - efforcez-vous d'être en contact régulier avec votre contact, par téléphone, voire mieux physiquement, pour vous assurer de la validité de celles-ci !
Demandez l'empreinte de la clé GPG de votre interlocuteur… et signer la clé dans votre ordinateur.
* {{< color red >}}NE PAS utiliser l'algorithme DSA{{< /color >}}, préférez RSA !
* {{< color red >}}NE PAS utiliser de longueur de clé inférieure à 4096 bits{{< /color >}} - *de toute façon, dans l'immédiat, il n'est pas supporté de plus fort !*
* {{< color red >}}NE PAS utiliser MD5, SHA1{{< /color >}} ; utilisez un chiffrement fort tel que SHA256, voire mieux SHA512 - *et paramétrez votre configuration personnelle dans ce sens, ce que nous avons vu plus haut*.
* **Créer vos clés, avec une {{< color red >}}date d'expiration maximale{{< /color >}} à deux ans** - et, utilisez un calendrier pour vous le rappeler !
* **Éditer vos clés pour ajouter** :
* une sous-clé de signature,
* une photo,
* et paramétrer les préférences de hash…
* **Créer ABSOLUMENT un certificat de révocation**.
## Du bon usage de GPG : les empreintes
Donc, nous l'avons compris, il est nécessaire/préférable d'utiliser l'outil GPG avec les empreintes de clés.
Ce sont les mêmes commandes optionnelles à gpg, mais au lieu de renseigner l'email, l'identifiant de clé, on utilisera l'empreinte d'une clé …
* Pour télécharger l'empreinte d'une clé depuis le serveur : `gpg --recv-key 'fingerprint'` - *simple ou double quotes, c'est pareil*
* Pour vérifier l'empreinte d'une clé GPG : `gpg --fingerprint 'fingerprint'`
* Pour signer une empreinte de clé GPG : `gpg --sign-key 'fingerprint'`
* Pour signer localement une empreinte de clé GPG : `gpg --lsign-key 'fingerprint'` - **ATTENTION : si vous signez localement, vous ne pourrez plus exporter votre signature !**
* Pour gérer un fichier : `gpg --with-fingerprint keyfile`
* Pour créer un certificat de révocation à partir de l'empreinte : `gpg --output email@domain.tld.rev.asc --gen-revoke 'fingerprint'`
* Etc.
## Du bon outil GPG
Ok, nous avons vu comment utiliser openssl, parcimonie, les outils gpg
pour nous assurer de faire les choses proprement, mais tu n'as pas
parlé du paquet `hopenpgp-tools` !
En effet ;-)
En fait, dans ce paquet-là, il est fourni au moins deux outils que sont
`hkt` et `hokey`… assemblés, ils permettent en mode console d'avoir
la pertinence qu'une clé GPG est bonne à partir de son empreinte - et
ils sont très facile à utiliser, tel que :
`hkt export-pubkeys 'fingerprint' | hokey lint`
Les tests corrects sont affichés en {{< color green >}}vert{{}}.
Tout problème avec la clé vérifiée est affiché en {{}}rouge{{}} !
Il faut alors IMPÉRATIVEMENT se méfier d'une telle clé, voire la régénérer si c'est la vôtre, après avoir
configuré votre fichier de configuration personnelle, avec les
recommandations ci-dessus !
{{< note warning >}}**hkt** n'est pas compatible avec GPG version >= 2.1, et générera des erreurs, rendant impossible le traitement !{{< /note >}}
### 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érer une clé, à partir de son empreinte : `./mng_gpg fingerprint 'gpg:fingerprint'`
*Pour information, cet outil a aussi besoin de l'outil `shred`…*
----
### Des logiciels graphiques
* [Enigmail](https://www.enigmail.net) - *plugin à Thunderbird, ou dédié* -
* [GPA](https://www.gnupg.org/related_software/gpa/index.html), …
* [Rainloop](http://www.rainloop.net),
* [Roundcube](https://roundcube.net), …
### Serveurs de clés consultables
* Le seul sécurisé est celui du projet OpenGPG : **keys.openpgp.org**
Et, vous avez bien compris, tout comme moi d'ailleurs… on fait une
recherche par … ~~mail, ID~~, empreinte !
----