Pour éditer le wiki, il faut demander un compte à un Lapin !

GPG

From Le L∞p's Wiki
Jump to: navigation, search
Warning construction blue.png Cette page est un brouillon en cours de rédaction.

Cette page se propose de regrouper quelques informations pratiques pour GnuPG, fortement axée sur le chiffrement des mails bien qu'on puisse utiliser GPG pour signer et/ou chiffrer tout type de document. Pour une vue d'ensemble, suivez le lapin blanc en partant de la page GnuPG sur Wikipedia.

Il n'est pas question de répliquer la tonne de tutoriels et d'informations qu'on peut trouver sur le net, le but à l'origine est de traduire en français le processus de renouvellement d'une clé considérée comme faible[1]. L'ajout de quelques bonnes pratiques[2] n'est qu'un accident.

GnuPG logo.png

Prérequis

  • Être sous Linux. Pour Windows, utilisez GPG4Win ; pour MacOS, GPGMail dans Mail.app. Si vous avez besoin d'aide sous votre OS payant et privateur, je vous invite à contacter le support consommateur, question de cohérence.
  • GnuPG dans une version récente (supérieure à 1.4.10, voir gpg --version)
  • Thunderbird 3.x et Enigmail 1.0.x, ou versions supérieures.

Configuration

Avant toute chose, modifiez votre configuration.

Le SHA1 et le MD5 sont des faibles. On leur préfère le SHA256, voire SHA512. Ajoutez ça en bas de votre configuration GPG dans ~/.gnupg/gpg.conf :

 personal-digest-preferences SHA256
 cert-digest-algo SHA256
 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

Pour ma part, j'utilise SHA512, soyons fous.

Autres options intéressantes

If you want to be extra safe, check that there's a big block of jumbled characters at the bottom.

SSL

Une couche de SSL ne fait pas de mal, pour éviter qu'on puisse dresser la liste de vos contacts en sniffant vos échanges de clés avec les serveurs de clés.

Pour ma part, j'ai pas encore creusé ça, j'ai pas d'amis.

Tor

Si le paquet tor est installé sur votre machine, configurez GnuPG de sorte que toute connexion initiée par celui-ci soit routée vers le proxy :

 keyserver-options no-try-dns-srv,http-proxy="socks://127.0.0.1:9050"
Icone information.png Note : Pour les utilisateurs/rices de Parcimonie, n'oubliez pas de spécifier l'option --gnupg-already-torified dans la commande d'exécution du démon afin qu'il puisse ensuite se fier à l'option précédemment ajoutée et ne tente pas de torifier les connexions lui-même.

ID long

Par défaut une clé est représentée par un ID court :

 AA11BB22CC33

Mais il est possible de fabriquer une clé dont l'ID court est le même. On devrait donc utiliser un ID long :

 keyid-format long
 (ou)
 keyid-format 0xlong

Ainsi, GPG présentera les IDs sous leur forme longue :

 AA11BB22CC33DD44
 (ou)
 0xAA11BB22CC33DD44

env

Au lieu de taper manuellement l'ID de ma clé, je préfère définir une variable d'environnement dans ~/.bashrc :

 export GPGKEY=0xAA11BB22CC33DD44

Créer une clé GPG

En ligne de commande

Vous pouvez suivre ce tutoriel très accessible, auquel j'ajouterai quelques nuances :

  • DSA est très sensible à la qualité de l'aléa généré. A moins de savoir ce que vous faites et de connaître précisément votre système, utilisez RSA (RSA et RSA pour signer et chiffrer)
  • Choisissez une longueur de clé la plus forte possible (4096 bits). 1024 c'est trop peu, 2048 c'est bien aujourd'hui mais dans dix ans...
  • Expiration : je préfère l'idée d'une clé qui expire. Si vous en perdez le contrôle et que vous ne pouvez pas la révoquer, c'est une sécurité supplémentaire. De plus, le fait de renouveler votre clé régulièrement montre aux autres que vous l'utilisez toujours et que vous en avez toujours le contrôle.

