{{tag> gpg sécurité}}
====== Gérer les clés GPG ======
Le chiffrement asymétrique garantit la confidentialité des échanges et du stockage de données.
[[https://www.gnupg.org/|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
sub rsa2048 2018-07-09 [E] [expire : 2020-07-08]
pub rsa2048 2018-07-10 [SC]
858C7478D917D3E1235BE8D7AA2B7EC3C31BC863
uid [ totale ] Anouar Saïd
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 =====
* [[http://libgen.rs/book/index.php?md5=C5019E68223BDB208C8A3FD763554D85]]
* [[https://paul.fawkesley.com/gpg-for-humans-protecting-your-primary-key/]]
===== 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
=== Prolonger la date d'expiration de sa clé gpg ===
* https://superuser.com/a/1141251