--- 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 ! ----