[Tuto] Signer/chiffrer ses mails avec GPG

B’jour tout l’monde,

aujourd’hui, on va voir comment mettre simplement en place tout ce qu’il vous faut pour vous assurer la confidentialité que méritent vos courriels : installation de GnuPG, génération d’une paire de clés, envoi sur un serveur de clés, configuration de votre logiciel de messagerie (ici, Thunderbird). J’ai déjà causé un peu des raisons pour lesquelles on devrait systématiquement signer et cihffrer nos mails par ici. Du coup, il me paraît logique de vous expliquer comment reproduire ça chez vous 😉

 

GPG, c’est quoi ?

Un petit rappel qui a sa place ici, à mes yeux. GPG, de son vrai nom GnuPG (pour « GNU Privacy Guard » ) est une implémentation libre (un clone, si on veut) de PGP (pour « Pretty Good privacy » ), un logiciel équivalent mais propriétaire.

GnuPG est conforme à la norme OpenPGP (RFC2440), ce qui garantit sa compatibilité avec PGP, et ce à double sens : les clés générées par GnuPG sont utilisables avec PGP (et inversement), et les messages chiffrés par GnuPG sont déchiffrables par PGP (idem, c’est valable dans l’autre sens).

Le chiffrement se fait à l’aide d’un « trousseau de clés » (chiffrement asymétrique) : une clé publique, et une clé privée, qui sont liées (mais je vais pas entrer dans les détails techniques, et surtout mathématiques, de la chose). Votre clé publique permet à n’importe qui de chiffrer un message/fichier qui vous est destiné, alors que votre clé privée vous permettra de déchiffrer ce message/fichier. Votre clé privée sert aussi à signer un message/fichier que vous envoyez, et votre clé publique permet à la personne à qui vous envoyez le message/fichier de vérifier que vous en êtes bien l’auteur et que ce dernier n’a pas été altéré/modifié au cours de son transit.

 

Installer GnuPG

Les manips que je vais décrire ici ont été faites sous Linux Mint « Debian Edition », fraîchement installée juste pour ce tutoriel. Elles seront totalement identiques sous Debian, Linux Mint, Ubuntu et dérivées diverses et variées. Elles sont adaptables à la plupart des autres distributions Linux et BSD (les « paquets » ont sensiblement le même nom).

En console (pour les barbus et les autres qu’un terminal ne rebute pas) :

  • ouvrez un terminal, et connectez-vous en tant que super-utilisateur à l’aide de la commande :  su. Il vous faudra entrer votre mot de passe root.
  • entrez la commande :  apt-get update && apt-get install gnupg2. Cela va installer GnuPG et ses dépendances. Ça semble logique, mais assurez-vous d’être connecté au net avant d’entrer la commande…
  • vous allez pas me croire : c’est tout \o/

Graphiquement :

  • lancez Synaptic, ou la logithèque de votre distribution. Si le mot de passe root est demandé, entrez-le.
  • dans le champ de recherche, entrez : gnupg2
  • installez le paquet correspondant. Là encore, une connexion Internet est requise.

 

Générer son trousseau de clés

En console :

Toujours dans votre terminal « root » , entrez : gpg2 --gen-key

Vous allez devoir répondre à quelques questions :

  • le type de clé désiré : personnellement, je choisis RSA/RSA (il y a eu un temps des soucis/vulnérabilités potentielles avec SHA-1, utilisé par DSA… dans le doute 😉 )
  • la taille de la clé : 2048 bits, parce que plus y’a de bits, mieux c’est (du moins, c’est ce qu’elles disent toutes) (je suis déjà loin)
  • validité de la clé : à vous de voir, j’ai mis 0 pour ce tutoriel, mais il est possible de créer une clé valable 2 ans, durée que vous prolongerez ensuite. C’est un peu plus sûr, on va dire.
  • votre nom réel : logiquement, votre nom+prénom… :mrgreen:
  • votre e-mail : entrez l’adresse associée à la clé (celle à partir de laquelle vous souhaitez envoyer/recevoir du courrier chiffré/signé) — il est possible d’associer plusieurs adresses mail à une seule clé, on verra ça plus tard !
  • commentaire : utile pour identifier une clé/sous-clé. « maison », « perso », ou rien du tout… À vous de voir !
  • mot de passe : choisissez un mot de passe, qui sera demandé à chaque déverrouillage de votre clé (pour chiffrer un mail, en vérifier un, etc.). Déconnez pas, pour le coup ! Trouvez autre chose que le prénom du hamster ou la plaque d’immatriculation de la trottinette nucléaire du gamin : on parle ici de votre identité  numérique ! Si quelqu’un trouve ce mot de passe, il peut signer des mail et des fichiers importants… en votre nom. Et accessoirement, déchiffrer tout ce que vous aviez « caché ».

