Comment chiffrer et déchiffrer des fichiers avec GPG sous Linux

  • par

  • Dave McKay

    @TheGurkha

  • 12 juillet 2019, 8 :00am EDT
Fenêtre de terminal linux sur un ordinateur portable
Fatmawati Achmad Zaenuri/.com

Protégez votre vie privée avec la commande Linux gpg. Utilisez un chiffrement de classe mondiale pour garder vos secrets en toute sécurité. Nous vous montrerons comment utiliser gpg pour travailler avec des clés, crypter des fichiers et les décrypter.

GnuPrivacy Guard (GPG) vous permet de crypter des fichiers en toute sécurité afin que seul le destinataire prévu puisse les décrypter. Plus précisément, GPG est conforme à la norme OpenPGP. Il s’inspire d’un programme appelé Pretty Good Privacy (PGP). PGP a été écrit en 1991 par Phil Zimmerman.

GPG repose sur l’idée de deux clés de chiffrement par personne. Chaque personne possède une clé privée et une clé publique. La clé publique peut déchiffrer quelque chose qui a été chiffré à l’aide de la clé privée.

Publicité

Pour envoyer un fichier de manière sécurisée, vous le chiffrez avec votre clé privée et la clé publique du destinataire. Pour déchiffrer le fichier, ils ont besoin de leur clé privée et de votre clé publique.

Vous verrez ainsi que les clés publiques doivent être partagées. Vous devez disposer de la clé publique du destinataire pour chiffrer le fichier, et le destinataire a besoin de votre clé publique pour le déchiffrer. Il n’y a aucun danger à rendre vos clés publiques uniquement publiques. En fait, il existe des serveurs de clés publiques à cette fin, comme nous allons le voir. Les clés privées doivent rester privées. Si votre clé publique est dans le domaine public, alors votre clé privée doit rester secrète et sécurisée.

La configuration de GPG comporte plus d’étapes que son utilisation. Heureusement, vous n’avez généralement besoin de le configurer qu’une seule fois.

Générer vos clés

La gpg commande était installée sur toutes les distributions Linux vérifiées, notamment Ubuntu, Fedora et Manjaro.

Publicité

Vous n’êtes pas obligé d’utiliser GPG avec le courrier électronique. Vous pouvez chiffrer les fichiers et les rendre disponibles au téléchargement, ou les transmettre physiquement au destinataire. Vous devez cependant associer une adresse électronique aux clés que vous générez, alors choisissez l’adresse électronique que vous allez utiliser.

Voici la commande pour générer vos clés. L’option --full-generate-key génère vos clés dans une session interactive au sein de votre fenêtre de terminal. Vous serez également invité à saisir une phrase de passe. Assurez-vous de vous souvenir de la phrase de passe. Trois ou quatre mots simples joints par de la ponctuation est un bon modèle robuste pour les mots de passe et les phrases de passe.

gpg --full-generate-key

gpg --full-generate-key dans une fenêtre de terminal

Il vous sera demandé de choisir un type de chiffrement dans un menu. À moins que vous ayez une bonne raison de ne pas le faire, tapez 1 et appuyez sur Entrée.

Vous devez choisir une longueur de bit pour les clés de chiffrement. Appuyez sur Entrée pour accepter la valeur par défaut.

questions sur la génération de clés dans une fenêtre de terminal

Publicité

Vous devez préciser la durée de vie de la clé. Si vous testez le système, entrez une courte durée comme 5 pour cinq jours. Si vous comptez conserver cette clé, entrez une durée plus longue comme 1y pour un an. La clé durera 12 mois et devra donc être renouvelée après un an. Confirmez votre choix avec un Y.

Vous devez saisir votre nom et votre adresse électronique. Vous pouvez ajouter un commentaire si vous le souhaitez.

questions de génération de clés dans une fenêtre de terminal

Vous serez invité à saisir votre phrase de passe. Vous aurez besoin de cette phrase de passe chaque fois que vous travaillerez avec vos clés, alors assurez-vous de la connaître.

