Tutoriaux:Sécuriser vos courriels avec GPG

De Wiki du Parti Pirate 2019
Sauter à la navigation Sauter à la recherche

GPG : "Il permet à ses utilisateurs de transmettre des messages signés ou chiffrés. Cela permet ainsi de garantir l'authenticité dans le premier cas ou, dans le second cas, la confidentialité du message."

Dans un contexte international de violation des communications électroniques privées par des gouvernements abusifs, et tout aussi régulièrement par des adolescents, il est utile de connaitre l'outil de chiffrage GPG (pour GNU Privacy Guard, lui-même s'appuyant sur l'OpenPGP, un format de cryptographie. Voir la RFC 4880 - https://tools.ietf.org/html/rfc4880 ).

Il permet à l'aide d'une « clé de chiffrement publique » (utilisé par l'expéditeur, qui est celle du destinataire), et d'une « clé de déchiffrement privée » (utilisé par le destinataire, pour « déverrouiller » la clé publique), de sécuriser et de garantir la provenance des échanges de données, et plus particulièrement les emails, thème phare de ce guide.

Ce guide n'a pas pour objet de vous expliquer en quoi que ce soit le fonctionnement de l'OpenPGP, et encore moins de vous fournir de bonnes raisons de l'utiliser. Vous pouvez évidemment l'utiliser avec le guide de WikiBooks : https://fr.wikibooks.org/wiki/GPG

Enigmail, le plug-in Thunderbird

L'usage d'un client email au lieu d'une interface web comporte plusieurs avantages :
D'une part, vous limitez considérablement le risque de vous faire avoir par la technique du « phishing ». Celle-ci consiste en la création d'interfaces web factices, dans le but (honteux et assez évident) d'intercepter vos mots de passe.
De plus, vous ouvrez un programme conçu spécialement pour la tâche que vous désirez effectuer, ce qui vous évite d'être distrait.
Enfin, l'usage d'un client permet de faire ce pourquoi j'aborde ce chapitre : permettre l'usage du plug-in Enigmail pour Thunderbird, qui, avec GPG, permettra l'usage de l'OpenPGP.

Récupérer GPG

Pour une distribution GNU/Linux : GPG semble être inclus dans la majorité des systèmes GNU/Linux. Mais néanmoins, si vous démarrez «From Scratch» ou que pour une autre raison vous ne le possédez pas : vous pouvez assurément trouver le package à l'adresse http://www.gnupg.org/download/index.fr.html
Si vous êtes client chez Apple, vous pourrez trouver les GPGTools ici : https://www.gpgtools.org/ (Attention, c'est un .pkg, il vous faudra donc un mot de passe administrateur pour finaliser l'installation.)
Et pour les windowsiens, il existe GPG4Win, que vous pourrez trouver ici : http://www.gpg4win.org/download.html et nécessite aussi les droits admin pour s'installer.

Pour ce qui est de Mozilla Thunderbird, vous pouvez le récupérer à l'adresse https://www.mozilla.org/fr/thunderbird/
Le site vous propose directement la version concernant le système d'exploitation qui visite le site. Mais vous pouvez en changer facilement en cliquant sur « Autres langages et systèmes. »

Nous voici donc avec Thunderbird d'ouvert. Il vous propose de configurer un compte email, ou carrément d'en créer un (en partenariat avec l'hébergeur Gandi).

La configuration se fait plutôt rapidement, car Thunderbird a en mémoire une myriade de paramètres pré-configurés correspondant aux fournisseurs de compte email les plus utilisés. Si votre hébergeur n'est pas dans la liste, celui-ci propose normalement une aide à la configuration des client email, avec les ports et adresse protocolaires dont vous aurez besoin (c'est tout aussi simple).

Passons au plug-in Enigmail, maintenant. Disponible à l'adresse https://addons.mozilla.org/fr/thunderbird/addon/enigmail/

Selon votre OS, vous aurez le choix entre une interface graphique ou les lignes de commandes.

Configuration sous Windows

Voir ce tutoriel.

Configuration en ligne de commande

Pour ce qui des plate-formes UNIX (les distributions GNU/Linux ; GNU/Linux-libre ; GNU/HURD, l'OS X et les BSD), le standard reste la ligne de commande. Pourquoi ? Pour ces 4 raisons :

  • Les interfaces graphiques changent, varient, et on retrouve plusieurs clics pour effectuer la même tâche qu'une ou deux lignes de commandes.
  • La ligne de commande ne change pas d'une interface graphique à l'autre, d'un système à un autre (ceci est valable pour les programmes « externes » en ligne de commande, pas pour les commandes internes qui varient de Windows à UNIX).
  • Pensez au gain de place : un programme en ligne de commande est ridiculement petit comparé à son équivalent graphique (qui s'occupe en fait de fournir une interface pour la souris entre l'utilisateur et le programme). Vous pouvez faire la comparaison par vous-même pour vous en assurer.
  • Enfin, une grande majorité des tutoriels pour des distributions GNU/Linux, GNU/Hurd ou OSX s'appuient sur la ligne de commande, puisqu'elle ne nécessite pas de téléverser d'image en ligne, et qu'on peut se permettre de n'avoir que de l'encre noir pour imprimer les manuels.

Pour commencer : où le trouve -t-on ?

Vous le trouverez sous le nom de « Terminal » pour GNOME, Aqua (Mac OS X) et xfce ou « Konsole » pour KDE.

La création

La première commande consiste à générer une paire de clés.

[alice@laptop:~]$ gpg --gen-key
Sélectionnez le type de clef désiré :
   (1) RSA et RSA (par défaut)
   (2) DSA et Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
 Votre choix ? 

Je prends personnellement l'option n°1, qui consiste en la création d'une paire de clés, deux RSA qui seront utilisées pour chiffrer les documents/emails et signer ces documents/emails pour en prouver la provenance

Votre choix ? 1

Par la suite, nous allons avoir le choix de la taille de la clé. Comme il se trouve que 4096 bits constitue une très bonne protection , c'est ce que nous allons prendre.

Veuillez indiquer le temps pendant lequel cette clef devrait être valable.

Ici, nous déterminerons la durée de la clé. MÊME SI C'EST LE CHOIX PAR DÉFAUT, PRENDRE UNE DURÉE ILLIMITÉ EST UN MAUVAIS CHOIX ! Lui accorder une durée de vie d'un ou deux an(s) est un bon choix, étant donné que votre clé privée peut être compromise à tout moment, et lui donner une date prédéfinie d'auto-destruction est pratique en de tels cas.

Et c'est à présent là que nous allons définir l'identité de la clé, et de son porteur

Nom réel: Alice
Adresse e-mail: alice@cryptopirate.org
Commentaire: <laissez ce champ vide[1]>
Vous avez sélectionné ce nom d'utilisateur:
   "Alice <alice@cryptopirate.org"
Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ?


Effectuez vos modifications là où elles sont nécessaires en entrant la lettre correspondant au champ.

Vous avez besoin d'une phrase de passe pour protéger votre clé secrète.
Entrez la phrase de passe: 

La phrase de passe ne s'affichera pas, car c'est une convention de sécurité chez les systèmes UNIX. On vous demandera de la retaper, puis, ce message s'affichera à l'écran :

Un grand nombre d'octets aléatoires doit être généré. Vous devriez faire
autre-chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers; cela donne au générateur de
nombres aléatoires une meilleure chance d'avoir assez d'entropie.

Ouvrez des fichiers, lancez des programmes, tapez du texte...

gpg: vérification de la base de confiance
gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),
     modèle de confiance PGP
gpg: profondeur : 0  valables :   4  signées :   0
     confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 4 u.
gpg: la prochaine vérification de la base de confiance aura lieu le 20xx-xx-xx
pub   4096R/11C0115D1400642B 20xx-xx-xx [expire : 20xx-xx-xx]
 Empreinte de la clef = 15B2 AEAC 1EE2 1C95 88AF  5393 11C0 115D 1400 642B
uid                          Alice <alice@cryptopirate.org>
sub   4096R/1E3ED4FB502FA153 20xx-xx-xx [expire : 2xx-xx-xx]

Et voilà, votre paire de clés est créée ! Les informations affichées ci-contre vous informent de vos précédents choix.
Je vous conseille de stocker ces informations, cela peut être utile.

Le certificat de révocation

Maintenant, il faut créer un certificat de révocation, parce que si une personne mal intentionnée tombe (plus ou moins par hasard) sur votre clé privée, ou votre mot de passe, il peut usurper votre identité pour signer et chiffrer en votre nom.

gpg --gen-revoke 11C0115D1400642B

sec  4096R/11C0115D1400642B 20xx-xx-xx Alice <alice@cryptopirate.org>

Générer un certificat de révocation pour cette clé ? (o/N) o
choisissez la cause de la révocation:                           
  0 = Aucune raison spécifiée
  1 = La clé a été compromise
  2 = La clé a été remplacée
  3 = La clé n'est plus utilisée
  Q = Annuler
(Vous devriez sûrement sélectionner 1 ici)
Votre décision ? 1
Entrez une description optionnelle ; terminez-là par une ligne vide:
> Mallory a peut-être eu accès à la clé
>                                          
Cause de révocation: La clé a été compromise
Mallory a peut-être eu accès à la clé
Est-ce d'accord ? (o/N) o
                         
Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « Alice <alice@cryptopirate.org> »
clé de 4096 bits RSA, ID 11C0115D1400642B, créée le 20xx-xx-xx

Entrez la phrase de passe: 

Sortie avec armure ASCII forcée.
Certificat de révocation créé.

Déplacez-le dans un support que vous pouvez cacher ; si Mallory a
accès à ce certificat il peut l'utiliser pour rendre votre clé
inutilisable.
Une bonne idée consiste à imprimer ce certificat puis à le stocker
ailleurs, au cas où le support devient illisible. Mais attention :
le système d'impression de votre machine pourrait stocker ces
données et les rendre accessibles à d'autres personnes !

Et un court certificat, devrait apparaitre ci-dessous. Il est conseillé de le garder dans une archive sécurisée parce que l'obtention du certificat de révocation par [Mallory https://fr.wikipedia.org/wiki/Alice_et_Bob#Adversaires] (le nom utilisé en cryptographie pour désigner l'attaquant/l'intercepteur de vos données, et plus généralement, celui qui essayera de contourner le chiffrage de vos communication) signifiera la fin de l'utilité de votre clé, à votre insu.

La révocation « en dur »

Il y a une autre façon de révoquer une clé. Si la méthode du certificat est prévue pour le long terme, révoquer une paire de clés en l'éditant directement se fait en général dans l'instant.

Pour ce faire, tapez :

$ gpg --edit-key <ID de votre paire de clés>

gpg> revkey alice
Voulez-vous vraiment révoquer toute la clef ? (o/N) o
choisissez la cause de la révocation :
  0 = Aucune raison indiquée
  1 = La clef a été compromise
  2 = La clef a été remplacée
  3 = La clef n'est plus utilisée
  Q = Annuler
Quelle est votre décision ? 1
Entrez une description facultative, en terminant par une ligne vide :
>  
Cause de révocation : La clef a été compromise
(Aucune description donnée)
Est-ce d'accord ? (o/N) O

Une phrase de passe est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « Alice <alice@cyptopirate.org> »
clef RSA de 4096 bits, identifiant B4AFF6CC26E7C600, créée le 20xx-xx-xx

Et voilà, la clé à été révoquée, comme l'indique le message ci-dessous :

Cette clef a été révoquée le 2013-07-27 par la clef RSA B4AFF6CC26E7C600 Alice <alice@cyptopirate.org>
pub  4096R/B4AFF6CC26E7C600  créé : 2013-07-27  révoquée : 2013-07-27  utilisation : SC  
                             confiance : ultime        validité : révoquée
Cette clef a été révoquée le 2013-07-27 par la clef RSA B4AFF6CC26E7C600 Alice <alice@cyptopirate.org>
sub  4096R/E585AF14187E892A  créé : 2013-07-27  révoquée : 2013-07-27  utilisation : E   
[ révoquée] (1). Alice <alice@cyptopirate.org>

Cette étape passée, il est fortement conseillé de téléverser votre clé sur un serveur de clés, si vous le faisiez, ou d'envoyer un email à tous vos contacts expliquant que vous avez révoqué votre clé.

Le wiki du hackerspace Le Loop possède un très bon article concernant le renouvellement des clés

Thunderbird et Enigmail

Paramètres des comptes

Sélectionnez Outils > Paramètres des comptes... (pour Windows)

Sélectionnez Édition > Paramètres des comptes... (pour Gnu/Linux)


ParamètresComptesCourrier.jpg

Activer le support openPGP
si celui-ci ne reconnaît pas automatiquement votre clef, sélectionner "Utiliser un identifiant de clef particulier...", taper votre identifiant sans oublier de le faire précéder de "Ox" ou manuellement en cliquant sur le bouton "Choisir une clef..."

Puis sur le bouton "Avancé..." pour obtenir cette fenêtre :


Paramètresidentitepgp.jpg

Si vous ne publiez pas votre clé publique sur un serveur, il sera utile pour votre correspondant, que vous ayez préalablement cocher "joindre ma clé publique aux messages".

Barre de menu > OpenPGP


MenuOpenPGP.jpg


Sélectionner OpenPGP > Gestion de clefs


GestiondeClefs.jpg

depuis ce menu vous pouvez :

  • Rafraichir les clefs publiques sélectionnées
  • Chercher des clefs
  • Envoyés des clefs publiques <= à utiliser pour publier votre clef publique
  • Rafraîchir toutes les clefs publiques

Un clic droit sur votre clef ou une autre fait apparaître ce menu :
Menuclegpg.jpg

Cliquez sur "Envoyer les clefs publiques sur un serveur de clefs"

Choix du serveur de clefs publiques

Sélectionner OpenPGP > Préférences puis l'onglet "Serveur de clefs"
PreferencesOpenPGP.jpg

Niveau de confiance d'une clé publique

Un clic droit sur une clef, vous fait voir ce menu :
Menuclegpg.jpg

Cliquez sur "Définir le niveau de confiance du propriétaire"
Choisissez le niveau de confiance à appliquer à la clé :

  • Je ne sais pas
  • Je n'ai PAS confiance
  • J'ai modérément confiance
  • J'ai pleinement confiance
  • J'ai une confiance absolue

le niveau "j'ai une confiance absolue" est souvent nécessaire pour l'envoi d'un message chiffré

  1. OpenPGP User ID Comments considered harmful http://debian-administration.org/users/dkg/weblog/97}}