Avec Enigmail

Icone loupe.png Voir : Reportez-vous à la section Génération d'une nouvelle paire de clé avec Enigmail.

Utilisation avec Thunderbird et Enigmail

Un tutoriel très accessible est disponible sur http://cyphercat.eu/tuto_enigmail.php.

Cependant, histoire de conserver une bonne entente entre la version de Thunderbird et celle d'Enigmail (et aussi pour se faciliter la vie), installez Enigmail de préférence à l'aide de votre gestionnaire de paquets. Sous Debian par exemple, on utilisera le paquet enigmail. Quelle audace.

Vérifier sa clé

Même si votre clé n'est pas compromise ou perdue, il y a plein de raisons de devoir renouveler sa clé.

OpenPGPv4

La commande suivante permet de vérifier que vous utilisez bien une clé respectant le format v4 :

 gpg --export-options export-minimal --export $GPGKEY | gpg --list-packets | grep version

Si vous voyez de la v3, renouvelez votre clé.

DSA-1

Les clés en DSA 1024 bits ont été une référence il fut un temps, mais aujourd'hui on considère ces clés comme faibles.

 gpg --list-secret-keys | grep 'sec.*1024D'

Si vous voyez quelque chose, vous devez renouveler votre clé. À noter que 1024D n'est pas le seul point significatif, mais le reste des vérifications devrait (in)valider tous les cas de figure.

La commande suivante devrait lister les clés à renouveler, y compris les clés révoquées ou expirées :

 gpg --list-secret-keys --with-colons | awk -F : '{ if ( $1=="sec" && $3=="1024" && $4=="17" ) print $5 }'

Algorithme de clé

Les clés devraient utilise DSA-2 ou, mieux encore, RSA :

 gpg --export-options export-minimal --export $GPGKEY | gpg --list-packets | grep -A2 '^:public key packet:$'| grep algo

Si vous voyez algo 1 vous utilisez RSA,

Si vous voyez algo 17 alors vous utilisez DSA et il faut vérifier que la longueur de clé est supérieure à 1024, dans le cas contraire vous n'utilisez pas DSA-2 et vous devez renouveler votre clé.

algo 19 correspond à EDCSA, algo 18 à ECC ; pour ces deux algorithmes la vérification de la longueur de clé qui suit n'est pas appropriée. Ce qui n'en fait pas un critère moins pertinent, mais si vous vous trimbalez un de ces algos, on peut considérer que vous savez ce que vous faites.

Longueur de clé

