Pour faire court. Si on veut s’échanger des mails sécurisés, on se crée une clé avec gpg (GnuPG), qui contient deux éléments principaux :

  • une clé privée
  • une clé publique

Une fois cette clé créée, on envoie, ou on met la clé publique à disposition de personnes qui pourraient vouloir nous envoyer des messages chiffrés. Ces personnes vont pouvoir chiffrer leur message avec cette clé publique. Une fois que je reçois ces messages venus de ces personnes, je vais pouvoir les déchiffrer en utilisant ma clé privée. Comme un petit coeur dont on réunit les deux bouts pour ouvrir la boite à bonbons. Et, donc, cela nous assure qu’il n’y a que nous qui puissions accéder aux bonbecs.

Résumé

Jean envoie | écrire mail ---> chiffrement -------------> dans les tuyaux ---------> réception ---> déchiffrement | Marie reçoit
------------|-----------------------------------------------------------------------------------------------------|
                               clé publique Marie                                                    clé privée Marie
  • Clé publique — Utilisée pour chiffrer les messages. Elle peut et devrait être à la disposition de tous.
  • Clé privée — Utilisée pour déchiffrer les messages. Elle doit être stockée de façon sécurisée sur votre ordinateur. L’accès à votre clé privée est aussi protégé par le mot de passe que vous avez choisi lors de la création de la clé.

Anatomie d’une clé GPG

Un exemple de clé

pub   rsa3072 2020-02-15 [SC] [expire : 2022-02-15]
      59F4 A04B F874 5D7E 99A1 BC9A 82BC 8E19 118F D0F9
uid          [  ultime ] Jean Dupont <salut@jndpnt.fr>
uid          [  ultime ] Jean Dupont <jean@dupont.fr>
sub   rsa3072 2020-02-15 [E] [expire : 2022-02-15]
# on a d'abord le type de clé (rsa), et sa force (3072). Puis la date de création et la date d'expiration
pub   rsa3072 2020-02-15 [SC] [expire : 2022-02-15]
# ici, c'est l'empreinte (fingerprint) de la clé. Cette empreinte sert à identifier la clé publique
     59F4 A04B F874 5D7E 99A1 BC9A 82BC 8E19 118F D0F9
# une première identité gérée par cette clef
uid          [  ultime ] Jean Dupont <salut@jndpnt.fr>
# dans la même clé, on a une autre identité (un autre mail)
uid          [  ultime ] Jean Dupont <jean@dupont.fr>
# et ça, c'est la subkey. Je ne sais pas trop ce que c'est, ça reprend les infos de type, force et dates de création/expiration
sub   rsa3072 2020-02-15 [E] [expire : 2022-02-15]

On peut avoir des informations encore plus complètes sur la clé en faisant

gpg -a --export {keyid} | gpg --list-packets --verbose

Plus de détails sur l’anatomie d’une clef ici : https://davesteele.github.io/gpg/2014/09/20/anatomy-of-a-gpg-key/

Créer une clé

gpg --gen-key # générer une paire de clés (publique + privée)

L’id de la clé correspond aux 8 derniers chiffres de la chaîne pub (e.g. 587F5G8N)

Créer un certificat de révocation

Ce certificat permet d’informer ceux qui possèdent notre clef publique, dans le cas où notre clef serait corrompue e.g.

gpg --gen-revoke {keyid}

On peut générer ce certificat directement dans un fichier

gpg --gen-revoke mon_id >.gnupg/revoque.macle

On peut ensuite révoquer, si on a un problème : plus d’infos ici > https://docs.abuledu.org/abuledu/mainteneur/creer_une_cle_gpg#revoquer_une_cle_avec_un_certificat_de_revocation

L’idée, c’est ensuite de garder ce fichier ailleurs, sur un autre support physique

Publier sa clé

En plus de donner sa clé publique pour que les gens nous écrivent des mails sécurisés, on peut la publier sur un des servurs qui gèrent l’annuaire d’identités. Il y a pgp.mit.edu

gpg --keyserver pgp.mit.edu --send-keys {keyid} # envoyer une clé
gpg --keyserver pgp.mit.edu --search-key '{email}' # vérifier que la clé est disponible

Exporter une clef publique

On peut afficher sa clé publique en faisant gpg --armor --export {email} (--armor permet de l’affiche en ASCII)

gpg --armor --export {email} > output.asc

On peut ensuite la mettre à disposition sur un serveur, par exemple.

Gestion des clés

Soit avec Seahorse (GUI pour gestion des clés) sudo apt-get seahorse

En ligne de commande, on utilise gpg

gpg --list-keys # lister les clés

Éditer une clé

gpg --edit-key {keyid}

Puis, on atterrit sur

gpg > 

On peut, par exemple, ajouter une identité

gpg > adduid # et on se retrouve sur le processus de création d'identité (nom, puis email, puis description)

Sauver & quitter

gpg > save
gpg > quit

Voir https://www.gnupg.org/gph/en/manual/r899.html pour voir le détail de la commande --edit-key.

Utiliser clé w/ Mutt

Écrire un mail. Ensuite, on attache une clé au mail : Esc+K. On renseigne l’id de la clé pour l’associer. Puis, on chiffre et on signe le mail > P, puis on choisit l’option.

Ecrire un mail chiffré à quelqu’un

On doit d’abord obtenir sa clé publique (fichier .asc e.g.). Puis, on l’ajoute à notre base de clefs.

gpg --import {recipient-publickey.asc}

Ensuite, on écrit son mail. Puis, on attache la clé publique du destinataire Esc+K, et on chiffre et signe le message p, puis d

Copie du message sent/ : Il faut activer l’option fcc_clear de mutt pour pouvoir lire les messages envoyés (effectivement, ils sont chiffrés avec la clé publique du destinataire, donc illisibles pour nous).

# muttrc
set fcc_clear=yes

Source : https://stackoverflow.com/questions/47729099/how-to-store-decrypted-sent-messages-with-mutt-pgp

Ressources