Renforcez la sécurité de vos échanges grâce à la commande Linux gpg. Profitez d’un chiffrement de haut niveau pour la protection de vos données confidentielles. Nous allons vous guider dans l’utilisation de gpg pour la gestion des clés, le cryptage et le décryptage de fichiers.
Gnu Privacy Guard (GPG) permet de crypter des fichiers de manière sécurisée, de sorte que seul le destinataire prévu puisse les lire. GPG est conforme à la norme OpenPGP. Il s’inspire d’un programme nommé Pretty Good Privacy (PGP), conçu en 1991 par Phil Zimmerman.
Le fonctionnement de GPG repose sur l’utilisation de deux clés de chiffrement distinctes pour chaque utilisateur : une clé privée, à garder secrète, et une clé publique, qui peut être diffusée librement. La clé publique est nécessaire pour déchiffrer un message crypté avec la clé privée correspondante.
Pour transmettre un fichier de manière sécurisée, vous devez le crypter à l’aide de votre clé privée, ainsi que de la clé publique du destinataire. Ce dernier aura besoin de sa clé privée et de votre clé publique pour déchiffrer le message.
Il est donc essentiel que les clés publiques soient partagées. Il est nécessaire d’avoir la clé publique du destinataire pour crypter un fichier, tout comme le destinataire a besoin de votre clé publique pour le déchiffrer. La diffusion de vos clés publiques ne représente aucun danger ; il existe même des serveurs de clés publiques dédiés à cet usage. En revanche, vos clés privées doivent absolument rester confidentielles. Bien que vos clés publiques soient dans le domaine public, vos clés privées doivent être conservées de manière sécurisée.
La configuration de GPG implique un certain nombre d’étapes, mais elle n’est généralement effectuée qu’une seule fois.
Création de vos clés
La commande gpg est préinstallée sur la plupart des distributions Linux, comme Ubuntu, Fedora et Manjaro.
L’utilisation de GPG n’est pas limitée au courrier électronique. Vous pouvez crypter des fichiers et les partager via un téléchargement ou une transmission physique. Cependant, vous devez associer une adresse email aux clés que vous générez, alors choisissez celle que vous utiliserez.
Voici la commande pour générer vos clés. L’option --full-generate-key
lance un processus interactif dans votre terminal pour la création de vos clés. Vous serez également invité à saisir une phrase secrète. Cette phrase est essentielle, assurez-vous de bien la mémoriser. Un bon modèle robuste pour les mots de passe et les phrases de passe est d’utiliser trois ou quatre mots simples associés à la ponctuation.
gpg --full-generate-key
Un menu vous proposera de choisir un type de chiffrement. À moins d’une raison particulière de faire autrement, saisissez « 1 » et validez avec la touche Entrée.
Choisissez ensuite une longueur de bits pour les clés de chiffrement. Validez la valeur par défaut en appuyant sur Entrée.
Indiquez la durée de validité de la clé. Pour un test, choisissez une courte durée, comme « 5 » pour cinq jours. Pour une utilisation régulière, choisissez une durée plus longue, par exemple « 1 an ». La clé sera valide pendant 12 mois et devra être renouvelée après cette période. Confirmez votre choix en saisissant « Y ».
Saisissez votre nom et votre adresse e-mail. Vous pouvez également ajouter un commentaire facultatif.
Vous serez invité à saisir votre phrase secrète. Cette phrase vous sera demandée chaque fois que vous utiliserez vos clés, assurez-vous donc de bien la mémoriser.
Cliquez sur OK après avoir saisi votre phrase secrète. Cette fenêtre sera affichée à chaque utilisation de gpg, il est donc important de ne pas l’oublier.
La création de clé est en cours, puis vous serez redirigé vers l’invite de commande.
Génération d’un certificat de révocation
Si votre clé privée est compromise, vous devrez annuler l’ancienne clé et en générer une nouvelle. Un certificat de révocation est nécessaire pour ce faire. Nous allons donc en créer un dès maintenant et le conserver en lieu sûr.
L’option --output
doit être suivie du nom du fichier dans lequel enregistrer le certificat. L’option --gen-revoke
demande à gpg de générer un certificat de révocation. Indiquez l’adresse e-mail que vous avez associée à vos clés lors de leur création.
gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com
Confirmez la génération du certificat en appuyant sur « Y » et la touche Entrée. On vous demandera la raison de cette génération. Étant donné que nous le faisons par précaution, choisissons « 1 » comme motif plausible. Validez en appuyant sur Entrée.
Saisissez une description si vous le souhaitez. Appuyez deux fois sur Entrée pour terminer la saisie de votre description.
Confirmez vos paramètres en saisissant « Y », puis appuyez sur Entrée.
Le certificat sera généré. Un message vous rappellera l’importance de conserver ce certificat en lieu sûr.
On y mentionne un certain Mallory. Dans les discussions sur la cryptographie, on utilise souvent Bob et Alice comme exemples de personnes communiquant. D’autres personnages secondaires existent. Eve est une espionne, tandis que Mallory est un attaquant malveillant. L’essentiel à retenir est qu’il faut protéger le certificat.
Nous allons au minimum, supprimer tous les droits d’accès sur ce certificat, sauf pour nous-mêmes.
chmod 600 ~/revocation.crt
Vérifions avec la commande ls, pour voir les permissions actuelles :
ls -l
C’est parfait. Seul le propriétaire du fichier – nous – a le droit de faire quelque chose avec ce certificat.
Importer la clé publique d’un contact
Pour crypter un message afin qu’une autre personne puisse le déchiffrer, vous devez avoir sa clé publique.
Si vous avez reçu la clé par fichier, vous pouvez l’importer à l’aide de la commande suivante. Dans cet exemple, le fichier de clé est nommé « mary-geek.key ».
gpg --import mary-geek.key
La clé est importée, et le nom et l’adresse email associés à cette clé s’affichent. Assurez-vous que ces informations correspondent bien à la personne de laquelle vous avez reçu la clé.
Il est également possible que la personne dont vous avez besoin de la clé ait déposé sa clé sur un serveur de clé publique. Ces serveurs conservent les clés publiques d’utilisateurs du monde entier. Ils sont régulièrement synchronisés, pour assurer la disponibilité universelle des clés.
Le serveur de clés publiques du MIT est régulièrement mis à jour, il est donc recommandé d’y effectuer votre recherche. Si une clé a été chargée récemment, quelques jours peuvent être nécessaires pour qu’elle apparaisse sur le serveur.
L’option --keyserver
doit être suivie du nom du serveur de clés à interroger. L’option --search-keys
doit être suivie soit du nom de la personne recherchée, soit de son adresse email. Nous utiliserons l’adresse email :
gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com
Les correspondances sont affichées et numérotées. Pour en importer une, saisissez le numéro et appuyez sur Entrée. Dans cet exemple, une seule correspondance est disponible, donc saisissez « 1 » et validez.
La clé est importée, et le nom et l’adresse email associés s’affichent.
Vérification et signature d’une clé
Si vous recevez un fichier de clé publique d’une personne de confiance, vous pouvez être raisonnablement sûr que la clé appartient bien à cette personne. Si vous téléchargez la clé depuis un serveur public, il peut être utile de vérifier qu’elle appartient bien à la personne concernée.
L’option --fingerprint
demande à gpg de générer une courte séquence composée de dix groupes de quatre caractères hexadécimaux. Vous pouvez demander à votre contact de vous communiquer l’empreinte digitale de sa clé.
Vous pouvez ensuite utiliser l’option --fingerprint
pour générer la même séquence de caractères hexadécimaux et les comparer. Si les deux empreintes correspondent, vous pouvez être sûr que la clé appartient à votre contact.
gpg --fingerprint mary-geek@protonmail.com
L’empreinte digitale est générée.
Lorsque vous êtes certain que la clé est authentique et qu’elle appartient bien à la personne concernée, vous pouvez signer sa clé.
Si vous ne le faites pas, vous pourrez toujours l’utiliser pour crypter et déchiffrer des messages de/vers cette personne. Cependant, gpg vous demandera à chaque fois si vous souhaitez continuer, car la clé n’est pas signée. Utilisez l’option --sign-key
en indiquant l’adresse email de la personne pour permettre à gpg de savoir quelle clé signer.
gpg --sign-key mary-geek@protonmail.com
Des informations sur la clé et la personne s’affichent, et on vous demande de vérifier que vous souhaitez signer la clé. Saisissez « Y » et appuyez sur Entrée pour signer la clé.
Comment partager votre clé publique
Pour partager votre clé sous forme de fichier, vous devez l’exporter de votre stockage local de clés gpg. Pour cela, utilisez l’option --export
, suivie de l’adresse email que vous avez utilisée pour la création de la clé. L’option --output
indique le nom du fichier dans lequel vous souhaitez exporter la clé. Enfin, l’option --armor
indique à gpg de générer un format ASCII au lieu d’un fichier binaire.
gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com
Nous pouvons maintenant consulter le contenu du fichier avec la commande less.
less dave-geek.key
La clé est affichée dans sa totalité :
Vous pouvez également diffuser votre clé publique sur un serveur de clés publiques. L’option --send-keys
envoie la clé vers le serveur. L’option --keyserver
doit être suivie de l’adresse web du serveur public. Afin d’identifier la clé à envoyer, l’empreinte digitale de la clé doit être précisée sur la ligne de commande. Notez qu’il n’y a pas d’espaces entre les groupes de quatre caractères.
(Vous pouvez retrouver l’empreinte digitale de votre clé à l’aide de l’option --fingerprint
.)
gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4
La confirmation de l’envoi de la clé s’affiche.
Cryptage de fichiers
Nous sommes enfin prêts à crypter un fichier et à l’envoyer à Mary. Le fichier s’appelle Raven.txt.
L’option --encrypt
indique à gpg de crypter le fichier. L’option --sign
lui demande de signer le fichier avec vos informations. L’option --armor
spécifie que gpg doit créer un fichier ASCII. L’option -r
(destinataire) doit être suivie de l’adresse email de la personne à laquelle vous envoyez le fichier.
gpg --encrypt --sign --armor -r mary-geek@protonmail.com Raven.txt
Le fichier est créé avec le même nom que l’original, mais avec l’extension « .asc » ajoutée. Voyons son contenu.
less Raven.txt.asc
Le fichier est illisible. Seule une personne disposant de votre clé publique et de la clé privée de Mary peut le déchiffrer. En théorie, seule Mary remplit ces conditions.
Vous pouvez maintenant envoyer le fichier à Mary, en sachant que personne d’autre ne pourra le lire.
Décryptage de fichiers
Mary a répondu. Le message est dans un fichier crypté, nommé coded.asc. Vous pouvez le déchiffrer facilement avec l’option --decrypt
. Nous allons rediriger la sortie dans un autre fichier, appelé plain.txt.
Il n’est pas nécessaire de spécifier qui a envoyé le fichier à gpg, cette information est présente dans le contenu crypté.
gpg --decrypt coded.asc > plain.txt
Regardons le contenu de plain.txt :
less plain.txt
Le fichier a été déchiffré avec succès.
Mise à jour des clés
De temps en temps, vous pouvez demander à gpg de vérifier les clés en sa possession par rapport à un serveur de clés public, et mettre à jour celles qui ont été modifiées. Vous pouvez effectuer cette opération tous les quelques mois, ou lorsque vous recevez une clé d’un nouveau contact.
L’option --refresh-keys
demande à gpg d’effectuer cette vérification. L’option --keyserver
doit être suivie du serveur de clés de votre choix. Une fois que les clés ont été synchronisées entre les différents serveurs, peu importe lequel vous utilisez.
gpg --keyserver pgp.mit.edu --refresh-keys
gpg affichera la liste des clés qu’il vérifie, et vous informera si certaines ont été modifiées ou mises à jour.
La confidentialité : un sujet d’actualité
La protection de la vie privée est au cœur des préoccupations actuelles. Quelles que soient vos raisons de vouloir sécuriser vos informations, gpg vous offre une solution simple pour appliquer un cryptage très efficace à vos fichiers et communications.
Il existe d’autres moyens d’utiliser gpg. Vous pouvez notamment installer un plugin pour Thunderbird, appelé Enigmail. Il se connecte directement à votre configuration gpg pour vous permettre de crypter vos emails directement depuis Thunderbird.