GnuPG : Crypter vos emails

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Le but de cet article est de vous montrer comment crypter ses mails. Sous Mozilla Thunderbird, il existe le plugins Enigmail. Si vous n'avez pas de clients, ne souhaitez pas en avoir et rester en webmail.... dommage.
Et bien non ! :-) Car il existe le plugins FireGPG pour Mozilla Firefox qui permet de crypter ses mails :-)

Pour commencer, il faut installer GPG sur son ordinateur. GPG (GnuPG) est la version Open Source de PGP qui lui est payant.

2 Installation

Commencez donc par installez GPG comme n'importe quel programme :

apt-get install gnupg

3 Génération de sa clef

3.1 Création d'une paire de clés

“Euh attend un peu là, pas si vite, c'est quoi une paire de clés ??”
Bon, quelques rappels élémentaires sur le chiffrage a clé publique/clé privé :
Ce système repose sur 2 clés. La clé publique sert a chiffrer un message, et la clé privé sert a déchiffrer un message chiffré a l'aide de la clé publique. Dans la pratique, chacun garde sa clé privée bien préciseusement chez lui, et donne sa clé publique a tout ses contacts. Ainsi si je veux chiffrer mon mail et l'envoyer a Pierre, il faut que j'ai en stock la clé publique de Pierre, si je ne l'ai pas, c'est que Pierre ne me l'a pas donné, ou bien tout simplement que Pierre n'utilise pas GPG (et il a le droit), auquel cas, il m'est impossible d'envoyer un mail chiffré a Pierre !!

Donc pour résumer, si un de mes contacts veut m'envoyer un mail chiffré, il devra d'abord avoir ma clé publique dans son trousseau de clé, il chiffrera son mail avec, et dès lors, le mail chiffré n'est déchiffrable que par ma clé privée (et pas la clé privée du voisin).

L'expediteur lui même serait infoutu de déchiffrer le mail qu'il vient d'envoyer, c'est aboslument irreversible, un mail chiffré a l'aide d'une clé publique, ne peut etre déchiffré que par la clé privée générée en meme temps que la clé publique. Voilà pour le bref rappel théorique !

Maintenant la pratique, ouvrez un shell et tappez :

$ gpg --gen-key
gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
 
