Chiffrement des emails
Sécuriser ses communications
Notions théoriques
Pourquoi et comment chiffrer un email ?
Les emails sont un moyen de communication essentiel, mais ils circulent souvent en clair sur Internet, ce qui signifie qu’ils peuvent être interceptés et lus par des tiers malveillants.
Le chiffrement des emails permet de garantir la confidentialité et l’authenticité des messages échangés.
1. Le problème des emails non chiffrés
- Lorsqu’un email est envoyé sans chiffrement, son contenu peut être intercepté par un attaquant à différents points :
- Sur le réseau local (Wi-Fi public, entreprise).
- Sur les serveurs de messagerie (stockage temporaire).
- Lors du transit entre les serveurs.
- Un attaquant peut ainsi lire, modifier ou usurper l’identité de l’expéditeur.
2. Le chiffrement des emails avec la cryptographie asymétrique
Le chiffrement des emails repose sur la cryptographie asymétrique, qui utilise une paire de clés :
- Une clé publique (peut être partagée avec tout le monde).
- Une clé privée (secrète, connue uniquement du propriétaire).
Fonctionnement du chiffrement des emails :
- Le destinataire possède une clé publique.
- L’expéditeur utilise cette clé publique pour chiffrer l’email.
- Seul le destinataire, qui possède la clé privée correspondante, peut déchiffrer et lire le message.
3. Les protocoles de chiffrement des emails
Plusieurs technologies permettent de chiffrer les emails :
PGP (Pretty Good Privacy) / GPG (GNU Privacy Guard)
- Utilise la cryptographie asymétrique pour chiffrer et signer les emails.
- Fonctionne avec des logiciels comme GnuPG et des extensions pour les clients mail.
S/MIME (Secure/Multipurpose Internet Mail Extensions)
- Intégré dans certains clients de messagerie comme Outlook et Apple Mail.
- Utilise des certificats X.509 délivrés par une autorité de certification.
4. Signature numérique des emails
En plus du chiffrement, il est possible de signer numériquement un email :
- L’expéditeur signe l’email avec sa clé privée.
- Le destinataire vérifie la signature avec la clé publique de l’expéditeur.
- Cela garantit que l’email n’a pas été modifié et qu’il provient bien de l’expéditeur.
Exemple pratique
Chiffrement et signature d’un email avec GPG
Il est possible de chiffrer et signer un email en utilisant GPG (GNU Privacy Guard), un logiciel libre compatible avec PGP.
1. Générer une paire de clés GPG
Créer une paire de clés pour chiffrer et signer les emails :
gpg --full-generate-key
- Choisir RSA et une taille de 4096 bits.
- Définir une date d’expiration (optionnel).
- Entrer un nom et une adresse email.
- Définir un mot de passe sécurisé.
2. Exporter la clé publique pour la partager
Un destinataire doit posséder la clé publique pour chiffrer un email :
gpg --export -a "nom_utilisateur" > cle_publique.asc
3. Importer la clé publique d’un contact
Pour chiffrer un email destiné à un contact, importer sa clé publique :
gpg --import cle_publique_contact.asc
4. Chiffrer un message
Créer un fichier contenant un message :
echo "Message confidentiel" > message.txt
Chiffrer ce fichier pour un destinataire spécifique :
gpg --encrypt --recipient "email_du_destinataire" message.txt
Un fichier message.txt.gpg est créé et ne peut être lu que par le destinataire.
5. Déchiffrer un message reçu
Le destinataire peut déchiffrer le message avec sa clé privée :
gpg --decrypt message.txt.gpg
6. Signer un email pour garantir son authenticité
Signer un fichier avant de l’envoyer :
gpg --clearsign message.txt
Cela génère un fichier signé message.txt.asc.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
L’objectif de ce TP est de mettre en pratique le chiffrement et la signature des emails en utilisant GPG (GNU Privacy Guard).
Ce TP est divisé en plusieurs étapes détaillées pour apprendre à :
- Générer une paire de clés GPG.
- Exporter et importer des clés publiques.
- Chiffrer un message avant de l’envoyer.
- Déchiffrer un message reçu.
- Signer un message pour garantir son authenticité.
- Vérifier la signature d’un message reçu.
Étape 1 : Générer une paire de clés GPG
Avant de chiffrer ou signer un email, il est nécessaire de disposer d’une paire de clés (une clé publique et une clé privée).
Instructions :
- Ouvrir un terminal.
- Lancer la commande suivante pour générer une paire de clés :
gpg --full-generate-key
-
Sélectionner les options suivantes :
- Type de clé : Choisir RSA et RSA.
- Taille de clé : Entrer 4096 (plus sécurisé).
- Durée de validité : Entrer une durée ou appuyer sur Entrée pour une clé sans expiration.
- Nom et email : Entrer un nom et une adresse email.
- Mot de passe : Définir un mot de passe fort pour protéger la clé privée.
-
Une fois la clé générée, noter l’ID de la clé affiché à la fin.
- La commande
gpg --full-generate-key
permet de créer une paire de clés. - L’option RSA 4096 bits est recommandée pour une meilleure sécurité.
- L’ID de la clé est affiché à la fin et peut être retrouvé avec :
gpg --list-keys
Étape 2 : Exporter et importer des clés publiques
Une clé publique doit être partagée avec les contacts pour qu’ils puissent chiffrer des messages à destination de son propriétaire.
Exporter sa clé publique
- Exécuter la commande suivante en remplaçant
"nom_utilisateur"
par l’ID de la clé ou l’email utilisé lors de la création :
gpg --export -a "nom_utilisateur" > cle_publique.asc
- Vérifier que le fichier cle_publique.asc a bien été créé.
- Envoyer ce fichier à un contact ou le publier sur un serveur de clés publiques.
Importer la clé publique d’un contact
- Récupérer le fichier cle_publique_contact.asc d’un correspondant.
- Importer la clé avec la commande suivante :
gpg --import cle_publique_contact.asc
- Vérifier que la clé est bien importée :
gpg --list-keys
gpg --export -a
permet d’extraire la clé publique au format ASCII.gpg --import
ajoute une clé publique au trousseau.gpg --list-keys
affiche toutes les clés publiques importées.
Étape 3 : Chiffrer un message avant de l’envoyer
Un email peut être chiffré pour garantir sa confidentialité. Seul le destinataire possédant la clé privée correspondante pourra le déchiffrer.
Instructions :
- Écrire un message confidentiel dans un fichier texte :
echo "Ce message est secret et chiffré avec GPG." > message.txt
- Chiffrer ce fichier pour un destinataire spécifique (remplacer
"email_du_destinataire"
par l’email associé à la clé publique du destinataire) :
gpg --encrypt --recipient "email_du_destinataire" message.txt
-
Un fichier message.txt.gpg est créé. Ce fichier est illisible sans la clé privée du destinataire.
-
Envoyer message.txt.gpg au destinataire.
gpg --encrypt --recipient "email_du_destinataire"
chiffre un fichier avec la clé publique du destinataire.- Le fichier résultant message.txt.gpg ne peut être déchiffré que par le destinataire.
::
Étape 4 : Déchiffrer un message reçu
Lorsqu’un message chiffré est reçu, il doit être déchiffré avec la clé privée.
Instructions :
- Recevoir un fichier chiffré message.txt.gpg.
- Déchiffrer le message avec la commande suivante :
gpg --decrypt message.txt.gpg
- Le message s’affiche dans le terminal.
- Pour enregistrer le message dans un fichier :
gpg --output message_dechiffre.txt --decrypt message.txt.gpg
gpg --decrypt
permet de lire un message chiffré.gpg --output message_dechiffre.txt --decrypt
enregistre le message déchiffré dans un fichier.
Étape 5 : Signer un message pour garantir son authenticité*
La signature numérique permet au destinataire de vérifier que le message provient bien de l’expéditeur et qu’il n’a pas été modifié.
Instructions :
- Écrire un message dans un fichier texte :
echo "Message officiel signé numériquement." > message.txt
- Signer le fichier :
gpg --clearsign message.txt
-
Un fichier message.txt.asc est créé. Il contient le message ainsi qu’une signature numérique.
-
Envoyer message.txt.asc au destinataire.
gpg --clearsign
signe un fichier sans le chiffrer.- Le fichier signé message.txt.asc permet au destinataire de vérifier l’authenticité du message.
Étape 6 : Vérifier la signature d’un message reçu
Lorsqu’un message signé est reçu, il est possible de vérifier son authenticité.
Instructions :
- Recevoir un fichier message.txt.asc.
- Vérifier la signature avec la commande suivante :
gpg --verify message.txt.asc
- Si la signature est valide, le terminal affiche le nom et l’email de l’expéditeur.
- En cas de problème, un message d’erreur indique que la signature est incorrecte ou que la clé publique de l’expéditeur est inconnue.
gpg --verify
permet de vérifier qu’un message signé provient bien de l’expéditeur annoncé.- Si la clé publique de l’expéditeur n’est pas connue, il faut l’importer avant de vérifier la signature.