Le trousseau est généré, profitez-en pour « créer de l’entropie » : matraquez le clavier (c’est qui l’patron !), cliquez partout, ou faites un truc quelconque. Envoyez un mail à mémé, tiens.

En console, c'est quand même plus sympa !
En console, c’est quand même plus sympa !

Graphiquement :

Avec vos petits doigts, appuyez simultanément sur Alt et F2. Entrez la commande : gksu seahorse (quand je suis pas root, il veut pas générer de clés…) et entrez le mot de passe root. Seahorse s’affiche. Allez dans le menu Fichier > Nouveau… et choisissez « Clé PGP ». Cliquez sur Continuer, une boîte de dialogue s’affiche, demandant les mêmes informations qu’en console. du coup, la description est au-dessus :mrgreen:

 

Activer le support de GPG dans Thunderbird

Méthode 1 : via les dépôts de la distribution

Je vais faire concis, la différence entre console/graphique étant la même que pour l’installation de gnupg2. Choisissez votre outil (synaptic, apt-get, aptitude…), lancez-le. Je pars du principe que vous avez déjà installé Thunderbird, et que votre compte email est configuré et fonctionnel.

Fermez bien Thunderbird, puis installez simplement le paquet enigmail (avec apt-get, ou via Synaptic). Rouvrez Thunderbird : un élément « OpenPGP » est apparu dans la barre de menus !

Méthode 2 : directement via Thunderbird

Ouvrez Thunderbird, puis rendez-vous dans Outils > Modules complémentaires. Dans le champ de recherche, tapez Enigmail. Installez-le et redémarrez Thunderbird. L’élément « OpenPGP » est apparu dans la barre de menu 🙂

 

Configurer Enigmail

Pour le coup, une seule méthode : via l’interface graphique. Pour du tout-console, c’est vers Mutt qu’il faudra se tourner. Pour commencer, direction le menu Édition > Paramètres des comptes. Choisissez le compte concerné, puis dans la liste cliquez sur OpenPGP et cochez « Activer le support OpenPGP (Enigmail) pour cette identité ». Puis configurez les options comme bon vous semble. Voici mes réglages, sans en faire un exemple je trouve qu’ils fonctionnent pas trop mal.

Paramètres d'Enigmail
Paramètres d’Enigmail

Voilà, ça, c’est fait. Maintenant, lorsque vous allez envoyer un mail, il sera signé, et l’identifiant de clé sera envoyé, permettant au destinataire de savoir quelle clé utiliser s’il souhaite répondre en chiffrant son courriel.

Je n’ai pas choisi d’utiliser PGP/MIME de façon systématique, dans la mesure où un certain nombre de clients de messagerie sont encore incapables de les lire : K-9 Mail, l’application dont je me sers sur mon smartphone, en fait partie.

Notez que la plupart des fonctions dont vous aurez « normalement » besoin sont accessibles graphiquement via Enigmail : vérifier une signature,  déchiffrer une pièce jointe, importer une clé publique depuis un serveur ou depuis une pièce jointe…

 

Envoyer sa clé sur un serveur public

Super simple, aussi bien en console que via une interface graphique.

En console :

Tapez simplement la commande : gpg2 --send-key <id> --keyserver <serveur>

Pour connaître l’ID de votre clé : gpg2 -K vous renvoie votre clé privée. Votre identifiant, c’est ce truc sur la ligne du bas de la capture, dans mon cas C10B6144 :

Sélection_051

Pour ce qui est du serveur, à vous de voir. En voici quelques-uns :

  • pgp.mit.edu (HKP)
  • pool.sks-keyservers.net (HKP)
  • keyserver.pgp.com (LDAP)

Via Seahorse :

Ouvrez Seahorse comme précédemment, sélectionnez votre clé, puis allez dans le menu Distant > Synchroniser les clés.

Une boîte de dialogue s’ouvre alors, vous informant qu’une clé est sélectionnée pour synchronisation. Éventuellement, choisissez un serveur de clé pour l’envoi, pourquoi pas pgp.mit.edu . Puis cliquez sur Synchroniser, et c’est tout bon.

Vous n’êtes pas obligé de synchroniser votre clé avec chacun des serveurs ; en théorie, ils communiquent entre eux (mais cela peut être long).

