GPG : Du bon usage sécurisé

Article publié, le et modifié le
5 minute(s) de lecture

Cet article contient 1045 mots.
Source brute de l'article : MD

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 :

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

Attention

Certificat SKS

Danger

Configuration

Danger

La configuration sous Unix/Linux se fait dans votre dossier personnel : ~/.gnupg/gpg.conf

Ajouter ces options :

Code : 

keyid-format 0xlong
with-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 : 

cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
personal-digest-preferences SHA512
  • 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 : 

keyserver-options include-revoked
keyserver-options no-try-dns-srv

list-options show-uid-validity
verify-options show-uid-validity

use-agent

auto-key-locate local
auto-key-locate keyserver

fixed-list-mode

utf8-strings

Je vous renvoie à la documentation du manpage pour que vous compreniez la raison de chacune.

Les Recommandations

Autrement-dit, les IMPÉRATIFS à ABSOLUMENT tenir compte sont :

  • NE PLUS utiliser toutes les options `keyserver` dans le fichier de configuration principal
  • NE PLUS utiliser l'option `--refresh-keys` de gpg, sauf si vous n’avez pas l’outil parcimonie.
  • NE PAS avoir confiance dans l'identifiant d’une clé GPG, qu’il soit de format court ou long - le format court est faillible ; le format long pose son lot de problèmes !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.
  • NE PAS utiliser l'algorithme DSA , préférez RSA !
  • NE PAS utiliser de longueur de clé inférieure à 4096 bits - de toute façon, dans l’immédiat, il n’est pas supporté de plus fort !
  • NE PAS utiliser MD5, SHA1 ; 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 date d'expiration maximale à 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 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 !

Attention

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

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 !