Communiquons de façon sécurisée avec GPG
Comment être certain de ne pas communiquer avec un usurpateur ?
Comment être sûr que seul votre destinataire puisse comprendre ce que vous dites ?
Voilà les questions auxquelles répond GPG !
Petit indice: C’est une question de clés 🔑 !
C’est quoi GPG ?
Dans notre métier, il nous est régulièrement ammené à être en possession de différents accès (Applications métier, SSH, FTP…). Le problème c’est que généralement ces informations sont transmises dans un email ou dans une pièce jointe ou encore pour les plus aggueris à plusieurs endroits en même temps.
Mais ça ne suffit pas ! Ok, le client a confiance en moi et m’envoie ces accès mais qu’arrive-t-il si je me fais choco-blaster ? (je vous rassure ça ne m’arrive jamais mais…) Ça signifie que quelqu’un a eu accès à mes mails et par conséquent possiblement à des informations sensibles…
C’ests là que GPG peut nous sauver !
GPG (GNU Privacy Guard) est une implémentation d’une norme nommée OpenPGP (Pretty Good Privacy).
Cet outil a pour but de signer 🔏 et de chiffrer 🔐 des données.
Par où commencer ?
Installer GPG
Déjà, installer GPG est déjà un bon début ! Je vous laisse suivre les instructions en fonction de votre OS directement sur le site de gnupg.org. Sachez que GPG arrive déjà intégré sur un bon nombre de distributions Linux.
Note: Dans cet article j’utilise les lignes de commandes pour mieux comprendre ce qu’il se passe mais sachez qu’il existe des utilitaires en interface graphique (comme Gpg4win) permettant de faciliter l’utilisation au quotidien de cet outil.
Créer votre identité
La première étape consiste à générer une paire de clé qui vous représentera vous personnellement.
Pour cela rien de plus simple :
$ gpg --full-generate-key
Pour le 1er choix, on répondra la valeur par défaut (1) RSA and RSA (default)
.
Pour le second, on choisira 3072 ou 4096 (si vous voulez que votre clé soit valable au delà de l’an 2030).
Ensuite nous choisirons que notre clé principale n’expirera pas. (0)
Puis on spécifie son nom et son adresse email personnelle.
Real name: Jimmy Hendrix
Email address: jimmy.hendrix@tld.com
Et on obtient :
public and secret key created and signed.
pub rsa4096 2020-06-28 [SC]
66A455F065F598312CA70DC39059FCDD205B467A
uid Jimmy Hendrix <jimmy.hendrix@tld.com>
sub rsa4096 2020-06-28 [E]
Ce message nous informe que nous avons deux clés pub
et sub
qui permettent respectivement de signer ([SC]
Sign/Cert) et de chiffrer ([E]
Encrypt).
Ça y est ! Vous vous êtes créé votre première identité GPG, félicitations 🎉 !
Échanger un message avec quelqu’un
Exporter sa clé publique
La première chose à faire est d’échanger votre clé publique avec votre destinataire.
Pour cela, on commence par exporter notre clé publique.
On liste les clés que nous avons dans notre pubring (répertoire de clé) et particuliièrement celles dont on dispose d’une clé privé.
$ gpg --list-secret-keys
sec rsa4096 2020-06-28 [SC]
66A455F065F598312CA70DC39059FCDD205B467A
uid [ultimate] Jimmy Hendrix <jimmy.hendrix@tld.com>
ssb rsa4096 2020-06-28 [E]
On copie l’identifiant de notre paire de clé66A455F065F598312CA70DC39059FCDD205B467A
dans cet exemple
Puis on l’exporte :
$ gpg --export --armor 66A455F065F598312CA70DC39059FCDD205B467A > jimmy.hendrix.gpg
Le --armor
permet d’exporter au format ascii, plus facile à interpréter et passe mieux les antivirus, que le format binaire exporté par défaut.
Échanger sa clé avec son destinataire
Vous pouvez envoyer votre clé publique (fichier .gpg) à votre destinataire par email, message instantanné ou bien même par pigeon voyageur si cela vous chante. Ce n’est pas grave si votre clé se fait intercepter par quelqu’un car, comme son nom l’indique, elle est publique !
Lorsque votre destinataire vous a envoyé sa clé publique, il va falloir que vous l’importiez dans votre pubring.
$ gpg --import charles.de-gaulle.gpg
Valider que c’est bien la clé de votre destinataire
Si il y a bien une étape à ne pas négliger, c’est celle-ci !
Elle permettra de répondre à la question “Comment ne pas communiquer avec un usurpateur ?”.
On commence par éditer la clé.
$ gpg --edit-key charles.de-gaulle@lafrance.fr
On affiche le fingerprint en tappant fpr
puis on s’appelle au téléphone ou on se voit IRL afin de vérifier le fingerprint affiché.
Il est important lors de cette étape d’être absolument certain de parler à la bonne personne.
pub rsa4096/9059FCDD205B467A 2020-06-28 Jimmy Hendrix <jimmy.hendrix@tld.com>
Primary key fingerprint: 66A4 55F0 65F5 9831 2CA7 0DC3 9059 FCDD 205B 467A
Lorsque chacun a vérifié le fingerprint de l’autre, on signe la clé de son destinataire avec la nôtre !
Pour ça rien de plus simple, on entre sign
! Et on sauvegarde les changements en entrant save
.
Chiffrer un message
Maintenant que nous faisons confiance à la clé publique de notre destinataire, on peut lui chiffrer un message !
$ echo "Les sanglots longs des violons de l’automne" > message-secret.txt
$ gpg --output message-secret.txt.gpg --encrypt --recipient charles.de-gaulle@lafrance.fr message-secret.txt
Et on peut envoyer notre fichier message-secret.txt.gpg
!
Il est posssible de spécifier plusieurs destinataires, il suffira de renseigner plusieurs fois l’option --recipient
.
Exemple :
$ gpg --output message-secret.txt.gpg --encrypt --recipient charles.de-gaulle@lafrance.fr --recipient jimmy.hendrix@tld.com message-secret.txt
Dans ce cas, on pourra nous aussi déchiffrer le message. On peut désormais supprimer le fichier d’origine (en utilisant shred --remove
par exemple) pour n’en garder aucune trace en clair.
Sachez que lorsque vous chiffrez un message, vous le signez par la même occasion. Vous pouvez par ailleurs seulement signer un message en utilisant gpg --output message-signé.txt --clearsign message.txt
.
Déchiffrer un message
Pour déchiffrer rien de plus simple :
$ gpg --output message-secret.txt --decrypt message-secret.txt.gpg
Il va nous demander le mot de passe de notre clé privée pour déchiffrer le contenu du fichier et voilà ! Nous obtenons notre fichier message-secret.txt
déchiffré.
Alors heureux ?
Vous savez désormais signer et chiffrer un fichier texte et faire en sorte que seul votre destinataire puisse lire votre message. C’est pas beau ça ? Il n’y a plus qu’à informer les personnes autour de soi que GPG existe et qu’il est très efficace particulièrement pour communiquer des données sensibles.
Pour devenir un boss du game
Dans un prochain article, j’aborderais la notion de confiance, les serveurs de clé, et bien d’autres mécaniques très utiles pour utiliser GPG au quotidien.
En attendant, je vous laisse un petit lien très intéressant qui vous permettra d’améliorer vos connaissances sur le sujet: Le manuel d’utilisation officel de GPG [FR]