Une compilation de documentations   { en , fr }

Comment chiffrer un fichier avec GnuPG

Étiquette:
Créé en:
Auteur:
Xavier Béguin

Chiffrer avec une phrase secrète (chiffrement symétrique)

Chiffrer des données à l'aide une phrase secrète, puis utiliser cette même phrase secrète pour déchiffrer ensuite l'information chiffrée est appelé chiffrement symétrique parce que le même secret partagé (la phrase secrète) est utilisé de la même façon à la fois pour le processus de chiffrement et celui du déchiffrement.

Avec GnuPG, un fichier peut être chiffré en utilisant une méthode de cryptographie symétrique à l'aide de l'option --symmetric (ou l'option courte -c) de la commande gpg :

gpg --symmetric importantfile.txt

Cette commande affichera par défaut une fenêtre de dialogue pour demander la saisie de la phrase secrète. Vous devrez saisir à l'aveugle la phrase secrète choisie deux fois, et le programme vous avertira si elle n'est pas assez forte (une phrase secrète est forte si la deviner par essais répétés nécessite un temps et des moyens techniques trop importants avec le matériel informatique actuellement disponible).

Si tout va bien, la commande n'affichera rien sur le terminal et le fichier chiffré sera écrit dans un fichier ayant le même nom que le fichier d'entrée, complété du suffixe .gpg (dans l'exemple ci-dessus, le fichier chiffré sera donc importantfile.txt.gpg).

Si aucun fichier d'entrée n'est fourni, les données à chiffrer seront lues depuis l'entrée standard de la commande. La sortie sera redirigée vers la sortie standard, à moins qu'un nom de fichier ne soit donné à l'aide de la commande --output (or -o dans sa version courte). Ainsi, pour chiffrer la sortie d'une commande, on pourrait utiliser quelque chose comme ceci :

echo "La réponse est 42" | gpg --symmetric > important.gpg

Ce qui est équivalent à :

echo "La réponse est 42" | gpg --symmetric --output important.gpg

Si vous ne vouliez pas utiliser un dialogue graphique pour saisir la phrase secrète choisie, vous devrez installer la commande pinentry-tty (fournie sous les systèmes Debian par le paquet du même nom) et demander à gpg-agent (qui est le programme auquel gpg délègue la saisie sécurisée des phrases secrètes) de l'utiliser en ajoutant la ligne suivante dans le fichier $HOME/.gnupg/gpg-agent.conf (à créer s'il n'existe pas) :

pinentry-program /usr/bin/pinentry-tty

Utilisez ensuite la commande suivante pour arrêter tout processus gpg-agent en fonctionnement. La programme sera automatiquement redémarré à la demande par gpg et utilisera ainsi sa nouvelle configuration :

gpgconf --kill gpg-agent

D'autre programmes de saisie de secret (pinentry) existent pour utiliser des manières légèrement différentes de saisir la phrase secrète : pinentry-gnome3, pinentry-gtk, pinentry-qt, pinentry-curses, etc.

Chiffrer à l'aide d'une clef publique (chiffrement symétrique)

Chiffrer des données à l'aide d'une clef publique, puis déchiffrer l'information chiffrée à l'aide d'une clef secrète est appelé chiffrement asymétrique par opposition au chiffrement symétrique décrit plus haut, parce qu'on n'utilise pas le même secret ni le même procédé pour chiffrer puis déchiffrer l'information.

Pour utiliser le chiffrement asymétrique avec GnuPG, il est d'abord nécessaire d'importer dans votre porte-clés la clef publique du destinataire des données que vous souhaitez chiffrer.

Cette clef peut être importée depuis un fichier en utilisant l'option --import ou téléchargée depuis un serveur de clefs grâce à l'option --receive-keys pour télécharger une clef désignée par son identifiant ou --search-keys pour la rechercher et éventuellement la télécharger en se basant soit sur son identifiant, soit sur l'identifiant utilisateur associé. Consultez l'article « Comment importer ou télécharger une clef avec GnuPG » pour plus de détails sur l'importation de cette clef.

Une fois la clef publique présente dans votre porte-clés publique principal, un fichier peut être chiffré par chiffrement asymétrique à l'aide de l'option --encrypt (ou l'option courte -e) de la commande gpg :

~$ gpg -e test.txt
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: krusty@example.org

Current recipients:
rsa3072/65A4BB8A032EC005 2023-11-17 "Herschel Krustofski <krusty@example.org>"

Enter the user ID.  End with an empty line:

Comme vous le voyez, le programme demande la saisie de l'identifiant utilisateur du destinataire pour déterminer quelle clef publique utiliser pour le chiffrement. Seule la clef secrète du destinataire (qui correspond à la clef publique dans votre porte-clés) sera capable de déchiffrer le fichier.

Plusieurs destinataires peuvent être fournis. Comme le montre le résultat de l'utlisation de gpg ci-dessous, l'identifiant utilisateur du destinataire peut aussi être directement précisé en argument de la commande gpg en utilisant l'option --recipient (ou l'option courte -r). Avec cette option, la commmande n'affichera rien lors de son utilisation :

~$ gpg -e -r "Herschel Krustofski" test.txt
~$

Si le chiffrement asymétrique ne vous est pas familier, vous pourriez être surpris qu'aucune phrase secrète ne soit exigée dans ce processus de chiffrement.

Rappelez-vous que le destinataire du fichier chiffré est le seule à posséder la clef privée indispensable au déchiffrement du fichier que vous venez de chiffrer avec la clef publique correspondante. Ainsi, personne ne peut lire l'information chiffrée et aucune phrase secrète partagée n'est nécessaire (ce type de secret partagé n'est utilisé que dans le chiffrement symétrique).