Pour éditer le wiki, il faut demander un compte à un Lapin !
GPG
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.
Contents
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
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 [1]
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"
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
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 [2]
. 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électionnezGestion de clés
. Une fenêtre apparaît ! - Dans le menu
Générer
sélectionnezGé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é
, menuAffichage
cliquez surSélectionner l'action
, puisGérer les identifiants utilisateur
. Cliquez ensuite surAjouter
, entrez votre nom et adresse, puis confirmez. Sélectionnez ensuite l'identité que vous voulez être l'identité principale de la clé, puis cliquez surSet 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électionnezGestion 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électionnezSigner 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électionnezGestion 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-2024.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-2024.txt
GPG vous demande vos deux phrases de passe, ensuite de quoi il génère un fichier openpgp-transition-2024.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
- ↑ https://we.riseup.net/alster/openpgp-dsa1-key-rollover
- ↑ https://we.riseup.net/riseuplabs+paow/openpgp-best-practices
- ↑ 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.