On me souffle dans l’oreillette qu’il est aussi possible de le faire directement depuis Enigmail, mais je n’ai pas testé 😉

 

Quelques commandes avancées

  • Ajouter une sous-clé, typiquement si vous voulez associer plusieurs adresses e-mail à une même clé : sélectionnez votre clé ( gpg2 --edit-key <mon_id> ), puis entrez adduid et suivez les indications.
  • Révoquer une clé : sélectionnez votre clé ( gpg2 --edit-key <mon_id> ), puis à l’invite Command> entrez : revkey et suivez les instructions. L’effet est immédiat.
  • Changer la date d’expiration d’une clé : gpg2 --edit-key <mon_id> expire et suivez les indications
  • Signer la clé d’un ami : gpg2 --sign-key <son_id>

 

Le mot de la fin !

Plusieurs petites choses importantes encore. La plus importante de ces choses, c’est qu’il ne faut pas signer un mail isolé par-ci par là. La signature, c’est fait pour être généralisé. Ça évite d’oublier, et que le jour où un mail aurait dû être signé, ben il l’est pas.

Idem pour le chiffrement : dès que vous le pouvez, chiffrez. Pour plusieurs raisons (confidentialité tout ça), dont celle-ci : si un jour quelqu’un fouine dans vos mails, qu’ils sont en clair, et que d’un coup, hop, un mail au milieu est chiffré, eh bien soyez sûr que c’est *ce* mail qui attirera l’attention. Le chiffrement généralisé, c’est mieux.

Ensuite, des considérations plus basiques. Ce tutoriel est fait pour Linux, avec Thunderbird, mais :

  • Seahorse n’est pas la seule interface graphique, ou n’est pas forcément installée (sous KDE, par exemple). N’hésitez pas à en essayer d’autres !
  • Seule la ligne de commande ne changera pas en fonction de votre distribution.
  • D’autres clients mail sont compatibles avec GnuPG : claws-mail, KMail, Evolution…
  • Pour les utilisateurs de MS-Windows : tout ce qui touche à Thunderbird/Enigmail est identique, mais pour générer et gérer vos clés, vous devez installer GnuPG2 et une interface (c’est plus simple, on va dire). Tournez-vous alors vers GPG4Win, qui intègre tout le nécessaire et tourne très bien. Si besoin d’aide, demandez : je l’ai déjà utilisé.

Et enfin : vous l’aurez deviné, GnuPG ne sert pas uniquement à signer/chiffrer des mails. Vous pouvez aussi chiffrer vos fichiers, vos échanges sur la Toile… De nombreux logiciels proposent de l’inclure : Pidgin et Gajim pour la messagerie instantanée, de nombreux clients mail sur toutes les plates-formes (y compris Android, avec le couple K-9 Mail et APG)… Et vous pouvez même monter votre propre réseau F2F (Friend to Friend) avec Retroshare, afin de chiffrer vos échanges de fichiers, et de filtrer les accès 😉

Amusez-vous bien !

5 réflexions sur “ [Tuto] Signer/chiffrer ses mails avec GPG ”

  • 29 août 2013 à 14 h 14 min
    Permalink

    Direction mes favoris et mon agrégateur de flux !
    Article très clair merci 🙂

    Réponse
  • 8 novembre 2014 à 13 h 50 min
    Permalink

    Beau l’article, beau =)

    Dans « Configurer Enigmail » la précision sur le choix des options d’envoi est drôlement pratique.
    Itou pour celles sur quand signer/chiffrer, et les applications où utiliser sa paire… de clés GnuPG.
    À propos de bonnes infos sur Quel logiciel de messagerie sécurisée choisir ? par l’EFF via Korben. Voir Tox dans les commentaires.

    J’apprécie aussi les infos cachées dans « Quelques commandes avancées ». Comme Ajouter une sous-clé, par ex. pour associer plusieurs adresses e-mail à une même clé

    Envoyer sa clé sur un serveur public est bien proposé par Enigmail, automatiquement et sur les 3 serveurs (KPI) indiqués.

    Suggestions
    (+) un mot sur le choix de l’adresse e-mail à utiliser, càd. qu’on peut utiliser son courriel habituel, qu’on sélectionne via Enigmail : Qqn débutant avec PGP peut légitimement se poser la question. C’est rarement précisé.

    (-) Seahorse
    (+) Seahorse (le gestionnaire de clés PGP graphique sous GNOME)

    Réponse

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *