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
:
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 :
|
Ce qui est équivalent à :
|
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 :
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).