gpg implémente OpenPGP : on génère une paire de clés (publique + privée), on partage la publique, et n'importe qui peut chiffrer un message à destination de notre clé privée — ou vérifier une signature qu'on a apposée. La clé privée est protégée par une passphrase. Le keyring local stocke les clés (les siennes et celles importées) dans ~/.gnupg/.
Gestion des clés
--gen-key / --full-generate-key | Génère une nouvelle paire de clés (interactif). --full pour choisir algo et durée. |
--list-keys | Liste les clés publiques du keyring local. |
--list-secret-keys | Liste les clés secrètes connues du trousseau, y compris des références à une carte ou à un agent ; cela ne prouve pas que leur passphrase est connue ni que la clé est disponible. |
--export -a USER > pub.asc | Exporte sa clé publique en ASCII armored (à partager par mail/web). |
--import FICHIER | Importe une clé reçue dans son keyring. |
--delete-keys USER | Supprime une clé publique (utiliser --delete-secret-keys pour une privée). |
Chiffrement et signature
-c FICHIER | Chiffrement symétrique (passphrase seule, pas de clé). Pratique pour soi-même. |
-e -r DEST FICHIER | Encrypt à destination du contact DEST (cherché dans le keyring). |
-d FICHIER.gpg | Decrypt : déchiffre vers stdout (ou -o pour un fichier). |
--sign FICHIER | Signe (signature détachée binaire .sig avec --detach-sign). |
--verify FICHIER.sig FICHIER | Vérifie la signature. |
-a | ASCII armored : sortie en texte (extension .asc) au lieu de binaire. |
$ gpg --full-generate-key
Première étape, une fois par identité. Choisir RSA and RSA, taille 4096, expiration 2 ans (renouvelable). La passphrase doit être solide et mémorisable — elle débloque la clé privée à chaque usage. Les clés résultantes sont stockées dans ~/.gnupg/.
$ gpg --list-keys
gpg --export -a alice@example.test > alice-pub.asc
Vérifier ses clés et exporter sa publique pour la partager (par mail, sur un keyserver, sur sa page web). Le fichier .asc contient un bloc texte lisible commençant par -----BEGIN PGP PUBLIC KEY BLOCK-----.
$ gpg -c secret.txt
Chiffrement symétrique rapide : passphrase tapée à l'invite, produit secret.txt.gpg. Idéal pour stocker un mot de passe ou un fichier sensible localement, sans avoir à gérer des clés. La passphrase est la seule chose qui permettra de déchiffrer.
$ gpg -e -r bob@example.test rapport.pdf
Chiffrement asymétrique : produit rapport.pdf.gpg que seul Bob (avec sa clé privée) pourra déchiffrer. Sa clé publique doit avoir été importée au préalable. Plusieurs -r permettent de chiffrer pour plusieurs destinataires d'un coup.
$ gpg --output rapport-dechiffre.pdf --decrypt rapport.pdf.gpg
Déchiffre vers un autre nom pour éviter de tronquer un fichier existant par une redirection shell avant de savoir si le déchiffrement réussit. GnuPG affiche une erreur si la clé nécessaire manque et peut demander une passphrase selon l’état de l’agent.
$ gpg --detach-sign -a release.tar.gz # produit release.tar.gz.asc
gpg --verify release.tar.gz.asc release.tar.gz
Signature détachée : on ne modifie pas le fichier original, on crée juste un .asc à côté. Pattern classique pour distribuer un logiciel — l'utilisateur peut télécharger l'archive et la signature, vérifier que la signature correspond à la clé publique du mainteneur, et donc que le fichier n'a pas été altéré.
Trust on first use :
Une signature correcte prouve la correspondance avec une clé, pas l’identité de son propriétaire. Comparer l’empreinte complète avec une source authentifiée. Dans le modèle Web of Trust, trust règle la confiance accordée au propriétaire pour certifier d’autres clés ; cela ne valide pas simplement sa propre identité. Après vérification, une certification locale gpg --lsign-key EMPREINTE est une opération distincte.
Sauvegarder ses clés :
perdre la clé privée = perdre l'accès à tout ce qu'on a chiffré. Faire un export sécurisé hors-ligne : gpg --export-secret-keys -a alice@example.test > backup.asc puis stocker ce fichier sur un support hors-ligne (clé USB chiffrée, papier imprimé), pas dans le cloud. La passphrase reste indispensable pour utiliser la clé restaurée.
Voir aussi :
ssh chmod tar