Nous sommes Ă  une Ă©poque oĂč le chiffrement des Ă©changes informatiques est dĂ©sormais la norme. Les flux de donnĂ©es en clair sont de plus en plus proscrits et les principaux outils Internet tendent Ă  rĂ©duire leur usage en privilĂ©giant les versions sĂ©curisĂ©es lorsque disponibles ou en affichant des messages d’alerte. L’email est l’un des moyens de communication d’Internet les plus historiques (sa crĂ©ation datant d’avant le Web), mais il est souvent considĂ©rĂ© comme une carte postale en raison de l’absence de chiffrement par dĂ©faut du contenu. Au travers de ce petit article, je vous propose de voir comment utiliser GnuPG pour chiffrer ses Ă©changes par e-mail avec le client Evolution.

Mais pourquoi chiffrer ses e-mails ? (et le reste aussi)

A titre personnel, je suis trĂšs attachĂ© au respect de la vie privĂ©e et de l’intimitĂ©. Cela ne doit pas faire exception sur les rĂ©seaux, surtout quand on sait que les principaux acteurs d’Internet ont une grande partie de leur business model basĂ© sur l’exploitation des donnĂ©es et la traque des utilisateurs. Je n’irai pas trop dans le dĂ©tail ici car ce n’est pas l’objet de l’article. NĂ©anmoins, j’ai rĂ©cemment vu sur Fosstodon un message d’un utilisateur qui rĂ©sume beaucoup la problĂ©matique telle que je la conçois :

I demand privacy not because my actions are questionable but because your judgement is

@elkhair

Traduction pour les non anglophones :

Je demande le respect de la vie privĂ©e non pas parce que mes actes sont discutables, mais parce que votre jugement l’est

La vie privĂ©e est malmenĂ©e depuis quelques temps pour diverses raisons. Les lois et discours sĂ©curitaires en rĂ©ponse Ă  la menace terroriste, la crise sanitaire du moment qui a provoquĂ© quelques de dĂ©rives (entreprises prises en flagrant dĂ©lit de fichage de l’Ă©tat de santĂ© de leurs employĂ©s, systĂšmes de suivi des cas contact qui a beaucoup inquiĂ©tĂ©, etc), et j’en oublie certainement. On dit souvent que l’enfer est pavĂ© de bonnes intentions et la plupart de ces actions en sont … Mais lorsqu’on fini par accepter d’ĂȘtre mis Ă  nu en permanence (que ce soit par les autoritĂ©s ou les services commerciaux qui veulent notre bien), on se rend compte tardivement qu’on a perdu une des composantes essentielles de nos personnalitĂ©s. Tout le monde aime avoir son petit jardin secret, et c’est parfaitement lĂ©gitime. Celui qui voudra vous prouver l’inverse sera clairement la personne la plus discutable de dĂ©bat ! Et sans aller aussi loin, les atteintes Ă  la vie privĂ©e sont multiples sur le Web avec le suivi permanent d’utilisateurs et tous ces services qui demandent constamment plein d’informations injustifiĂ©es.

Enfin, dans le cas qui nous concerne, si un courrier physique est envoyĂ© au travers d’une enveloppe masquant le contenu, pourquoi un courrier Ă©lectronique ne le serait pas ?

Accepteriez-vous que La Poste ou votre facteur ouvre vos courriers pour analyser leur contenu avant de vous les remettre ? (et vous proposer ainsi comment rĂ©duire vos impĂŽts parce qu’il a lu votre dĂ©claration avant vous ?)

En France, le secret des correspondances est un principe garanti par la Loi. Le courrier Ă©lectronique n’y fait donc pas exception, comme l’a expliquĂ© la CNIL en 2017 Ă  la suite de la publication d’un dĂ©cret relatif aux secret des correspondances numĂ©riques.

Pour plus de lecture Ă  ce sujet, je vous propose de consulter les quelques rĂ©fĂ©rences disponibles sur https://jenairienacacher.fr. Je n’adhĂšre pas spĂ©cialement Ă  la totalitĂ© du contenu ou des propos, mais il y a dessus quelques documents et confĂ©rences trĂšs enrichissantes.

Comment ça marche ?

L’email

Tout d’abord voyons comment fonctionne l’email. De maniĂšre trĂšs vulgarisĂ©e, c’est la mĂȘme idĂ©e que le courrier traditionnel physique : le message est constituĂ© d’une enveloppe (headers) avec des donnĂ©es techniques publiques utilisĂ©es par les diffĂ©rents composants de la chaĂźne (adresse de l’Ă©metteur, adresse du destinataire, etc). Ensuite, il y a le contenu du courrier, qui est le corps (body) du message. Tout ceci circule sur Internet au travers de diffĂ©rents services qui se rĂ©sument ainsi :

envoi mail Image réalisée par Denisg, licence GNU Free Documentation License, source Wikimedia

  1. L’expĂ©diteur envoie un email Ă  destination de “destinataire” rĂ©sident chez domaine2.org. Son Mail User Agent (MUA), soit son logiciel de messagerie, envoie le message au SMTP.
  2. Le SMTP, pour Simple Mail Transfer Protocol, c’est La Poste. Il joue le rĂŽle de MTA dans la chaĂźne, soit Mail Transfer Agent. En regardant l’entrĂ©e MX de “domaine2.org”, il obtient en retour l’adresse Ă  laquelle transfĂ©rer le message. Cette adresse n’est autre que le serveur MTA de domaine2.org. Le MTA de domaine2.org reçoit le message provenant de celui de domaine1.com, il le met alors Ă  disposition du MUA de destinataire@domaine2.org. Ceci se fait gĂ©nĂ©ralement dans un serveur de messagerie de type POP (Post Office Protocol) ou IMAP (Interactive Message Access Protocol). Durant cette Ă©tape, le serveur SMTP prend le rĂŽle de MDA, soit Mail Delivery Agent au sein de la chaĂźne car il doit s’assurer localement que la boĂźte de l’utilisateur est bien disponible. Le MDA est donc le facteur.
  3. Le serveur de messagerie (POP ou IMAP) qui hĂ©berge les courriers de destinataire@domaine2.org possĂšde un nouveau message. Son MUA demande alors Ă  consulter les nouveaux messages (l’utilisateur ouvre sa boĂźte aux lettres).
  4. Le MUA reçoit le message du serveur de messagerie. Dans le cas du protocole POP, il est alors effacĂ© du serveur de messages (sauf si le client demande Ă  le conserver) et conservĂ© localement. Dans le cas de l’IMAP, il est consultable depuis le serveur et le client peut avoir une copie locale.

VoilĂ  dans les grandes lignes comment fonctionne l’envoi d’email sur Internet. Durant tout ce fonctionnement, une partie de la chaĂźne communique via des protocoles chiffrĂ©s : le MUA peut chiffrer l’Ă©change avec le SMTP et ou le serveur de messagerie, tout comme les SMTP peuvent chiffrer leur communication pour le transfert du message. Mais le message restera une donnĂ©e lisible par tous qui peut ĂȘtre potentiellement interceptĂ©e ou corrompue. De plus, le stockage de celui-ci sur le serveur de message (ex : Gmail, Outlook.com, messagerie du FAI, etc) n’est quasiment jamais chiffrĂ© pour diverses raisons (analyse Ă  des fins de profilage, analyse Spam, etc). Certains opĂ©rateurs ont fait du chiffrement intĂ©gral leur argument de vente comme Protonmail. C’est ce qu’on appelle le chiffrement de bout en bout, ou end-to-end encryption en anglais. L’hĂ©bergeur ne stocke que de la bouillie qui lui est illisible, seuls les clients sont capables de dĂ©chiffrer la communication.

PGP, OpenPGP et GnuPG

Je prĂ©viens, je ne suis en aucun cas un expert en cryptographie et l’explication sera donc trĂšs vulgarisĂ©e. Pour une explication dĂ©taillĂ©e, je vous invite Ă  consulter cet article de Next-INpact qui est aussi complet qu’il est accessible.

PGP pour Pretty Good Privacy (ou “assez bon niveau de confidentialitĂ©” comme proposĂ© par Wikipedia fr) est un programme de chiffrement, dĂ©chiffrement et de signature de donnĂ©es pour rĂ©aliser des actions de confidentialitĂ©, authentification, et communication. Initialement dĂ©veloppĂ© par la sociĂ©tĂ© Symantec, il s’agit d’un logiciel propriĂ©taire qui fonctionne par un principe de clĂ© privĂ©e et clĂ© publique avec signatures.

PGP a depuis Ă©tĂ© standardisĂ© Ă  la demande de nombreux acteurs voulant implĂ©menter le procĂ©dĂ© dans leurs solutions logicielles. Sa spĂ©cification a ainsi permis la crĂ©ation de variantes ouvertes telles que OpenPGP. Donc lorsque je parlerai de PGP, il s’agira plus de la mĂ©thode de chiffrement que du logiciel original de Symantec.

Enfin, GnuPG (ou GPG pour les intimes) pour GNU Privacy Guard, est le logiciel dĂ©veloppĂ© par le projet GNU qui implĂ©mente le standard OpenPGP. Il se prĂ©sente sous la forme de la commande gpg mais aussi de la libgcrypt disponible sur Linux (et pas que). La bibliothĂšque libgcrypt permet d’interfacer des logiciels avec cette API pour un support natif. Dans cet article nous utiliserons par exemple Seahorse du projet GNOME comme outil graphique.

PGP repose sur un principe de clĂ© privĂ©e et clĂ© publique. Comme leur nom l’indique, l’une est confidentielle et restreinte Ă  l’usage de son propriĂ©taire, l’autre est une information publiquement partageable. La clĂ© publique servira Ă  chiffrer le message que seul le propriĂ©taire de la clĂ© privĂ©e pourra lire.

Le principe de chiffrement d’un texte en PGP est donc le suivant :

  1. Emetteur veut envoyer un message Ă  Destinataire par email
  2. Destinataire possÚde une clé privée et une clé publique
  3. Destinataire donne sa clé publique à émetteur et garde précieusement sa clé privée pour lui
  4. Emetteur chiffre le message en utilisant la clé publique de Destinataire
  5. Emetteur envoie le message Ă  Destinataire (note : l’email peut ĂȘtre un message chiffrĂ©, ou plus simplement une piĂšce jointe chiffrĂ©e)
  6. Destinataire déchiffre le message grùce à sa clé privée

De maniĂšre imagĂ©e, Destinataire fourni Ă  Emetteur une boĂźte ouverte dans laquelle Emetteur peut placer son secret, c’est la clĂ© publique. Lorsqu’il referme la boĂźte, il lui est dĂ©sormais impossible de la rouvrir car seul Destinataire en possĂšde la clĂ©, c’est la clĂ© privĂ©e.

A noter qu’une partie de ce mĂ©canisme repose sur la confiance : lorsque Destinataire a fourni sa clĂ© Ă  Emetteur, celui-ci peut confirmer (signer) que cette clĂ© atteste l’identitĂ© de Destinataire. Par dĂ©faut, GPG considĂ©rera une clĂ© publique comme non sĂ»re et limitera son utilisation. De mĂȘme qu’une clĂ© privĂ©e importĂ©e (ex : d’un PC Ă  l’autre) doit ĂȘtre validĂ©e par son propriĂ©taire. Dans le cas oĂč une clĂ© serait corrompue (la clĂ© privĂ©e est dans la nature), une rĂ©vocation est possible grĂące Ă  la crĂ©ation d’un certificat de rĂ©vocation.

Créer sa clé PGP

Attaquons maintenant le sujet. Pour commencer, nous allons devoir gĂ©nĂ©rer notre propre clĂ© PGP si ce n’est pas dĂ©jĂ  fait. Tout ceci peut se faire en ligne de commandes avec gpg, mais Ă  titre personnel je prĂ©fĂšre utiliser Seahorse pour administrer ceci en graphique.

Seahorse est un gestionnaire graphique pour les outils crypto sous Linux, il fait partie des logiciels de l’environnement de bureau GNOME. Il peut aussi bien gĂ©rer vos clĂ©s PGP que vos clĂ©s SSH par exemple, ainsi que les mots de passe stockĂ©s dans le trousseau du systĂšme.

gpg1

Nous crĂ©ons une nouvelle clĂ© en cliquant sur “+” => nouvelle clĂ© GPG.

gpg2

Dans le formulaire, renseignez le nom sous lequel vous souhaitez apparaĂźtre et mettez l’adresse email associĂ©e. Une clĂ© PGP peut avoir plusieurs adresses, cela peut se rajouter ultĂ©rieurement avec l’outil. Certains comme le gĂ©nĂ©rateur de Keybase permettent d’en saisir plusieurs d’affilĂ©.

J’ai modifiĂ© la force Ă  4096 pour augmenter le niveau de chiffrement. Vous pouvez spĂ©cifier si vous le souhaitez une date de fin.

Sur l’Ă©cran suivant, il va vous demander une Passphrase. Ce mot de passe servira Ă  dĂ©verrouiller la clĂ© privĂ© pour son utilisation courante, tĂąchez donc de bien la mĂ©moriser.

Une fenĂȘtre de progression apparaĂźtra vous invitant Ă  faire des mouvements de souris ou tapoter au clavier. Cette Ă©tape sert Ă  ajouter une part d’alĂ©atoire Ă  l’algorithme de gĂ©nĂ©ration.

Votre clé apparaßtra ensuite dans le gestionnaire.

En mode commande, la clĂ© peut ĂȘtre vue ainsi : gpg --list-keys

pub   rsa4096 2021-01-24 [SC]
      FCC5DC373B4FCFDCC5EE9F74A06B189328EA6BE8
uid          [  ultime ] Seb Test GPG <seb+testgpg@zedas.fr>
sub   rsa4096 2021-01-24 [E]

Tester le chiffrement

Faisons un petit exemple d’utilisation. Ici j’ai crĂ©Ă© une clĂ© seb+testgpg@zedas.fr pour l’exemple. Je veux m’envoyer un fichier chiffrĂ©.

$ cat coucou.txt 
Hello,
ceci est un message chiffré !
Bisou

GPG utilisera l’adresse email spĂ©cifiĂ©e dans la clĂ© publique comme destinataire. On peut aussi lui donner l’identifiant de la clĂ©, mais c’est moins pratique. Vous pouvez spĂ©cifier autant de destinataires que vous le souhaitez, y compris vous-mĂȘme si vous voulez dĂ©chiffrer le fichier.

Pour chiffrer coucou.txt, il suffit d’utiliser la commande suivante :

$ gpg -e --sign -r seb+testgpg@zedas.fr -o coucou.txt.gpg coucou.txt 
# -e pour passer en mode "encrypt"
# --sign = signer permet d'indiquer que la clé publique est de confiance
# la passphrase de la clé privée de l'émetteur sera alors demandée
# -r = destinataire
# -o = fichier de sortie
# puis le fichier Ă  chiffrer

Si on affiche le fichier coucou.txt.gpg, c’est de la bouillie.

$ file coucou.txt.gpg 
coucou.txt.gpg: PGP RSA encrypted session key - keyid: DFE456AC 55D2CAAC RSA (Encrypt or Sign) 4096b .

$ cat coucou.txt.gpg 
ïżœ
 ïżœïżœVïżœUïżœÊŹïżœ4ïżœïżœïżœïżœ
ïżœïżœïżœ<2Xïżœïżœ8:ïżœïżœïżœRïżœïżœ27ïżœïżœvïżœïżœïżœïżœïżœ(ïżœïżœïżœ)>GïżœxȚƒ,+ïżœïżœ(..........)

Si on veut dĂ©chiffrer le fichier, il suffit de lancer la commande suivante : gpg -d coucou.txt.gpg. Il retournera le contenu dans la sortie standard. Pour l’envoyer dans un fichier, il suffit de spĂ©cifier -o ou bien faire une redirection dedans > fichier.txt.

Au moment de déchiffrer, le passphrase de la clé privée du destinataire sera demandée.

$ gpg -d coucou.txt.gpg 
gpg: chiffré avec une clef RSA de 4096 bits, identifiant DFE456AC55D2CAAC, créée le 2021-01-24
      « Seb Test GPG <seb+testgpg@zedas.fr> »
Hello,
ceci est un message chiffré !
Bisou
gpg: Signature faite le dim. 24 janv. 2021 15:03:50 CET
gpg:                avec la clef RSA BCE31FF866963F1B141C90A04C47CF1D8592D50F
gpg: Bonne signature de « Seb <seb@zedas.fr> » [ultime]
gpg:                 alias « Seb <seb+blog@zedas.fr> » [ultime]

Importer la clé de votre destinataire

Chiffrer un fichier pour soit-mĂȘme c’est bien gentil, mais le but est de communiquer avec d’autres personnes. Pour pouvoir envoyer un email chiffrĂ© Ă  une tierce personne, il est nĂ©cessaire que celle-ci vous fournisse sa clĂ© publique.

Il existe des annuaires publics oĂč des personnes rĂ©fĂ©rencent leur clĂ©. Il y a par exemple celui de Symantec mais aussi celui d'Ubuntu ou encore du MIT. Les Keyservers causent entre eux et leurs bases de donnĂ©es se propagent. Ils permettent aussi de publier un certificat de rĂ©vocation dans le cas oĂč la clĂ© doit ĂȘtre supprimĂ©e. Sinon, la personne avec qui vous souhaitez Ă©changer peut vous la fournir directement sous format ASCII. Vous pouvez retrouver la mienne dans la section Contact de ce site par exemple. GPG peut s’interfacer avec les keyservers pour obtenir le nĂ©cessaire.

Pour importer la clĂ© d’une personne, vous pouvez le faire en ligne de commandes ou via Seahorse. Admettons que votre interlocuteur vous a fourni sa clĂ© publique en fichier texte.

Pour importer la clé :

gpg --import fichier_de_cle

Ensuite, si vous avez la certitude que la clé de votre destinataire est bien la sienne, vous pouvez la signer.

gpg --sign-key destinataire@adresse.com

Ceci demandera la passphrase de votre clé privée. En signant sa clé publique, vous attestez de votre confiance envers celle-ci.

En retour, vous pouvez envoyer ce gage de confiance Ă  votre interlocuteur qui pourra l’importer Ă  sa propre clĂ© publique pour Ă©tablir une preuve sociale de confiance. Ceci vous demandera une nouvelle fois votre passphrase.

gpg --output ~/cle_signee.key --export --armor destinaire@adresse.com

En envoyant cle_signee.key Ă  votre destinataire, il pourra l’importer pour amender sa propre clĂ© avec votre approbation de confiance.

Je pense que nous avons fait le tour des grandes lignes pour GPG. Si vous souhaitez approfondir le sujet, vous pouvez notamment regarder du cĂŽtĂ© du certificat de rĂ©vocation qui est un Ă©lĂ©ment important de la chaĂźne. Je n’ai pas souhaitĂ© l’aborder ici pour Ă©viter d’alourdir l’article.

Paramétrer Evolution avec PGP

Evolution est le client de mail/agenda/contacts du projet GNOME, il est globalement similaire Ă  Microsoft Outlook. Si je cite celui-ci, c’est d’un parce que je l’utilise, de deux il possĂšde nativement le support openPGP et GnuPG. Je ne sais pas si Mozilla Thunderbird le supporte nativement aussi, il me semble qu’il fallait un plugin Ă  un moment. Je vous invite Ă  consulter sa documentation si cet outil a votre prĂ©fĂ©rence.

Pour activer le support du chiffrement, il suffit d’ouvrir les PrĂ©fĂ©rences (menu Edition), et Ă©diter votre compte de messagerie. Dedans, allez dans la section “SĂ©curitĂ©”.

gpg3

Il vous suffit de renseigner votre adresse email (celle rattachĂ©e Ă  la clĂ© privĂ©e) dans le champ “ID de la clĂ© OpenPGP” et voilĂ  ! Dans l’exemple ci dessus, il s’agit de la clĂ© que j’ai crĂ©Ă© plus haut.

Gardez cochĂ©e l’option de chiffrement des mails envoyĂ©s, cela permettra de ne pas conserver votre boite d’envoi en clair sur le serveur.

Envoyer un mail chiffré

CrĂ©ez un nouveau mail dans Evolution et rĂ©digez votre contenu. De prĂ©fĂ©rence, rĂ©digez le message en texte simple et non en HTML. Pour le test, vous pouvez l’envoyer Ă  vous-mĂȘme. Dans mon cas je l’ai envoyĂ© Ă  l’adresse crĂ©Ă©e prĂ©cĂ©demment qui possĂšde une clĂ© diffĂ©rente.

Deux options s’offrent Ă  vous ensuite dans le menu “Options” de la fenĂȘtre de rĂ©daction : Chiffrer avec PGP et Signer avec PGP. Cochez-les toutes les deux, la passphrase sera alors demandĂ©e, puisez envoyez le mail. Durant la sĂ©quence d’envoi, vous devriez voir “Chiffrement du message” apparaĂźtre.

Et voilĂ  !

gpg4

Etant paramĂ©trĂ©e dans Evolution via l’identifiant indiquĂ© prĂ©cĂ©demment, ma clĂ© privĂ©e GPG a Ă©tĂ© utilisĂ©e pour dĂ©chiffrer le message (la passphrase est rĂ©clamĂ©e Ă  l’ouverture, sauf si vous avez demandĂ© la sauvegarde dans le gestionnaire).

Si je vais voir sur le webmail de mon hébergeur, il ne peut rien lire et propose le mail en piÚce jointe.

gpg5

Ma correspondance est désormais confidentielle !

Conclusion

Comme vous pouvez le constater, chiffrer ses emails est relativement simple mais nĂ©cessite une Ă©tape de prĂ©paration assez lourde. HĂ©las, ce moyen n’est clairement pas Ă  la portĂ©e de tous et restera employĂ© par quelques geeks et connaisseurs signifiant que l’utilisateur moyen devra garder en tĂȘte que l’email est aujourd’hui un moyen de communication dĂ©conseillĂ© pour la confidentialitĂ©. Bien que les annuaires de clĂ©s PGP soient disponibles en ligne, cela reste pour les initiĂ©s et le grand public se tournera plutĂŽt vers des solutions clĂ©s en main plus simplistes.

L’email est un des services Internet les plus anciens du rĂ©seau, et nous ne comptons plus les annonces dans le secteur qui promettent de rĂ©volutionner l’email considĂ©rĂ© comme “obsolĂšte” par certains… Mais obsolĂšte en quoi ?

ObsolĂšte parce qu’il est interopĂ©rable et ouvert Ă©videmment !

Il s’agit lĂ  d’un des rares protocoles de communication Ă  ne pas avoir Ă©tĂ© enfermĂ© dans tout un Ă©cosystĂšme propriĂ©taire non interopĂ©rable par un gĂ©ant du Web. On peut utiliser un client tiers pour Gmail, mĂȘme si Google fait tout pour dissuader et limiter ces usages (bah oui, utiliser les applications et webapp de tracking c’est plus intĂ©ressant pour eux), cela reste possible. L’email permet encore d’envoyer un message Ă  une personne qui a sa boite hĂ©bergĂ©e par Machin sans avoir besoin d’ĂȘtre soit-mĂȘme inscrit chez Machin (et prostituĂ© par Machin, accessoirement). Quand on prend du recul sur les usages d’Internet, c’est devenu vraiment marginal de voir encore une solution dĂ©centralisĂ©e utilisĂ©e aussi massivement !!

L’email a bien besoin d’une refonte technique, mais il est important de garder en tĂȘte que l’hyper centralisation des services Internet dans les mains d’une poignĂ©e d’acteurs n’est pas bon pour nous. Donc ne laissons pas ces grandes entreprises continuer de dĂ©truire l’espace de libertĂ© qu’est Internet. PrivilĂ©giez autant que possible les solutions dĂ©centralisĂ©es et chiffrĂ©es, et remettez toujours en question un formulaire d’inscription qui commence Ă  ĂȘtre un peu trop curieux sur vous.