Par Catageek, dimanche 7 septembre 2008 à la maison :: Sécurité informatique :: Lien permanent
Voici une méthode réservée aux initiés, heureux possesseurs d'une plate-forme Linux connectée à Internet, qui permet de chiffrer tous les emails reçus avant qu'ils n'arrivent sur les serveurs de Google. Un vrai pied de nez (voire un doigt...) au monstre tentaculaire Google, qui a peu de scrupule quant à la protection de la vie privée. il s'agit en fait d'un proxy POP3 chiffrant mis en coupure, que Gmail interrogera régulièrement pour récupérer les messages reçus et les placer dans la boite de réception.
J'utilise ce système depuis 1 an maintenant, sans aucun problème. Explications.
Si vous êtes arrivé sur ce tutoriel, c'est que vous êtes probablement utilisateur de Gmail. Connaissez-vous la fonctionnalité de récupération des messages sur un autre compte, via connexion POP ? C'est dans l'onglet Comptes
, rubrique récupérer les messages d'autres comptes
. Vous indiquez là les données de connexion du compte à consulter via un serveur POP, et Gmail récupérera les messages toutes les 15 minutes environ, et les mettra dans la boite de réception.

Imaginez maintenant que le serveur POP à consulter vous appartienne, et que vous décidiez quels messages doivent être transmis à Gmail, autrement dit vous pouvez placer vous-même les messages dans la boite de réception Gmail, en les chiffrant avant, tant que vous y êtes...
Imaginez que votre serveur POP est également un client POP qui récupère les messages sur un autre compte vous appartenant, chez un autre fournisseur X beaucoup plus respectueux de la vie privée, dans votre pays par exemple. C'est ce qu'on appelle un proxy. Le proxy envoit à Gmail les messages reçus sur le serveur POP du fournisseur X. Tous les messages transitent par lui.

Si le proxy chiffre les messages à la volée durant le transfert, vous obtenez un proxy chiffrant transparent. Vos messages arrivant sur votre compte du fournisseur X sont transférés sous forme chiffrée dans la boite de réception Gmail. Et vous, vous n'avez rien à faire.
Les fichiers produits sont compatibles avec le format S/MIME supporté par de nombreux lecteurs de courrier (Outlook, Thunderbird,...), et sont lisibles sur Gmail avec le plugin Gmail/SMIME.
Pour résumer, vous avez besoin :
- d'un compte mail accessible en POP chez un fournisseur X
- d'une plate-forme Linux connectée en permanence à internet, avec une IP fixe ou une adresse DNS, qui jouera le rôle de proxy transparent chiffré.
Mise en place du proxy
Le proxy est composé de deux applications. La première est un proxy POP modulaire, p3scan, que vous devez installer. La seconde est le module de chiffrement de ma composition, progammé en shell, et utilisant openssl et coreutils.
Configuration du proxy
Au début du script de chiffrement, vous devez renseigner la variable MY_PUBLIC_KEY avec le chemin du fichier contenant votre clé publique de chiffrement.
Vous devez également renseigner les paramètres de /etc/p3scan/p3scan.conf :
targetip = IP du serveur POP du fournisseur X targetport = 110 scannertype = bash scanner = /chemin/vers/chiffre_mail.sh
p3scan écoute sur le port 8110 par défaut, mais vous pouvez changer cette valeur dans le fichier p3scan.conf (j'ai mis 995).
Démarrer p3scan.
Création et installation des clés de chiffrement
On commence par générer la paire de clés RSA de 2048 bits. On ne protégera pas la clé privée par un mot de passe.
Nous initialisons le générateur de clé d'openssl avec une graine de 1024 caractères tirés de /dev/random.
$ mkdir -p ~/ssl $ mkdir -p ~/ssl/private $ chmod 700 ~/ssl/private $ cd ~/ssl/private $ head -c 1024 /dev/random > seed_rsa $ openssl genrsa -rand seed_rsa -out chiffrement_priv.key -aes256 2048 1024 semi-random bytes loaded Generating RSA private key, 2048 bit long modulus ...................+++ .....+++ e is 65537 (0x10001) Enter pass phrase for chiffrement_priv.key: Verifying - Enter pass phrase for chiffrement_priv.key: $
On supprime le mot de passe
$ openssl rsa -in chiffrement_priv.key -out chiffrement_priv.key Enter pass phrase for chiffrement_priv.key: writing RSA key $
On extrait la clé publique dans un fichier à part
$ openssl rsa -pubout -in chiffrement_priv.key -out ../chiffrement_pub.key writing RSA key $
C'est le chemin du fichier chiffrement_pub.key qu'il faut mettre dans la variable MY_PUBLIC_KEY.
Fabrication du certificat
Pour lire nos messages, nous avons besoin d'un certificat de type pkcs12 à importer dans l'application (Thunderbird, Outlook, Gmail S/MIME,...). Nous allons produire un certificat auto-signé pour simplifier au maximum l'opération.
$ openssl req -new -x509 -days 3650 -key chiffrement_priv.key -out your_email@gmail.com.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.- Country Name (2 letter code) FR: State or Province Name (full name) : Locality Name (eg, city) : Organization Name (eg, company) : Organizational Unit Name (eg, section) : Common Name (eg, YOUR name) :your_email@gmail.com Email Address : $
Nous obtenons un certificat au format PEM que nous transformons en certificat PKCS#12 :
$ openssl pkcs12 -export -in your_email@gmail.com.pem -inkey chiffrement_priv.key -out ../your_email@gmail.com.p12 Enter Export Password: Verifying - Enter Export Password: $
Le certificat your_email@gmail.com.p12 doit être importé dans votre outil de lecture de mail préféré.
Paramétrage de Gmail
Dans la gestion des paramètres de votre compte Gmail, ouvrez l'onglet Comptes
puis la rubrique récupérer les messages d'autres comptes
. Indiquez l'adresse IP de votre proxy, ou son adresse DNS, ainsi que le port d'écoute de votre proxy. Pour les identifiants de connexion, indiquez ceux de votre compte chez le fournisseur X (login et mot de passe).

Test
Envoyez un email à vous-même sur votre adresse chez le fournisseur X, et surveillez l'historique des connexions de récupération des messages sur votre interface Gmail. Au bout de quelques minutes, vous verrez apparaître votre message dans la boite de réception Gmail.
Mise en production
Si le test est concluant, vous pouvez maintenant chiffrer l'ensemble des messages à venir, de deux façons différentes :
- Vous oubliez votre adresse Gmail et n'utilisez plus que votre adresse chez le fournisseur X pour communiquer. Vos correspondants utiliseront automatique cette adresse.
- Vous établissez une règle de transfert permanent de tout vos messages de Gmail vers l'adresse du fournisseur X, avec suppression de l'original. Ceci est beaucoup moins sûr car Gmail conserve une copie de l'original non chiffré dans la corbeille pendant 30 jours.

Commentaires
Aucun commentaire pour le moment.
S'abonner au fil rss des commentaires de ce billet
Ajouter un commentaire