Ce billet présente l’utilisation de GnuPG sous Ubuntu pour chiffrer ses fichiers, ses mails ou sa messagerie instantanée. Tout ceci sans jamais passer par la ligne de commande.

Principe

Je ne vais pas expliquer comment fonctionne le chiffrement, c’est déjà bien expliqué sur wikipedia. Il est important de comprendre le principe.
Il y a également ce site (en .gouv.fr) qui est sympa pour débuter.

Pour résumer, si A possède une clé publique Apub et une clé privée Apriv, si B possède une clé publique Bpub et une clé privée Bpriv. et si A envoie un message à B :

  • A peut chiffrer son message pour B en utilisant Bpub ;
  • A peut signer son message en utilisant Apriv ;
  • B peut déchiffrer le message reçu de A en utilisant Bpriv ;
  • B peut vérifier la signature du message reçu de A en utilisant Apub.

Créer sa paire de clés

menu_chiffrement
Pour créer sa paire de clés (une clé publique et une clé privée) :

  • ouvrir Applications → Accessoires → Mots de passe et clés de chiffrement ;
  • dans la fenêtre qui s’ouvre, cliquer sur Fichier → Nouveau… (Ctrl+N) ;
  • choisir « Clé PGP (utilisée pour chiffrer les courriels et les fichiers) » et cliquer sur Continuer.

Quelques informations sont demandées :
gpg_new_key
Personnellement, je préfère décocher « N’expire jamais », et faire expirer la clé au bout de deux ans, on ne sait jamais…

Il ne reste plus qu’à cliquer sur Créer, une phrase de passe (un long mot de passe) est demandée, et les clés sont générées. Une nouvelle ligne apparaît alors dans « Mes clés personnelles » :
seahorse
Si vous avez plusieurs e-mails et/ou adresses Jabber, vous pouvez les rajouter en cliquant droit sur votre clé, Propriétés, Noms et signatures.

Une fois créée, je vous conseille de garder une copie du répertoire ~/.gnupg, qui contient votre clé privée, sur un support externe (une clé USB).

Déverrouiller la clé privée durablement

Il est possible de laisser la clé déverrouillée pendant un certain temps après avoir tapé la phrase de passe. Cela évite de la retaper à chaque fois.
Pour changer ce comportement, il faut aller dans Système → Préférences → Chiffrement et trousseaux, dans l’onglet « Phrases de passe PGP » :
gpg_unlock

Exporter sa clé publique

Maintenant que nous avons créé notre paire de clés, il faut que notre clé publique soit accessible à ceux avec qui nous souhaitons communiquer.

Il suffit pour cela de sélectionner la clé et de cliquer sur le bouton Exporter… : la clé publique sera alors exportée dans un fichier portant l’extension .asc. Il ne reste plus qu’à envoyer ce fichier par n’importe quel moyen (mail, messagerie instantanée, clé USB…). Une fois ce fichier reçu, notre contact n’aura qu’à double-cliquer dessus (à partir du navigateur de fichiers) ou l’importer dans Fichier → Importer… (Ctrl+I).

Il est également possible de l’exporter dans le presse-papier, pour pouvoir la coller n’importe où avec Ctrl+V, sans passer par un fichier : il suffit pour cela de cliquer-droit sur la clé, puis de cliquer sur « Copier ».

Pour une diffusion plus globale, il existe des serveurs de clés : ils répertorient les clés publiques de tout le monde. Par exemple, il est possible de publier sa clé sur http://pgp.mit.edu, en y copiant le contenu du fichier .asc exporté.
Attention : une clé publiée ne sera jamais supprimée du serveur, elle pourra simplement être révoquée, en créant un certificat de révocation, indiquant à tous que votre clé est invalide. Ne publiez donc que votre clé « définitive ».
Il est également possible de configurer le gestionnaire de clés pour qu’il les publie et synchronise directement, en activant dans Édition → Préférences → Serveurs de clés → « Publier les clés sur… ».

Grâce à ces serveurs de clés, il est facile de trouver la clé publique d’une personne directement dans le gestionnaire de clés. Il faut cliquer sur le bouton « Chercher des clés distantes… » et taper le nom de la personne, son mail ou l’identifiant de sa clé (la suite de 8 caractères hexadécimale qui apparaît dans la liste des clés) :
gpg_search
Et le résultat :
gpg_results
(la première est barrée car c’était mon ancienne clé, que j’ai révoquée lorsque mon ordinateur a été volé)
Il ne reste plus qu’à cliquer sur Importer.

Signer les clés obtenues de confiance

Une fois la clé d’un contact récupérée, il est possible de la signer pour indiquer qu’on a confiance en cette clé. Certains logiciels n’acceptent d’ailleurs que les clés de confiance. Pour cela, dans l’onglet « Autres clés obtenues » du gestionnaire de clés, il faut cliquer-droit sur une clé, puis « Signer la clé… » :
gpg_sign_key
(si vous ne connaissez pas la personne « en vrai », n’hésitez pas à choisir « Pas du tout » à la question posée)

Voilà, maintenant tout est en place, nous pouvons commencer à chiffrer et à signer.

Chiffrer et signer des fichiers

C’est très simple : il suffit de cliquer-droit sur un fichier, et de choisir Chiffrer ou Signer :
gpg_contextual_menu
Ces fonctions nécessitent le paquet seahorse-plugins, qui n’est plus installé par défaut dans Ubuntu 9.10).

Chiffrer

L’outil de chiffrement demande les destinataires qui pourront déchiffrer le fichier (avec leur clé privée). Tous ceux n’étant pas dans la liste des destinataire n’auront aucun moyen de déchiffrer le fichier ; en particulier, il peut être utile de s’ajouter en destinataire.
Il est également possible de signer le fichier en même temps (pour que celui qui le déchiffre soit sûr de l’identité de celui qui l’a chiffré).
gpg_encrypt
Il ne reste plus qu’à cliquer sur Valider. Lorsque l’on choisit de signer le fichier en même temps, la phrase de passe de la clé privée est demandée. Ensuite, le fichier est chiffré dans un nouveau fichier portant l’extension .pgp (alors qu’en ligne de commande, cela crée un fichier .gpg, mais peu importe).

Pour le déchiffrer, il suffit de double-cliquer dessus.

Signer uniquement

L’outil de signature demande avec quelle clé nous souhaitons signer (utile si plusieurs utilisateurs utilisent chacun une clé), demande ensuite la phrase de passe (pour déverrouiller la clé), et crée la signature dans un fichier portant l’extension .sig.

Pour vérifier la signature, il suffit de double-cliquer sur ce .sig, une notification indiquera si la signature est valide :
gpg_verif_sign
Si le fichier est assez volumineux, cela peut prendre un moment (20 ou 30 secondes), et parfois aucune fenêtre ne s’ouvre indiquant que la vérification est en cours, ce qui est assez perturbant ; mais le processeur, lui, tourne bien à plein régime pour vérifier la signature.

Chiffrer et signer des e-mails (avec Evolution)

Dans Evolution (le gestionnaire de mails par défaut sous Ubuntu), il faut associer la clé que nous avons créée avec le compte mail. Pour cela, ouvrir le menu Édition → Préférences → Comptes de messagerie, sélectionner le compte de messagerie auquel associer la clé, et cliquer sur Édition. Dans l’onglet « Sécurité », recopier l’identifiant de la clé en question, et valider.

Ensuite, lors de la rédaction d’un message, il est possible d’activer la signature et le chiffrement :
gpg_evolution_mail
Pour que le chiffrement fonctionne, il faut évidemment avoir dans le trousseau de clés les clés publiques de tous les destinataires du mail.

Lorsque nous recevons un message chiffré et/ou signé, Evolution vérifie la signature et déchiffre le mail. Pour l’illustrer, je me suis envoyé à moi-même un message chiffré et signé, lorsque je l’ouvre, Evolution me demande la phrase de passe (pour déchiffrer le message), et ensuite me l’affiche de cette manière :
gpg_evolution_received

Chiffrer ses communications Jabber (avec Gajim)

Il est préférable d’utiliser OTR pour la messagerie instantanée, GPG n’est pas approprié.

Dans gajim (le client Jabber de référence), il faut associer la clé avec le compte Jabber. Pour cela, ouvrir le menu Édition → Comptes, sélectionner le compte, et dans l’onglet « Informations personnelles », choisir la clé à associer. Au passage, activer la case « Utiliser un Agent GPG ».

Une fois la clé associée au compte, gajim va toujours se connecter en « signant la présence ». Et qui dit signature dit déverrouillage de la clé privée, et donc demande de la phrase de passe à chaque démarrage de gajim. Il est possible de désactiver la signature de la présence : Édition → Préférences, onglet « Avancées » → « Éditeur de configuration avancé » → Ouvrir… et faire passer gpg_sign_presence à « Désactivé ».

Ensuite, il faut avoir les clés publiques des contacts avec qui nous souhaitons communiquer de manière chiffrée. Ces clés doivent être « de confiance » (voir la section « Signer les clés obtenues de confiance » au début de ce billet). Pour assigner une clé à un contact Jabber, il faut cliquer-droit sur ce contact, Gérer le Contact → Assigner une clé OpenPGP… :
gpg_gajim_assign

Ensuite, lors de la conversation, il est possible d’activer le chiffrement :
gpg_gajim_enable

Inutile de vous dire que pour la messagerie instantanée, il vaut mieux avoir configuré le trousseau pour que la clé soit déverrouillée durablement, afin de ne pas retaper la phrase de passe à chaque message (voir la section « Déverrouiller la clé privée durablement » au début de ce billet).

Seahorse-applet : l’applet Gnome

Un applet Gnome permet de chiffrer, déchiffrer et signer le presse-papier. Sachant que le presse-papier contient ce qui est surligné avec la souris (ou ce qui est copié avec Ctrl+C), c’est parfois bien pratique. Pour l’ajouter, il faut cliquer droit sur un panel de Gnome (la barre du haut par exemple), puis « Ajouter au tableau de bord… », et l’ajouter :
gpg_gnome_applet
gpg_import_key
Petit plus, lorsque le presse-papier contient une clé, l’applet permet de l’importer directement dans le trousseau de clés. Une fois que vous avez ajouté l’applet, essayez de sélectionner tout le texte de cette page (c’est ma clé publique) :
Ensuite, cliquez sur le bouton de l’applet : vous pourrez importer ma clé directement.

Merci à cyril pour cette astuce :-)

Aller plus loin

Pour plus d’infos sur l’outil gpg, rendez-vous sur le site officiel (en anglais) sur sur la doc ubuntu-fr.
Vous pouvez également consulter man gpg pour l’utiliser en ligne de commande.

Pour chiffrer son dossier personnel (/home), c’est ici.