fenêtre de phrase de passe gpg

Cliquez sur le bouton OK lorsque vous avez saisi votre phrase de passe. Vous verrez cette fenêtre au fur et à mesure que vous travaillerez avec gpg, alors assurez-vous de vous souvenir de votre phrase de passe.

Publicité

La génération de la clé aura lieu, et vous serez renvoyé à l’invite de commande.

génération de clés gpg terminée dans une fenêtre de terminal

Génération d’un certificat de révocation

Si votre clé privée devient connue des autres, vous devrez dissocier les anciennes clés de votre identité, afin de pouvoir en générer de nouvelles. Pour ce faire, vous aurez besoin d’un certificat de révocation. Nous allons le faire maintenant et le stocker dans un endroit sûr.

L’option --output doit être suivie du nom de fichier du certificat que vous souhaitez créer. L’option --gen-revoke entraîne la génération par gpg d’un certificat de révocation. Vous devez fournir l’adresse électronique que vous avez utilisée lors de la génération des clés.

gpg --output ~/revocation.crt --gen-revoke [email protected]

gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com dans une fenêtre de terminal

Il vous sera demandé de confirmer que vous souhaitez générer un certificat. Appuyez sur Y et appuyez sur Entrée. Il vous sera demandé la raison pour laquelle vous générez le certificat. Comme nous le faisons à l’avance, nous n’en sommes pas sûrs. Appuyez sur 1 comme une supposition plausible et appuyez sur Entrée.

Publicité

Vous pouvez entrer une description si vous le souhaitez. Appuyez deux fois sur Entrée pour terminer votre description.

Il vous sera demandé de confirmer vos paramètres, appuyez sur Y et appuyez sur Entrée.

questions sur le certificat gpg dans une fenêtre de terminal

Le certificat sera généré. Vous verrez un message renforçant la nécessité de garder ce certificat en sécurité.

Il mentionne une personne appelée Mallory. Les discussions sur la cryptographie ont longtemps utilisé Bob et Alice comme les deux personnes qui communiquent. Il existe d’autres personnages secondaires. Eve est une oreille indiscrète, Mallory est un attaquant malveillant. Tout ce que nous devons savoir, c’est que nous devons garder le certificat en sécurité.

Publicité

Au minimum, supprimons toutes les permissions à part les nôtres du certificat.

chmod 600 ~/revocation.crt

chmod 600 ~/revocation.crt dans une fenêtre de terminal

Vérifions avec ls quelles sont les autorisations maintenant :

ls -l

dans une fenêtre de terminal

C’est parfait. Personne, à part le propriétaire du fichier – nous – ne peut faire quoi que ce soit avec le certificat.

Importer la clé publique de quelqu’un d’autre

Pour chiffrer un message qu’une autre personne peut déchiffrer, nous devons avoir sa clé publique.

Annonce

Si on vous a fourni sa clé dans un fichier, vous pouvez l’importer avec la commande suivante. Dans cet exemple, le fichier de clé s’appelle « mary-geek.key. »

gpg --import mary-geek.key

gpg --import mary-geek.key ina terminal window

La clé est importée, et le nom et l’adresse électronique associés à cette clé vous sont indiqués. Évidemment, cela devrait correspondre à la personne de qui vous l’avez reçue.

importation réussie de la clé dans une fenêtre de terminal

Il est également possible que la personne dont vous avez besoin d’une clé ait téléchargé sa clé sur un serveur de clés publiques. Ces serveurs stockent les clés publiques des personnes du monde entier. Les serveurs de clés se synchronisent les uns avec les autres périodiquement afin que les clés soient universellement disponibles.

Le serveur de clés publiques du MIT est un serveur de clés populaire et régulièrement synchronisé, la recherche devrait donc y aboutir. Si quelqu’un n’a téléchargé une clé que récemment, elle peut mettre quelques jours à apparaître.

Publicité

L’option --keyserver doit être suivie du nom du serveur de clés que vous souhaitez rechercher. L’option --search-keys doit être suivie soit du nom de la personne que vous recherchez, soit de son adresse électronique. Nous utiliserons l’adresse électronique :

gpg --keyserver pgp.mit.edu --search-keys [email protected]

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com dans une fenêtre de terminal

Les correspondances sont listées pour vous et numérotées. Pour en importer une, tapez le numéro et appuyez sur Entrée. Dans ce cas, il y a une seule correspondance, donc nous tapons 1 et appuyons sur Entrée.

résultats de gpg keyserver dans une fenêtre de terminal

La clé est importée, et on nous montre le nom et l’adresse électronique associés à cette clé.

Vérification et signature d’une clé

Si un fichier de clé publique vous a été remis par une personne connue de vous, vous pouvez affirmer sans risque qu’il appartient à cette personne. Si vous l’avez téléchargé à partir d’un serveur de clés publiques, vous pouvez ressentir le besoin de vérifier que la clé appartient à la personne à qui elle est destinée.

L’option --fingerprint fait en sorte que gpg crée une courte séquence de dix ensembles de quatre caractères hexadécimaux. Vous pouvez demander à la personne de vous envoyer l’empreinte digitale de sa clé.

Vous pouvez ensuite utiliser l’option --fingerprint pour générer la même séquence d’empreinte digitale de caractères hexadécimaux et les comparer. Si elles correspondent, vous savez que la clé appartient à cette personne.

gpg --fingerprint [email protected]

gpg --fingerprint mary-geek@protonmail.com dans une fenêtre de terminal

L’empreinte digitale est générée.

gpg fingerprint dans une fenêtre de terminal

Quand vous êtes convaincu que la clé est authentique et qu’elle appartient à la personne à laquelle elle est censée être associée, vous pouvez signer sa clé.

Si vous ne le faites pas, vous pouvez toujours l’utiliser pour chiffrer et déchiffrer des messages en provenance et à destination de cette personne. Mais gpg vous demandera à chaque fois si vous souhaitez poursuivre car la clé n’est pas signée. Nous utiliserons la bien nommée --sign-key option et fournirons l’adresse e-mail de la personne, afin que gpg sache quelle clé signer.

gpg --sign-key [email protected]

gpg --sign-key mary-geek@protonmail.com dans une fenêtre de terminal

Publicité

Vous verrez des informations sur la clé et la personne, et il vous sera demandé de vérifier que vous voulez vraiment signer la clé. Appuyez sur Y et appuyez sur Entrée pour signer la clé.

confirmation de la signature de la clé gpg dans une fenêtre de terminal

Comment partager votre clé publique

Pour partager votre clé sous forme de fichier, nous devons l’exporter depuis le gpg magasin de clés local. Pour ce faire, nous utiliserons l’option --export, qui doit être suivie de l’adresse électronique que vous avez utilisée pour générer la clé. L’option --output doit être suivie du nom du fichier dans lequel vous souhaitez que la clé soit exportée. L’option --armor indique à gpg de générer une sortie armure ASCII au lieu d’un fichier binaire.

gpg --output ~/dave-geek.key --armor --export [email protected]

gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com dans une fenêtre de terminal

Nous pouvons jeter un coup d’œil à l’intérieur du fichier clé avec less.

less dave-geek.key

fichier de clés publiques en less dans une fenêtre de terminal

La clé est montrée dans toute sa gloire :

fichier de clé publique en less dans une fenêtre de terminal

Vous pouvez également partager votre clé publique sur un serveur de clés publiques. L’option --send-keys envoie la clé au serveur de clés. L’option --keyserver doit être suivie de l’adresse web du serveur de clés publiques. Pour identifier la clé à envoyer, l’empreinte digitale de la clé doit être fournie sur la ligne de commande. Notez qu’il n’y a pas d’espace entre les ensembles de quatre caractères.

Publicité

