Gérer les clés GPG
Le chiffrement asymétrique garantit la confidentialité des échanges et du stockage de données.
GnuPG est un programme qui permet de chiffrer et de déchiffrer des données.
Les personnes souhaitant transmettre des informations sensibles (mots de passe de serveurs, comptes d'administration d'applications) s'assurent que seul le destinataire pourra les lire.
L'expéditeur utilise la clé publique du destinataire pour chiffrer les données à lui transmettre.
Seul le destinataire, en utilisant sa clé privée peut déchiffrer les données et les exploiter.
Tous les utilisateurs souhaitant tansmettre des données chiffrées doivent avoir une paire de clé publique/privée.
- La clé publique est distribuée.
- La clé privée de chaque intervenant demeure secrète et est protégée par un mot de passe.
Création d'une paire de clés
Une clé GPG est la garantie d'une identité, il est donc recommandé de fournir des informations réelles à la création de la paire de clés.
Les personnes souhaitant transmettre des données sensibles doivent s'assurer que la clé publique qu'ils utilisent pour chiffrer ces données appartient bien au destinataire et non à un usurpateur.
En exécutant la commande suivante une série de questions sont posées. Laisser la réponse au “Commentaire” vide est recommandé.
Ne pas oublier de protéger sa clé privée avec une phrase de passe.
$ gpg --gen-key
Extraire et distribuer la clé publique
Une fois la paire de clés créée, la clé publique doit être mise à la disposition de toute personne souhaitant communiquer de manière chiffrée avec le détenteur de cette clé.
La commande suivante crée un fichier anouarsaid.key
contenant la clé publique.
$ gpg --output anouarsaid.key --armor --export anouarsaid@mail.com
Charger une clé publique dans le trousseau de clés
Les clés publiques récupérées doivent être chargées dans le trousseau de clés de GnuPG.
Un utilisateur souhaitant crypter des données pour Anouar Saïd importe sa clé publique de Anouar Saïd dans son trousseau de clés GPG avec la commande suivante :
$ gpg --import anouarsaid.key
Et pour lister les clés importées :
$ gpg --list-keys /home/zine/.gnupg/pubring.gpg ----------------------------- pub rsa2048 2018-07-09 [SC] [expire : 2020-07-08] 1E3199A55BB1742DBE0E23AC11AA5A2311BBB5A7 uid [ ultime ] Zine Cherfiwi <zinecherfiwi@gmail.com> sub rsa2048 2018-07-09 [E] [expire : 2020-07-08] pub rsa2048 2018-07-10 [SC] 858C7478D917D3E1235BE8D7AA2B7EC3C31BC863 uid [ totale ] Anouar Saïd <anouarsaid@mail.com> sub rsa2048 2018-07-10 [E]
Chiffrer des données avec une clé publique
Un utilisateur qui souhaite chiffrer le contenu d'un fichier message.txt
pour l'utilisateur dont la clé est identifiée par anouarsaid@mail.com
exécute la commande suivante :
$ gpg --encrypt --recipient anouarsaid@mail.com message.txt
Cette commande crée une fichier message.txt.gpg
que seul le détenteur de la clé privée correspondant à anouarsaid@mail.com
pourra déchiffrer.
La commande précédente peut être abrégée
$ gpg -er anouarsaid@mail.com message.txt
Déchiffrer des données
L'utilisateur Anouar Saïd est le seul à pouvoir déchiffrer le contenu du fichier message.txt.gpg
car il est seul à posséder la clé privée nécessaire.
La commande suivante lui permet d'accéder au contenu déchiffré du fichier :
$ gpg --decrypt message.txt.gpg $ # ou plus simplement $ gpg -d message.txt.gpg
Le contenu du fichier est affiché sur la sortie standard. Pour créer le fichier message.txt
$ gpg -o message.txt -d message.txt.gpg
Conclusion
Les données confidentielles transmises sans être préalablement chiffrées sont stockées au clair sur des serveurs étrangers. Veiller à la protection des données est une pratique professionelle visant à construire un environnement sécure pour soi et pour ses partenaires commerciaux.
Les informations données dans ce document sont une introduction rapide à GnuPG. Les utilisateurs sont appelés à approfondir leurs connaissances sur le sujet.
Références utiles
Optionnel
Publier la clé publique sur un serveur de clés gpg
$ gpg --keyserver keys.openpgp.org --send-keys KEYFINGERPRINT $ gpg --keyserver keyserver.ubuntu.com --send-keys KEYFINGERPRINT
Générer le certificat de révocation
$ gpg -o revocation.crt --gen-revoke anouarsaid@mail.com
Protéger le certificat
$ chmod 600 revocation.crt
Extraire le fingerprint de la clé pour le publier (twitter,facebook,signature de mail, site personnel)
$ gpg --fingerprint anouarsaid@mail.com
Extraire la clé pour la distribuer à des partenaires
$ gpg --output anouarsaid.key --armor --export anouarsaid@mail.com
La clé sera enregistrée dans le fichier text anouarsaid.key
. Le contenu de ce fichier peut être transmis en corps de mail ou en pièce jointe à des partenaires souhaitant l'utiliser pour chiffrer des messages que vous AnouarSaid seul puisse les lire.
Importer une clé dans le trousseau de clé gpg
$ gpg --import zinecherfiwi.key
Après avoir importé cette clé la commande suivante
$ gpg -e -r zinecherfiwi@mail.com file.txt
Créera un nouveau fichier file.txt.gpg
que seul ZineCherfiwi pourra lire.
Comparer le fingerprint de la clé avec celui distribué par le détenteur
$ gpg --fingerprint zinecherfiwi@gmail.com
Troubleshooting
agent_genkey failed
Si vous recontez le problème gpg: agent_genkey failed: No such file or directory
pendant la génération du clé GPG
supprimer le dossier .gnupg
et recréer le de nouveau
$ rm -rf ~/.gnupg $ gpg $ killall gpg-agent dirmngr
Vous pouvez également essayer de démarrer gpg-agent https://superuser.com/a/1183544
$ gpg-connect-agent reloadagent /bye