[Actualisation][Tuto] Signer/chiffrer ses mails avec GPG

sécurité 26 mars 2018

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, je vais aussi ajouter Claws Mail par la suite, et pour Mutt c’est chez l’ami Unixmail que ça se passe). J’ai déjà causé un peu des raisons pour lesquelles on devrait systématiquement signer et chiffrer nos mails par ici. Du coup, il me paraît logique de vous expliquer comment reproduire ça chez vous, avec GPG 😉

 

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 et/ou sous ParrotSec. Elles seront totalement identiques sous Debian, 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 entrez la commande :  sudo apt update && sudo apt 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… commande qui vous demandera le mot de passe d’administration.
  • 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, entrez : gpg2 --full-generate-key (notez qu’il existe aussi un mode « rapide » mais qui utilise les options par défaut (3072 bits, RSA/RSA, valable 2 ans — si ces réglages vous conviennent, ne vous gênez pas et entrez gpg2 --generate-key )

Vous allez devoir répondre à quelques questions :

  • le type de clé désiré : personnellement, je choisis RSA/RSA
  • la taille de la clé : 4096 bits
  • 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.

 

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 (recommandé)

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.

Vous pouvez utiliser PGP/MIME si vous le souhaitez : certains clients « courants » étaient incompatible auparavant (comme K-9 Mail sous Android), mais c’est réglé depuis.

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…

 

Activer le support de GPG dans Claws Mail

(parce qu’un logiciel de messagerie qui mange pas toute la mémoire vive comme cet obèse de Thunderbird, c’est bien aussi des fois)

Je pars là aussi du principe que vous avez un compte configuré.

 

Étape 1 : installer les plug-ins qui vont bien

Il « suffit » d’installer les paquets (là encore, choisissez votre méthode, via apt ou par Synaptic) claws-mail-pgpinline claws-mail-pgpmime (mais vous pouvez voir grand et ne pas faire vos radines, et installer claws-mail-plugins (voire même claws-mail-extra-plugins en bonus) qui amènera tout le nécessaire (et le potentiellement superflu avec).

 

Étape 2 : les configurer

Lancez Claws Mail. Direction le menu « Configuration » > « Modules » et cliquez sur « Charger ».

Sélectionnez les 3 modules qui commencent par « pgp » (pgpcore, pgpinline, pgpmime). Fermez.

Cette-fois, toujours dans « Configuration », allez dans « Édition des comptes », sélectionnez le vôtre et cliquer sur « Modifier ». Choisissez dans l’onglet « GPG » la configuration qui vous va bien, le moins casse-gueule étant d’entrer l’identifiant de clé. Procédez de même avec l’onglet S/MIME. C’est fini 😉

 

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/Claws, 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 ! La plupart des clients (Claws et Thunderbird notamment) permettent aujourd’hui de générer un trousseau de clé directement dans l’application, mais utilisent généralement le paramétrage par défaut sans questions supplémentaires. Pour avoir une clé de 4096 bits, c’est pas gagné sans le faire « à la main », d’où ce tutoriel.
  • 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é.
  • Pour les utilisateurs d’Android : le chiffrement de courriels via K-9 Mail est très bien supporté (c’est de toutes façons le meilleur client mail sous Android, sans hésitation), au travers du logiciel OpenKeyChain.

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 !

Mots clés