(Vous pouvez voir l’empreinte digitale de votre clé en utilisant l’option --fingerprint.)

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4 dans une fenêtre de terminal

Vous aurez la confirmation que la clé a été envoyée.

confirmation que la clé a été envoyée au serveur de clés dans une fenêtre de terminal

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 chiffrer le fichier, et l’option --sign lui indique de signer le fichier avec vos coordonnées. L’option --armor indique à gpg de créer un fichier ASCII. L’option -r (destinataire) doit être suivie de l’adresse électronique de la personne à qui vous envoyez le fichier.

gpg --encrypt --sign --armor -r [email protected]

gpg --encrypt --sign --armor -r mary-geek@protonmail.com dans une fenêtre de terminal

Le fichier est créé avec le même nom que l’original, mais avec « .asc » ajouté au nom du fichier. Jetons un coup d’œil à l’intérieur.

less Raven.txt.asc

sans Raven.txt.asc dans une fenêtre de terminal

Publicité

Le fichier est complètement illisible, et ne peut être décrypté que par quelqu’un qui possède votre clé publique et la clé privée de Mary. La seule personne à disposer de ces deux éléments devrait être Mary.

Contenu chiffré de raven.txt.asc dans une fenêtre de terminal

Nous pouvons maintenant envoyer le fichier à Mary en étant sûrs que personne d’autre ne peut le déchiffrer.

Déchiffrer des fichiers

Mary a envoyé une réponse. Elle se trouve dans un fichier crypté appelé coded.asc. Nous pouvons le décrypter très facilement en utilisant l’option --decrypt. Nous allons rediriger la sortie dans un autre fichier appelé plain.txt.

Notez que nous n’avons pas besoin de dire à gpg de qui provient le fichier. Il peut le découvrir à partir du contenu chiffré du fichier.

gpg --decrypt coded.asc > plain.txt

gpg --decrypt coded.asc plain.txt dans une fenêtre de terminal

Regardons le fichier plain.txt:

less plain.txt

moins plain.txt dans une fenêtre de terminal

Le fichier a été décrypté avec succès pour nous.

fichier déchiffré en less dans une fenêtre de terminal

Rafraîchissement de vos clés

Périodiquement, vous pouvez demander à gpg de vérifier les clés qu’il possède par rapport à un serveur de clés publiques et de rafraîchir celles qui ont changé. Vous pourriez le faire tous les quelques mois ou lorsque vous recevez une clé d’un nouveau contact.

Publicité

L’option --refresh-keys fait en sorte que gpg effectue la 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 serveurs de clés publiques, le choix de l’un d’entre eux ne devrait pas avoir d’importance.

gpg --keyserver pgp.mit.edu --refresh-keys

gpg --keyserver pgp.mit.edu --refresh-keys dans une fenêtre de terminal

gpg répond en listant les clés qu’il vérifie et en vous faisant savoir si certaines ont changé et ont été mises à jour.

rafraîchissement des clés de gpg dans une fenêtre de terminal

La vie privée est un sujet brûlant

La vie privée n’est jamais loin de l’actualité de nos jours. Quelles que soient les raisons pour lesquelles vous voulez garder vos informations sécurisées et privées, gpg fournit un moyen simple d’appliquer un cryptage incroyablement fort à vos fichiers et communications.

Publicité

Il existe d’autres façons d’utiliser gpg. Vous pouvez obtenir un plugin pour Thunderbird appelé Enigmail. Il s’accroche directement à votre configuration gpg pour vous permettre de crypter les messages électroniques depuis l’intérieur de Thunderbird.

Dave McKay
Dave McKay a commencé à utiliser des ordinateurs lorsque le ruban de papier perforé était en vogue, et il n’a jamais cessé de programmer depuis. Après plus de 30 ans dans l’industrie informatique, il est maintenant un journaliste technologique à plein temps. Au cours de sa carrière, il a travaillé comme programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, comme responsable de la protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire la bio complète  »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *