ARTICLES
Sécuriser ses emails avec PGP
By Valentin Bremond
Aujourd’hui, on va parler de chiffrement et d’emails. Parce que le cadenas vert dans votre navigateur Web, ça fait pas tout non plus.
C’est pas déjà chiffré les emails ? Pourtant j’utilise Gmail…
Si, c’est chiffré, mais que pendant le transport. C’est à dire que, quand vous envoyez un email, au moment où votre ordinateur contacte votre “fournisseur d’emails” (Gmail dans notre exemple), il établit une connexion chiffrée et lui donne le message à transmettre. Mais une fois que c’est parti chez Gmail, comment vous savez que Gmail discute bien avec le fournisseur d’emails du destinataire de manière confidentielle ? Gmail pourrait tout aussi bien discuter complètement en clair avec les serveurs de Yahoo (si le mail part chez Yahoo), rien ne l’en empêche. Bon, il s’avère qu’en pratique, très souvent, les fournisseurs d’emails discutent de manière chiffrée entre eux. Mais même si le transport est chiffré, le mail, lui, reste visible de tous les intermédiaires.
Notre but ici, c’est de chiffrer l’email qu’on envoie de sorte qu’uniquement le destinataire (et personne d’autre) ne puisse le lire (ni Gmail, ni Yahoo, ni la NSA un pirate qui écoute tout ce qui se passe sur les Internets).
Petit rappel rapide du chiffrement asymétrique
Si vous connaissez déjà, passez votre chemin, on va la faire rapidos.
Vous connaissez tous le chiffrement symétrique : on a un message qu’on veut chiffrer, on le chiffre avec une clé (= un mot de passe) : ce message chiffré ne pourra être lu qu’avec cette clé. Le chiffrement asymétrique, c’est un peu différent : on a 2 clés (une privée et une publique). On chiffre le message avec la clé publique et uniquement la clé privée pourra le déchiffrer. Vous donnez donc votre clé publique à tout le monde, comme ça tout le monde peut vous envoyer un message que vous serez le seul à pouvoir déchiffrer avec votre clé privée. Si vous le faites dans l’autre sens (si vous chiffrez avec votre clé privée), niveau vie privée ça sert à rien car tout le monde peut lire votre message. Par contre, vu que vous êtes le seul à pouvoir le chiffrer avec votre clé privée, tout le monde peut vérifier que ce message vient bien de vous. Vous venez donc de signer votre message. Et si vous faites les deux, ben vous avez un message chiffré signé.
Une fois que tous vos potes ont votre clé publique et que vous avez les clés publiques de tout le monde, vous pouvez envoyer des messages que seuls vos potes pourront lire et ils pourront vérifier que ces messages viennent bien de vous. Sympa non ?
Pas mal, comment je fais ?
Pour faire tout ceci, on va utiliser un standard qui existe depuis de nombreuses années : PGP (pour Pretty Good Privacy). Il y a plusieurs implémentations de ce standard (pour être précis, le standard est OpenPGP), mais la plus connue et la plus utilisée est GPG (pour Gnu Privacy Guard).
Oui, je sais, c’est complètement con d’avoir choisi des termes aussi proches, mais bon c’est comme ça.
Générer les clés PGP
PGP, c’est du chiffrement asymétrique, du coup il nous faut une paire de clés publique / privée.
C’est simple à faire :
1gpg2 --expert --full-gen-keyVous allez vous faire proposer tout un bordel de types de clés. Si vous voulez que ça marche chez tout le monde, utilisez RSA and RSA (default). Si vous voulez être à la pointe de la cryptographie, utilisez ECC and ECC. Autant en temps normal je vous aurai fortement conseillé d’utiliser des clés à courbe elliptique (ECC), autant dans le monde de PGP, ça ne bouge pas bien vite, et vous allez plus être emmerdés si vous prenez ECC. Je vous conseille donc, pour l’instant, de prendre du RSA (de toutes façons vous pouvez tout à fait avoir 2 paires de clés en parallèle, une RSA et une ECC, donc si un jour vous vous rendez compte que vous auriez dû prendre ECC, c’est pas grave, vous n’aurez qu’à regénérer des clés ECC).
Concernant la taille des clés RSA, si vous êtes parano, utilisez des clés 4096 bits. Sinon, comme tout le monde, utilisez des clés 2048 bits. Notez que si vous êtes à ce point parano, passez sur des clés ECC, vous aurez une sécurité plus importante pour des tailles de clés bien inférieures.
Mettez une expiration si vous le désirez. Le plus safe étant bien entendu de mettre une expiration courte et de faire tourner ses clés régulièrement. Dans notre cas, on peut ne pas mettre d’expiration, c’est pas la fin du monde.
Mettez enfin votre nom et email (laissez le commentaire vide si vous n’avez pas une bonne raison de mettre un commentaire - et si vous lisez cet article, c’est certainement votre cas). Choisissez enfin un bon mot de passe puis validez.
Choisissez un bon mot de passe puis validez.
Un bon mot de passe.
J’insiste. On ne parle pas du forum de doctissimo là. On parle de votre identité numérique. Si vous vous faites voler votre clé privée et que le type qui vous la vole peut s’en servir parce que votre mot de passe c’est “jaimelesfrites”, ce mec pourra se faire passer vraiment pour vous auprès de tous vos contacts. Et puis on est en 2017 merde. Vous savez que vous pouvez utiliser une phrase comme mot de passe aussi ? C’est plus facile à mémoriser et bien plus dur à retrouver.
Une fois les clés générées, vous devriez pouvoir les voir avec cette commande :
1gpg2 --list-keysUploader les clés sur un (ou des) serveur(s) de clés connu(s)
Avoir une paire de clés, c’est bien. Permettre aux gens de les connaître pour pouvoir s’en servir, c’est mieux. On va donc téléverser (oui, on dit comme ça “uploader” en Français) la clé publique sur des serveurs de clés officiels. Les serveurs vont avoir besoin de la version ASCII de la clé publique :
1gpg2 --armor --export votre@email.frVous n’avez plus qu’à soumettre ce gros pâté de texte aux serveurs suivants (liste non exhaustive) :
Une fois vos clés envoyées, quand quelqu’un voudra vous envoyer un email chiffré, il n’aura plus qu’à retrouver votre clé publique sur l’un de ces serveurs et chiffrer son message avec cette clé.
Configurer Thunderbird
Maintenant que vous avez vos clés prêtes à être utilisées, il faut que vous configuriez votre client mail pour qu’il puisse utiliser ces clés. Personnellement, j’utilise Thunderbird, donc je vais vous expliquer comment faire avec Thunderbird. Si vous faites partie de ces gens qui utilisent leur navigateur pour tout faire, il existe une extension Firefox / Chrome qui permet de chiffrer / signer ses emails sur les principales boîtes mails (dont Gmail) : Mailvelope (par contre je sais pas du tout ce qu’elle vaut, alors renseignez-vous un minimum avant de l’installer les yeux fermés).
Sur Thunderbird, il existe une extension qui fait tout le taff : Enigmail (vous la trouverez sur la page des add-ons, directement sur votre Thunderbird). Une fois installée, Enigmail vous trouvera votre clé PGP automatiquement. Vous pourrez choisir de signer et / ou chiffrer les emails lors de l’envoi mais aussi d’automatiquement récupérer les clés PGP des personnes à qui vous envoyez le mail (via les fameux serveurs de clés) : quand vous envoyez un mail chiffré à un destinataire dont vous ne connaissez pas la clé, Enigmail vous demande comment faire. Si vous lui demandez de télécharger les clés manquantes, il ira automatiquement les récupérer sur les serveurs de clés. Pratique !
Vous pourrez également importer les clés lorsque vous recevrez des emails signés directement depuis le mail reçu.
Alors par contre petite mise en garde : vous avez remarqué que personne n’a vérifié que l’email que vous avez utilisé dans votre clé vous appartient bien ? N’importe qui peut créer une clé avec n’importe quel email dedans et la téléverser sur les serveurs de clés. Si vous voyez 2 clés pour un seul email, demandez au vrai destinataire l’empreinte de sa clé et comparez avec les 2 empreintes des 2 clés. Mais une fois que vous avez validé une clé comme “bonne”, vous n’aurez plus ce souci.
Et si je me fais voler ma clé privée un jour ?
Si vous vous faites chourav votre clé privée, il faut que vous puissiez dire au reste du monde de ne plus utiliser votre clé privée compromise. Pour cela, on utilise un certificat de révocation :
1gpg2 --gen-revoke votre@email.frRépondez aux quelques questions, puis récupérez le texte entre les blocks -----BEGIN et -----END (y compris ces 2 lignes). Vous n’avez plus qu’à téléverser ce certificat sur les serveurs de clés précédemment cités pour que tout le monde puisse être au courant que la clé ne doit plus être utilisée.
Notez que c’est une bonne idée de générer ce certificat dès que vous générez votre clé et de le stocker dans un endroit sûr, comme ça si un jour vous perdez tout (vol de laptop par exemple), vous pourrez quand même envoyer ce certificat pour révoquer votre clé (parce que comme vous l’avez remarqué, vous avez besoin de votre clé privée pour générer le certificat de révocation).
Voilà !
Comme quoi, la sécurité, c’est pas bien compliqué.
Dernière précision avant que je ne termine cet article : je vais certainement enfoncer une porte ouverte, mais ne perdez pas votre clé privée. Si vous la perdez, vous ne pourrez jamais relire les mails chiffrés que vous avez reçu. Il n’y a pas de “question de récupération” ou de numéro à appeler en cas de problème. C’est de la cryptographie, si vous paumez votre clé, vous êtes baisé. Point.