S'electionnez le type de cl'e d'esir'e:
   (1) DSA et Elgamal (par d'efaut)
   (2) DSA (signature seule)
   (5) RSA (signature seule)

Choisissez le choix par défaut

$ Votre choix ? 1
La paire de cl'es DSA fera 1024 bits.
les cl'es ELG-E peuvent faire entre 1024 et 4096 bits de longueur.

Personnellement, je suis un peu parano, donc j'ai mis 4096, mais 2048 est suffisant :

Quelle taille de cl'e d'esirez-vous ? (2048) 4096
La taille demand'ee est 4096 bits
Sp'ecifiez combien de temps cette cl'e devrait ^etre valide.
         0 = la cl'e n'expire pas
      <n>  = la cl'e expire dans n jours
      <n>w = la cl'e expire dans n semaines
      <n>m = la cl'e expire dans n mois
      <n>y = la cl'e expire dans n ann'ees

Je ne souhaites pas que la clef expire pour ne pas avoir à la refaire dans quelques temps, mais il est parfois préférable de le faire. Tout dépends de vos besoins.

La cl'e est valide pour ? (0) 0
La cl'e n'expire pas du tout
Est-ce correct ? (o/N) o
 
Vous avez besoin d'un nom d'utilisateur pour identifier votre cl'e; le
programme le construit `a partir du nom r'eel, d'un commentaire et d'une
adresse e-mail de cette mani`ere:
   << Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> >>
 
Nom r'eel: Pierre Mavro
Adresse e-mail: pierre@mavro.fr
Commentaire: 
Vous avez s'electionn'e ce nom d'utilisateur:
    "Pierre Mavro <pierre@mavro.fr>"
 
Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? o
Vous avez besoin d'une phrase de passe pour prot'eger votre cl'e
secr`ete.
 
Un grand nombre d'octets al'eatoires doit ^etre g'en'er'e. Vous devriez faire
autre-chose (taper au clavier, d'eplacer la souris, utiliser les disques)
pendant la g'en'eration de nombres premiers; cela donne au g'en'erateur de
nombres al'eatoires une meilleure chance d'avoir assez d'entropie.
+++++++++++++++.+++++++++++++++++++++++++.+++++.++++++++++.+++++.+++++.+++++++++++++++++++++++++..+++++.++++++++++++++++++++++++++++++++++++++++.>.+++++............>+++++.....<+++++.....>+++++...<+++++...+++++
Un grand nombre d'octets al'eatoires doit ^etre g'en'er'e. Vous devriez faire
autre-chose (taper au clavier, d'eplacer la souris, utiliser les disques)
pendant la g'en'eration de nombres premiers; cela donne au g'en'erateur de
nombres al'eatoires une meilleure chance d'avoir assez d'entropie.
+++++.+++++.++++++++++.++++++++++.++++++++++.+++++.++++++++++.+++++..++++++++++++++++++++.++++++++++.+++++.+++++..+++++++++++++++++++++++++++++++++++.+++++++++++++++.+++++.+++++...+++++>++++++++++......+++++...+++++...+++++..+++++.++++++++++++++++++++>+++++>+++++>.+++++...>+++++...<+++++................................>.+++++........................................................................................+++++^^^^
les cl'es publique et secr`ete ont 'et'e cr'e'ees et sign'ees.
 
gpg: v'erifier la base de confiance
gpg: 3 marginale(s) n'ecessaires, 1 compl`ete(s) n'ecessaires, mod`ele
de confiance PGP
gpg: profondeur: 0  valide:   1  sign'e:   0
confiance: 0-. 0g. 0n. 0m. 0f. 1u
pub   1024D/A39D9E94 2008-01-06
    Empreinte de la cl'e = 1457 2EEC F76C 87CF B4A2  CB24 1405 33C6 A3DF 8093
uid                  Pierre Mavro <pierre@mavro.fr>
sub   4096g/E734E40D 2008-01-06

Répondez ensuite à ces questions simples et attendez la génération de votre clef. Pour vérifier que votre clef s'est bien génée :

$ gpg --list-keys
/Users/pmavro/.gnupg/pubring.gpg
--------------------------------
pub   1024D/A39D9E94 2008-01-06
uid                  Pierre Mavro <pierre@mavro.fr>
sub   4096g/E734E40D 2008-01-06

Ici on voit que ma clé publique a été créée, et possede l'id A39D9E94.
Veuillez notez que la petite taille de cette id (8 caracteres), laisse présager un risque de doublon avec une autre clé publique générée, donc pour enlever tout doute possible sur l'identification de la clé (enfin techniquement il est là aussi possible d'avoir un doublon mais bon...), nous préfererons utiliser le fingerprint (empreinte digitale) de la clé :

$ gpg --fingerprint 
/Users/pmavro/.gnupg/pubring.gpg
--------------------------------
pub   1024D/A39D9E94 2008-01-06
    Empreinte de la cl'e = 1457 2EEC F76C 87CF B4A2  CB24 1405 33C6 A3DF 8093
uid                  Pierre Mavro <pierre@mavro.fr>
sub   4096g/E734E40D 2008-01-06

Voilà, vous pouvez donc lire ici l'empreinte de votre clé publique (1457 2EEC F76C 87CF B4A2 CB24 1405 33C6 A3DF 8093), se terminant par les 8 chiffres de votre id précédemment vu.
Notez cette empreinte sur un bout de papier, elle nous servira plus tard.

3.2 S'enregistrer auprès d'un serveur de clés

Une fois vos clés générées, il faut stocker sur un serveur votre clé publique, afin que vos contacts puissent trouver votre clé publique et ainsi vous envoyer un mail chiffré !
Pour se faire, nous allons utiliser le serveur http://pgp.mit.edu, mais il y en a d'autres bien evidemment. La plupart se réactualisent entre eux, mais pas toujours, donc l'idéal et de garder toujours le meme serveur, et de le préciser a ses contacts, pour etre sûr qu'ils vous trouve.

Autre détail, la création d'un certificat de revocation est essentielle, pour prévenir par exemple le serveur de clé que votre clé publique n'est plus bonne et que vos contacts doivent cesser de l'utiliser !

Allez hop, on va créé ce certificat de revocation :

$ gpg --gen-revoke pierre@mavro.fr > pierre@mavro.fr.txt   
 
sec  1024D/A39D9E94 2008-01-06 Pierre Mavro <pierre@mavro.fr>
 
G'en'erer un certificat de r'evocation pour cette cl'e ? (o/N) o
choisissez la cause de la r'evocation:
  0 = Aucune raison sp'ecifi'ee
  1 = La cl'e a 'et'e compromise
  2 = La cl'e a 'et'e remplac'ee
  3 = La cl'e n'est plus utilis'ee
  Q = Annuler
(Vous devriez s^urement s'electionner 1 ici)
Votre d'ecision ? 0
Entrez une description optionnelle ; terminez-l`a par une ligne vide:
> Au cas ou
> 
Cause de r'evocation: Aucune raison sp'ecifi'ee
Au cas ou
Est-ce d'accord ? (o/N) o
 
Vous avez besoin d'une phrase de passe pour d'everrouiller la
cl'e secr`ete pour l'utilisateur: << Pierre Mavro <pierre@mavro.fr> >>
cl'e de 1024 bits DSA, ID A39D9E94, cr'e'ee le 2008-01-06
 
sortie avec armure ASCII forc'ee.
Certificat de r'evocation cr'e'e.
 
D'eplacez-le dans un support que vous pouvez cacher ; si Mallory a
acc`es `a ce certificat il peut l'utiliser pour rendre votre cl'e
inutilisable.
Une bonne id'ee consiste `a imprimer ce certificat puis `a le stocker
ailleurs, au cas o`u le support devient illisible. Mais attention :
le syst`eme d'impression de votre machine pourrait stocker ces
donn'ees et les rendre accessibles `a d'autres personnes !

Voilà, votre certificat est créé, garder le fichier texte précieusement, car si quelqu'un l'utilise, il peut invalider vos clés en prevenant le serveur qu'elles n'existe plus, alors que ce sera faux !! Nous verrons plus tard comment s'en servir...

Pour revenir a nos moutons, nous devons nous enregistrer sur le serveur de clé. Pour celà, c'est très simple :

$ gpg --keyserver pgp.mit.edu --send-keys A39D9E94       
gpg: envoi de la cl'e A39D9E94 au serveur hkp pgp.mit.edu

Voilà, votre clé a été exporté sur le serveur de clé, vous pouvez allez l'admirer sur pgp.mit.edu en tappant dans le champ String votre id sur 8 chiffres précédé d'un '0x', ou encore votre nom, votre adresse mail, etc. Pour l'ex président Jaques Chirac :

http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xA4723848

4 Revoquer sa clé sur le serveur de clé

Si comme indiqué plus haut vous ne vous servez plus de vos clé pour une raison ou une autre (compromise par quelqu'un qui possede votre clé privée, vous avez perdu votre mot de passe, etc), vous devez impérativement prévenir le serveur de clé de cette revocation !

Pour se faire, munissez vous du fichier de revocation que vous avez créé plus haut, et importez le dans votre porte-clé via la commande :

gpg –import revoc_pierre@mavro.fr.txt

Verifiez que votre trousseau de clé a bien enregistrer la revocation en listant vos clés :

gpg –list-keys 

Votre clé doit maintenant etre marquée comme [révoquée]
Vous pouvez donc là ré-envoyer sur le serveur de clé pour mettre a jour ce dernier :

gpg --keyserver pgp.mit.edu --send-keys A39D9E94

Voilà, votre clé est révoquée, et donc inutilisable. Vous pouvez donc supprimer vos clés publique et privée de votre trousseau. Supprimez d'abord la clé secrète :

gpg –delete-secret-keys pierre@mavro.fr

puis la ou les clés publiques ratachées :

gpg –delete-keys pierre@mavro.fr

5 Utilisation

Maintenant, utilisez votre logiciel favoris afin de chiffrer vos mails. Envoyez votre clef publique ) vos amis également afin qu'ils puissent déchiffrer facilement :-)

6 Ressources

http://gpglinux.free.fr/
GnuPG - pour plus de confidentialité