Chiffrer ses mails avec gnupg dans KMail
Sommaire
- Pré-requis
- Introduction
- Installer les logiciels requis
- Générer votre paire de clés
- Configurer KMail
- Configurer gpg-agent
- Tester la configuration
- Importer les clés de vos correspondants
Pré-requis
Pour mettre en oeuvre cet article, il est préférable de maîtriser un minimum la configuration de KMail. De plus, un connaissance de base de la cryptographie (clé publique / clé privée) est conseillée.
Vous devez également avoir une version de KMail fonctionnelle (testé avec KMail 1.9, incluse avec KDE 3.5), certaines version antérieures doivent fonctionner également.
Introduction
Il circule sur l'Internet un nombre impressionnant d'e-mails tous les jours. La plupart de ces messages ne sont pas chiffrés, ce qui signifie en gros qu'ils peuvent être lus librement par toutes les personnes qui se trouvent sur son "passage".
En effet, il faut savoir qu'en général, un e-mail est stocké au moins deux fois sur un serveur tiers, a savoir, le serveur SMTP de votre FAI (fournisseur d'accès internet) ou de votre société, et celui du FAI de votre correspondant. Il peut également exister des relais entre ces deux serveurs. A chaque fois que le message transite par un de ces serveurs, il peut être lu!
Il existe une solution pour que ce ne soit plus le cas, chiffrer le message. Cet article montre comment mettre en place le chiffrement à l'aide de gnupg dans KMail. Gnupg est une implémentation libre de PGP.
Installer les logiciels requis
Voici la liste des logiciels que nous devons installer sur notre machine. La description d'installation concerne la distribution Gentoo, si vous utilisez une autre distribution, consultez sa documentation pour installer les logiciels en question.
Gnupg
C'est lui qui chiffre les mails. Pour l'installer, emergez-le:
emerge app-crypt/gnupgIl installera peut-être quelques dépendances...
Gpg-agent
Il n'est pas indispensable, mais permet d'éviter d'entrer son mot de passe à chaque écriture / lecture d'un message chiffré.
Comme il est actuellement dans la branche unstable, il faut l'ajouter à votre fichier /etc/portage/package.keyword avec les librairies libksba et libassuan. Créez le fichier si il n'existe pas et ajoutez les lignes suivantes à l'intérieur:
# Gnu PG agent app-crypt/gpg-agent dev-libs/libksba dev-lib/libassuanIl suffit ensuite de l'emerger comme ceci:
emerge app-crypt/gpg-agentVous aurez également besoin de pinentry-qt, que vous installerez ainsi:
USE="qt" emerge app-crypt/pinentry
Kgpg
C'est un utilitaire graphique de l'environnement KDE pour gérer vos clés publiques / privées et les clés publiques de vos correspondants. Il n'est pas nécessaire mais bien utile. Si il n'est pas déjà installé dans votre système, installez-le:
emerge kde-base/kgpg
Générer votre paire de clés
Pour lire et écrire des messages chiffrés, il vous faut deux clés, une dite publique, que vous transmetterez à votre correspondant, et l'autre privée, qui vous servira a déchiffrer le message. Pour les créer, il existe plusieurs solutions. La plus simple est d'utiliser Kgpg, si vous l'avez installé. Sinon, utiliser la ligne de commande. Les deux solutions sont expliquées ci-après:
La phrase codée
La phrase codée (ou mot de passe), sert à protéger votre clé privée, vous ne pourrez l'utiliser que si vous fournissez cette phrase codée.
Choisissez donc une phrase codée dont vous vous souviendrez, qui ne soit pas le même mot de passe que votre login etc...
Avec Kgpg
Lancez kgpg (tapez "kgpg" dans la fenêtre "Executer une commande" de kde ou utilisez un raccourci. Une fois lancé, allez dans le menu "Clefs" et choisissez "Générer une paire de clefs". Tapez votre nom et l'adresse e-mail qui sera utilisée avec cette clé. Laissez les autres options par défaut (pas d'expiration, taille à 1024, Algorithme DSA & ElGamal). Confirmez ensuite en cliquant sur "OK".
Vous devrez encore fournir une "phrase codée", (voir plus haut).
Avec l'outil en ligne de commande
Si vous n'avez pas installé kgpg, vous pouvez générer votre clé directement en ligne de commande. Lancez un émulateur de terminal (p. ex. Konsole), et tapez la commande suivante (soyez sûr d'être connecté avec le bon nom d'utilisateur, et pas en root!):
gpg --gen-keyChoisissez "DSA & Elgamal" comme type de clé (choix 1). Comme taille de clé, vous pouvez entrer 1024 (ou laisser à 2048 si vous le souhaitez).
Ne faites pas expirer votre clé en choisissant ensuite "key never expire" avec le choix 0. Confirmez avec y après.
Enfin, entrez votre non et votre adresse e-mail quand cela vous est demandé, puis la phrase codée (voir plus haut). La clé va ensuite se créer.
Configurer KMail
La première chose à faire, est d'aller dans les préférences de KMail (menu "Configuration" puis "Configurer KMail"). Dans la section sécurité, puis dans l'onglet "Modules de cryptographie", cocher "Open PGP".
Dans la section "Identités", modifiez l'identité que vous souhaitez utiliser pour chiffrer les mail, puis allez dans l'onglet cryptographie.
Cliquez sur "Modifier" situé à côté du champ "Clé de signature OpenPGP" et choisissez la clé que vous venez de créer. Faites la même chose avec le champ "Clé de chiffrement OpenPGP". Dans le champ "Format de messages chiffrés préféré", choisissez "OpenPGP/MIME" (ceci afin de crypter également les pièces jointes au message, ben oui, on est paranos jusqu'au bout !).
Ensuite, rendez-vous dans la section "Sécurité", dans l'onglet "Editeur". Séléctionnez les options suivantes:
"Toujours chiffrer vers soi-même", pour pouvoir lire les messages cryptés envoyés.
Les autres options sont laissées à votre libre choix. Consultez la documentation de KMail pour en savoir plus.
Configurer gpg-agent
Cette étape n'est pas obligatoire. Si vous ne souhaitez pas vous servir de gpg-agent, passez directement au chapitre "Tester la configuration" plus loin dans cet article. Vous pouvez également décider de l'installer plus tard!
Avec certaines distributions, comme Ubuntu (mais peut-être d'autres aussi), gpg-agent semble déjà installé et pré-configuré avec le paquet gnupg. Il vous suffira donc simplement d'éditer le fichier ~/.gnupg/gpg-agent.conf.
Gpg-agent vous permet de garder en mémoire pour un certain temps (que vous pouvez changer) votre phrase codée. Il ne vous sera donc plus nécessaire de la taper à chaque consultation ou envoi de mail chiffré. Reportez-vous au chapitre "Installer les logiciels requis" pour l'installer.
Pour la configuration, il faut dans un premier temps éditer le fichier ~/.gnupg/gpg.conf et décommenter (enlever le # devant la ligne) la ligne use-agent ou l'ajouter si elle n'existe pas.
Ensuite, créer un fichier ~/.gnupg/gpg-agent.conf, qui doit ressembler à ceci:
pinentry-program /usr/bin/pinentry-qt no-grab default-cache-ttl 1800
La dernière ligne contient le nombre de secondes durant lesquelles la phrase codée doit rester en mémoire. Ajoustez à votre goût, mais attention, plus le temps est long, plus vous courrez de risques!
Il reste encore a créer un script qui démarre automatiquement gpg-agent au login si il n'est pas déjà actif. J'ai trouvé le script qui suit à l'adresse http://jdurand.home.cern.ch/jdurand/cern_ca_and_mail/ et je l'ai juste adapté à ma configuration. Vous pouvez donc le télécharger ici. Placez le dans un répertoire de votre home directory (je mets personellement tous mes scripts dans ~/scripts/).
Créez ensuite le script gpg-agent.sh dans ~.kde/Autostart/ avec le contenu suivant:
#!/bin/bash /home/user/scripts/gpg-agent-start.shOu vous remplecerez bien sûr la ligne par le chemin de gpg-agent-start.sh! Rendez encore ce fichier executable avec la commande suivante:
chmod 700 ~/.kde/Autostart/gpg-agent.shEt lancez une fois la commande comme ceci:
cd ~ .kde/Autostart/gpg-agent.shEt voilà, votre gpg ne vous demandera plus trop souvent vore phrase codée ;-)
Tester la configuration
Il faut savoir que pour envoyer un message chiffré à l'un de vos correspondant, vous devez disposer de sa clé publique (voir plus bas comment l'importer, dans le chapitre "Importer les clés de vos correspondants". Si vous n'avez pas encore de clés publiques enregistrées (hormis la vôtre), envoyez-vous un mail chiffré à vous-même! Pour ceci, allez dans KMail et composez un message comme d'habitude, mais avant de l'envoyer, cliquez sur le cadenas dans la barre d'outils.
Le système vous demandera la clé à utiliser (si vous avez choisi l'option dans la configuration).
Quand vous le recevrez vous devriez pouvoir le lire (KMail l'encadre en bleu quand il est chiffré).
Vous pouvez désormais envoyer votre clé publique à vos correspondants (composez un message puis, dans le menu "Joindre" choisissez "Joindre ma clé publique"). Il faut que votre correspondant fasse de même pour que vous puissiez dialoguer en chiffré dans les deux sens!
Importer les clés de vos correspondants
Il existe là aussi deux solutions pour importer la clé publique de vos correspondants. La première, avec Kgpg, est graphique. La seconde en ligne de commande, avec gpg.
Avec Kgpg
Une fois que votre correspondant vous a envoyé sa clé publique (normalement sous forme d'un fichier texte), sauvegardez-le sur le disque dur. Lancez ensuite Kgpg.
Dans le menu "Clefs", choisissez "Importer une clef". Choisissez l'option "Fichier" et parcourez votre disque pour choisir le fichier.
Pour être en mesure d'envoyer un message crypté à votre correspondant, vous devez faire confiance à la clé. Une fois importée dans Kgpg, faite un clic droit sur la clé et choisissez "Modifier la clef". Dans le champ "Confiance dans le possesseur", choisissez "Donne une confiance absolue
Envoyez ensuite le message comme lors des tests du chapitre "Tester la configuration".
En ligne de commande
Une fois que votre correspondant vous a envoyé sa clé publique (normalement sous forme d'un fichier texte), sauvegardez-le sur le disque dur. Ouvrez ensuite un émulateur de terminal.
Pour importer la clé, tapez la commande suivante:
gpg --import /chemin/vers/la/cléVous pouvez vérifier que la clé a bien été importée ainsi:
gpg --list-keyEnsuite, il faut modifier la confiance de la clé, en tapant la commande:
gpg --edit-key EMAILRemplacez ici EMAIL par l'adresse e-mail retournée par gpg --list-key de la clé à modifier.
Le programme vous place ensuite dans un prompt. Tapez la suite de commande suivantes:
Command> trust Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) yVous pouvez alors quitter le programme (avec la commande "quit").
Envoyez ensuite le message comme lors des tests du chapitre "Tester la configuration".