OpenPGP et GnuPG

Objectifs

  • Découvrir le standard OpenPGP ;

  • Savoir utiliser GnuPG.

Mise en situation

Il existe de nombreux algorithmes de chiffrement avec pour chacun des utilisations ciblées : échange d'informations et signatures typiquement. Pour faciliter les communications, il est nécessaire d'utiliser des standards assurant un bon niveau de sécurité, c'est à dire qui garantissent que le décryptage est difficile.

Parmi les nombreux standards existants pour les protocoles cryptographiques, l'un est devenu très répandu : OpenPGP.

Le logiciel GnuPG ou GPG (pour GNU Privacy Guard) est une implémentation libre du standard OpenPGP. Ce logiciel réputé très robuste est largement utilisé sur tous les systèmes d'exploitation actuels.

FondamentalOpenPGP

OpenPGP est un format de cryptographie permettant de standardiser messages, chiffrement et signatures. Ce système cryptographique est dit « hybride » car il a recours à la fois à de la cryptographie symétrique et à de la cryptographie asymétrique.

À la manière des chiffrements uniquement asymétriques, l'OpenPGP demande l'utilisation d'une clé publique et d'une clé privée (qui sera protégée par une phrase de passe). Ainsi, le fonctionnement extérieur de l'OpenPGP ressemblera de très près aux protocoles asymétriques bien qu'il y ait des recours à de la cryptographie symétrique.

ComplémentOrigine du standard

Le nom de ce standard vient du logiciel PGP (Pretty Good Privacy) qui était l'outil historique d'échange sécurisé de données. Il a été développé au début des années 90 par P. Zimmermann. Aujourd'hui la société a été rachetée et de plus en plus de monde se tourne vers l'alternative libre Gnu Privacy Guard (aussi nommé GnuPG ou GPG).

Utilisations classiques d'OpenPGP

Il y a trois utilisations très répandues d'OpenPGP :

  • Envoi sécurisé de documents ou de messages : il permet de chiffrer des messages ou des fichiers quelconques.

  • Signature : il peut produire des signatures permettant de vérifier l'identité de l'expéditeur. La signature est vérifiée par le destinataire grâce à la clé publique.

  • Vérification de documents : il permet de vérifier que le document qui vient d'être téléchargé était bien celui prévu. Cette pratique est répandue pour le téléchargement de logiciels afin de s'assurer qu'un attaquant n'a pas altéré ou modifié le fichier prévu initialement.

MéthodeGénérer ses propres clés GPG

Pour générer une paire de clés avec GnuPG, il suffit de lancer la commande ci-dessous. Après avoir entré cette commande, le nom et l'adresse e-mail de la personne sont demandés. Il est également conseillé de choisir un mot de passe très sécurisé.

1
gpg --generate-key

Vous allez être redirigé sur un utilitaire qui va vous permettre de créer la paire de clef. Il faut saisir prénom nom et une adresse e-mail. Une phrase de passe pour la clé privée sera aussi demandée. Vous obtiendrez une sortie similaire à cela :

1
We need to generate a lot of random bytes. It is a good idea to perform
2
some other action (type on the keyboard, move the mouse, utilize the
3
disks) during the prime generation; this gives the random number
4
generator a better chance to gain enough entropy.
5
We need to generate a lot of random bytes. It is a good idea to perform
6
some other action (type on the keyboard, move the mouse, utilize the
7
disks) during the prime generation; this gives the random number
8
generator a better chance to gain enough entropy.
9
gpg: key 44E6F43C654279CF marked as ultimately trusted
10
gpg: directory '/home/john/.gnupg/openpgp-revocs.d' created
11
gpg: revocation certificate stored as
12
'/home/john/.gnupg/openpgp-revocs.d/DA27A19AE74135DEB4BF30B144E6F43C654279CF.rev'
13
public and secret key created and signed.
14
15
pub   rsa4096 2020-04-28 [SC] [expires: 2020-04-29]
16
      DA27A19AE74135DEB4BF30B144E6F43C654279CF
17
      uid                      John Smith <john@smith.xyz>
18
      sub   rsa4096 2020-04-28 [E] [expires: 2020-04-29]

La paire de clé publique et privée ainsi qu'un certificat de révocation ont ici été générés.

ExempleExemple de clé publique

Chaque clé publique a un identifiant (une version raccourcie de la clé) qui permettra de simplement rechercher des clés sur des serveurs de clés. Dans l'exemple précédent, il s'agit de :

1
DA27A19AE74135DEB4BF30B144E6F43C654279CF

MéthodeChiffrer et déchiffrer

Pour chiffrer et déchiffrer un message, il est nécessaire d'utiliser les commandes ci-dessous. Il est possible tester ces commandes dans la console d'un repl Bash. Pour chiffrer, on spécifie l'adresse mail de la clef publique du destinataire (recipient) du message message.txt.

1
gpg --output msg.txt.gpg --encrypt --recipient paul@blabla.bla message.txt

Pour déchiffrer, on utilise :

1
gpg --output message.txt --decrypt msg.txt.gpg

Ici, la clé par défaut de l'utilisateur sera utilisée pour déchiffrer.

ComplémentRévoquer sa clé

Il peut arriver qu'une clé privée fuite. Ainsi, la sécurité et l'identité du propriétaire peuvent être atteintes. Un attaquant pourra utiliser la clé pour déchiffrer les documents ou même pour usurper l'identité en signant des mails trompeurs grâce à cette clé privée.

Pour éviter cela, le propriétaire de la clé pourra générer, grâce à sa clé privée, un certificat de révocation qu'il transmettra à ses contacts. Ce certificat est une sorte de preuve cryptographique que la clé n'est plus d'actualité. Ainsi, un attaquant ne pourra plus se servir de la clé privée.

Dans l'exemple de génération donné plus haut, le certificat de révocation a été créé et enregistré dans le fichier :

1
'/home/john/.gnupg/openpgp-revocs.d/DA27A19AE74135DEB4BF30B144E6F43C654279CF.rev'

À retenir

  • OpenPGP permet de sécuriser et certifier ses communications.

  • GnuPG est un outil très simple permettant de générer, gérer et utiliser des clés OpenPGP.