Les clés devraient faire 2048 bits ou plus (le plus c'est le mieux) :

 gpg --export-options export-minimal --export $GPGKEY | gpg --list-packets | grep -A2 'public key'| grep 'pkey\[0\]:'

Auto-signatures avec MD5 ou SHA1

 gpg --export-options export-minimal --export $GPGKEY | gpg --list-packets | grep -A 2 signature|grep 'digest algo 1,'

Si vous voyez un résultat algo 1 alors vous utilisez MD5, si c'est algo 2 vous utilisez SHA1 ; dans les deux cas vous devez renouveler votre clé.

Algorithmes

On devrait avoir la préférence pour tout algorithme de la famille SHA-2 avant MD5 et SHA1 :

 gpg --export-options export-minimal --export $GPGKEY | gpg --list-packets | grep 'pref-hash-algos'

Si vous voyez 3, 2 ou 1 avant 11, 10, 9 ou 8, alors vous préférez des algorithmes de crevette et vous devez renouveler votre clé.

Renouveler sa clé

Tout ça pour en arriver là, allez hop hop hop on s'y met.

Modification de la configuration

Appliquez les modifications listées en début de page, au minimum ceci dans ~/.gnupg/gpg.conf :

 personal-digest-preferences SHA256
 cert-digest-algo SHA256
 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

Génération d'une nouvelle clé

Avec Enigmail

  • Dans le menu OpenGPG, sélectionnez Gestion de clés. Une fenêtre apparaît !
  • Dans le menu Générer sélectionnez Générer une nouvelle paire de clés. Une nouvelle fenêtre apparaît !
  • Sélectionnez l'identité Thunderbird pour lequel vous voulez générer une nouvelle clé pour la renouveler.
  • Cochez la case Utiliser la clé générée.
  • Décochez la case Pas de phrase secrète. Entrez une phrase de passe forte (genre majuscules/minuscules/ponctuation, de 16 caractères minimum, la routine quoi).
  • Ajoutez un commentaire si vous le voulez, mais faites court. La plupart du temps, ce n'est pas nécessaire - ni adéquat[3].
  • Sélectionnez une expiration (Expiration de la clé) de 2 ans ou moins.
  • Cliquez sur l'onglet Avancé et choisissez une longueur de clé d'au moins 2048 bits. 4096 c'est top, à défaut de pouvoir faire plus grand. Dans cette même fenêtre, sélectionnez le type de clé RSA.
  • Cliquez le bouton Générer la clé et vérifiez que les informations sont bien celles attendues.
  • Attendez la fin de la génération de la clé. Vous pouvez accélérer le processus en faisant turbiner la machine : lancez deux DivX, téléchargez Internet, jouez du piano dans un éditeur de texte, bref, faites du bruit powpowpow.
  • Lorsque ça vous est demandé, générez un certificat de révocation, et sauvegardez-le en sécurité maintenant (faites-le, vraiment). Une fois que le certificat de révocation est enregistré, la fenêtre se ferme et vous voilà de retour sur la fenêtre Gestion de clés. Vous pouvez chercher l'identité Thunderbird concernée et inspecter votre nouvelle clé en double-cliquant dessus.
  • Notez l'Empreinte.
  • Si vous voulez ajouter d'autres identités Thunderbird à cette clé, dans la fenêtre Propriétés de la clé, menu Affichage cliquez sur Sélectionner l'action, puis Gérer les identifiants utilisateur. Cliquez ensuite sur Ajouter, entrez votre nom et adresse, puis confirmez. Sélectionnez ensuite l'identité que vous voulez être l'identité principale de la clé, puis cliquez sur Set Primary.
  • Vous pouvez fermer la fenêtre, ouf !


En ligne de commande

  • Tapez la commande gpg --gen-key.
  • Sélectionnez une clé de type RSA and RSA.
  • Sélectionnez une longueur de clé d'au moins 2048 bits. 4096 c'est top, à défaut de pouvoir faire plus grand.
  • Sélectionnez une expiration (Key Expiry) de 2 ans ou moins.
  • Entrez votre nom, tel que les gens le verront.
  • Entrez l'adresse mail à lier avec la clé que vous êtes en train de générer.
  • Ajoutez un commentaire si vous le voulez, mais faites court. La plupart du temps, ce n'est pas nécessaire - ni adéquat[3]
  • À ce stade vous pouvez corriger les données entrées si besoin ; une fois que tout est correct, confirmez.
  • Entrez une phrase de passe forte (genre majuscules/minuscules/ponctuation, de 16 caractères minimum, la routine quoi).
  • Attendez la fin de la génération de la clé. Vous pouvez accélérer le processus en faisant turbiner la machine : lancez deux DivX, téléchargez Internet, jouez du piano dans un éditeur de texte, bref, faites du bruit powpowpow.
  • Notez l'ID de la clé que vous venez de générer.
  • Générez un certificat de révocation (remplacez <Key ID> par l'ID que vous venez de noter, bien sûr):
 gpg --output "<Key ID>_rev.asc" --gen-revoke <Key ID>
  • Confirmez que vous voulez générer un certificat de révocation. La raison 1 (clé compromise) fera l'affaire.
  • Le certificat de révocation a été créé avec un nom finissant par _rev.asc. Suivez les instructions et et sauvegardez-le en sécurité maintenant (faites-le, vraiment).
  • Si vous voulez ajouter d'autres adresses à cette clé, tapez la commande suivante et suivez les instructions :
 gpg --edit-key <Key ID> adduid

Signer la nouvelle clé avec l'ancienne clé

Il faut montrer aux gens que cette nouvelle clé est digne de confiance, sinon pour eux c'est une clé comme une autre. Certes elle a bien la bonne adresse mail, et vous le leur direz par mail ou autre moyen ; mais rien ne prouve qu'il ne s'agit pas d'un imposteur. En signant la nouvelle clé au moyen de l'ancienne, vous donnez une indication supplémentaire de la validité de la nouvelle clé.

Avec Enigmail :

  • Dans le menu OpenGPG, sélectionnez Gestion de clés. Une fenêtre apparaît !
  • Cherchez votre nouvelle clé (en entrant son ID dans le champ Chercher :), faites un clic droit dessus et sélectionnez Signer la clé. Une nouvelle fenêtre apparaît.
  • Vérifiez qu'il s'agit bien de la nouvelle clé, à l'aide de l'empreinte que vous avez noté plus haut.
  • Dans Key for signing, sélectionnez votre ancienne clé. Vérifiez que vous sélectionnez bien ici l'ancienne clé ! (ça va vous suivez toujours ?)
  • On vous demande à quel point vous faites confiance à la clé que vous voulez signer (la nouvelle), sélectionnez I have done very careful checking, car bien sûr vous avez bien vérifié, à l'aide de l'empreinte, qu'il s'agit bien de la bonne clé.
  • Ne cochez PAS la case Local Signature, sinon personne ne verra la signature, ce qui serait ballot, admettez.
  • Cliquez sur OK et entrez la phrase de passe de l'ancienne clé.
  • De retour dans la première fenêtre, vous pouvez vérifier que la signature a bien été effectuée en cliquant droit dessus puis en sélectionnant Voir les signatures.

En ligne de commande :

 gpg -u <ID de l'ancienne clé> --edit-key <ID de la nouvelle clé> tsign
  • Vérifiez bien que vous vous apprêtez à signer la nouvelle clé au moyen de l'ancienne clé, en vérifiant les IDs et les empreintes.
  • On vous demande à quel point vous faites confiance à la clé que vous voulez signer (la nouvelle), sélectionnez Full Trust, car bien sûr vous avez bien vérifié, à l'aide de l'empreinte, qu'il s'agit bien de la bonne clé.
  • Confirmez et entrez votre phrase de passe (celle de l'ancienne clé, suivez un peu quoi enfin).

Publier la nouvelle clé

Pour que les gens puissent accéder à votre nouvelle clé, vous pouvez la publier sur un serveur de clés. Elle devient donc publiquement accessible...

Avec Enigmail :

  • Dans le menu OpenGPG, sélectionnez Gestion de clés. Une fenêtre apparaît ! (ça devient lassant à force)
  • Cherchez votre nouvelle clé, vérifiez qu'il s'agit bien de la nouvelle clé.
  • Cliquez droit dessus, puis sélectionnez Envoyer les clés vers un serveur de clés. Choississez votre serveur de clé préféré, ou laissez Enigmail utiliser le serveur par défaut.

En ligne de commande :

 gpg --send-key <Key ID>
 (ou)
 gpg --keyserver <URL d'un serveur en particulier> --send-key <Key ID>

Publier la bonne nouvelle

Il est temps de prévenir le reste du monde que vous avez maintenant une belle clé toute neuve, toute sécurisée. Et il faut le faire de manière à ce que cette information soit digne de confiance, en montrant que c'est bien vous qui faites cette annonce et que vous possédez bien cette nouvelle clé.

Préparez un fichier texte dans lequel vous expliquez la situation. Vous pouvez vous aider d'un exemple (que j'ai la flemme de traduire pour l'instant), en vous assurant bien entendu de placer les ID et empreintes de l'ancienne et de la nouvelle clé la ou ça va bien. Enregistrez votre annonce avec un nom explicite, par exemple opengpg-transition-2020.txt.

Signez ce fichier à l'aide de votre ancienne clé ET de la nouvelle :

 gpg -u <ID de l'ancienne clé> -u <ID de la nouvelle clé> --armor --clearsign openpgp-transition-2020.txt

GPG vous demande vos deux phrases de passe, ensuite de quoi il génère un fichier openpgp-transition-2020.txt.asc qui est votre annonce signée. Vous pouvez bazarder la version non signée, dont vous n'aurez plus besoin.

Placez cette annonce là où les gens pourront la trouver ; sur votre site web par exemple. Si vous n'avez pas de site web (et pas d'ami pour vous prêter le sien), vous pouvez aussi bien utiliser Pastebin.com, assurez-vous juste de communiquer la version Raw de votre paste, qui du coup ressemblera à quelque chose comme http://pastebin.com/raw.php?i=d34db00b.

Révoquer l'ancienne clé

Il faut maintenant révoquer l'ancienne clé. Le but est d'éviter que les gens continuent de l'utiliser pour chiffrer des mails à votre attention, et qu'ils se rendent compte que cette ancienne clé n'est plus digne de confiance. Vous serez cependant toujours capable de lire les mails (et documents) qui ont été chiffrés avec votre ancienne clé, vu que la révoquer ne la supprime pas.

Avec Enigmail :

  • Rouvrez la fenêtre de gestion des clés. Vous savez comment faire, n'est-ce pas ?
  • Cherchez votre ancienne clé, celle que vous ne voulez plus utiliser.
  • Faites un clic droit dessus et sélectionnez Revoke, vérifiez qu'il s'agit bien de la bonne clé, puis entrez votre phrase de passe.
  • Pour terminer le processus, publiez cette clé comme vous l'avez déjà fait plus haut, pour qu'elle soit mise à jour sur les serveurs de clés.

En ligne de commande :

  • Générez un certificat de révocation pour votre ancienne clé :
 gpg --output "<ID de l'ancienne clé>_rev.asc" --gen-revoke <ID de l'ancienne clé>
  • Confirmez que vous voulez générer un certificat de révocation, et sélectionnez la seconde option 2 = Key is superseded.
  • Pour le commentaire en option, vous pouvez entrer quelque chose comme Remplacée par la clé <ID de la nouvelle clé>.
  • Confirmez puis entrez votre phrase de passe.
  • Le certificat de révocation a été écrit dans un fichier <ID de l'ancienne clé>_rev.asc, que vous importerez ensuite :
 gpg --import "<ID de l'ancienne clé>_rev.asc"
  • Félicitations, votre clé est révoquée. Vous pouvez la publier sur les serveurs de clés, tout comme vous l'avez déjà fait plus haut.

Spammer sans vergogne

  • Prévenez les correspondant avec lesquels vous avez eu des échanges chiffrés et ceux qui ont signé votre clé par le passé, en leur indiquant l'URL de votre annonce (ou en l'incluant en pièce jointe).
  • Vous pouvez faire figurer cette URL dans la signature de vos mails, ou acheter un encart pleine page dans Le Monde De La Finance, bref, faites du bruit powpowpow.
  • Trimbalez-vous avec l'ID et l'empreinte de votre nouvelle clé pour la distribuer à tous ceux que vous voulez voir signer votre nouvelle clé.

Références

  1. https://we.riseup.net/alster/openpgp-dsa1-key-rollover
  2. https://we.riseup.net/riseuplabs+paow/openpgp-best-practices
  3. 3.0 3.1 (en) OpenPGP User ID Comments considered harmful, ou pourquoi ne pas mettre de commentaire dans sa clé GPG.

Voir aussi

  • Parcimonie, un démon de mise à jour de trousseau GPG.