(Environ 14 min de lecture)

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.

. 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…

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

Vous devez générer un certificat de révocation. C’est ce qui vous permet, dans le cas où votre clé privée viendrait à être volée, perdue…, de signaler votre clé comme non valide. Générez ce certificat dès maintenant (si vous perdez votre clé privée, vous l’avez dans le baba, sinon), et stockez le sur un CD, imprimez-le… mais gardez-le pour vous : quiconque possède ce certificat peut révoquer votre clé sans prévenir. La commande : gpg2 --gen-revoke <mon_id> Seahorse ne permet pas de générer de certificat de révocation, m’enfin pour une commande que je donne, vous pouvez ouvrir une console

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 🙂

Selon votre distribution, la méthode d’installation de Thunderbird , la version de ce dernier (stable, beta, early…), vous pouvez avoir besoin d’une version plus récente d’Enigmail. Elle est disponible par ici.

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.

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.

Précision, du coup. Lors de l’envoi de mails avec pièce jointe, Enigmail peut vous proposer plusieurs options : Chiffrer/signer le mail seulement : le mail est chiffré et/ou signé, mais pas la pièce jointe

Chiffrer/signer le mail, et chiffrer/signer chaque pièce jointe individuellement : le mail (texte) est chiffré et/ou signé, comme d’hab’, et la pièce jointe est chiffrée. Elle se retrouvera probablement avec une extension .pgp et devra être déchiffrée « à la main » pour être lue. Notez que Thunderbird peut la déchiffrer « à la volée » et l’ouvrir d’un simple clic droit sur la PJ.

Utiliser PGP/MIME : mail et pièce jointe sont « encapsulés » dans un seul conteneur chiffré et/ou signé. Une fois déchiffré, la pièce jointe est « en clair ». Faites votre choix ! Je reconnais quand même que j’ai tendance à utiliser PGP/MIME 😉

Envoyer l’identifiant de clé sans joindre la clé au mail, c’est mieux. Ça évite les « mais c’est quoi ta pièce jointe, j’arrive pas à l’ouvrir ! » de vos destinataires qui n’utilisent pas OpenPGP et verront votre clé en PJ, au format asc. Cependant, si vous ne voulez pas envoyer la partie publique de votre clé sur un serveur de clés, l’identifiant ne suffira pas à un tiers pour vous envoyer un mail chiffré : il faut joindre la clé publique au message. Et dans ce cas, peut-être est-il plus pratique de ne pas signer les mails par défaut, pour éviter les mêmes remarques… m’enfin bon, à vous de voir ! 😉

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 :

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

Ces commandes sont données pour information. Elles sont aussi reproductibles via des interfaces graphiques, comme Seahorse, Kleopatra…

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.

), puis entrez 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.

), puis à l’invite Command> entrez : 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

et suivez les indications Signer la clé d’un ami : gpg2 --sign-key < son_id >

Avant de signer la clé de quelqu’un, vérifiez (3 fois) qu’il s’agit bien de la sienne. Le mieux reste une signature « physique » : la personne en question amène sa clé publique sur une clé USB, vous la signez (la clé publique, pas la clé USB 😀 ), et la lui rendez. Sinon, c’est tout le principe de la chaîne de confiance qui s’effondre !

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.

J’attire cependant votre attention sur le fait qu’on ne stocke pas sa clé PGP comme on a le nez fait, en particulier sur un smartphone. Posez-vous des questions : assurer le secret de vos correspondances, oui, évidemment, mais est-ce que les applis que vous avez sur votre smartphone ne sont pas susceptibles d’intercepter votre phrase de passe ? De lire la fenêtre qui affiche votre mail ? Est-ce que votre OS n’est pas tout vérolé d’applis Google, Facebook et j’en passe ? Si vous avez un doute, c’est que vous ne devriez probablement pas placer un secret (quel qu’il soit, cela inclue la clé donc) dessus. Et s’il n’est pas chiffré et que vous le perdez… courrez vite chercher votre certificat de révocation.

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 !