Gpg
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Standard | OpenPGP (RFC 4880) |
| Implémentation | GnuPG (libre) |
| Version cible | GnuPG 2.2 / 2.4 |
| Commande | gpg
|
| Voir aussi | OpenSSL |
Présentation
GnuPG (GPG) est l'implémentation libre du standard OpenPGP. Elle permet le chiffrement et la signature de fichiers et de courriels, à la fois en mode symétrique (mot de passe partagé) et asymétrique (paire de clés publique/privée).
Cette page cible GnuPG 2.2 / 2.4 (Debian 12+, Ubuntu 22.04+, RHEL 9+). Sur ces systèmes, gpg est la version 2.x ; le nom gpg2 est un héritage qui a souvent disparu.
- https://gnupg.org/documentation/
- https://www.gpg4win.org/ (portage Windows)
Vocabulaire
- Trousseau (keyring) : ensemble des clés connues. Public dans
pubring.kbx, privé géré par l'agent. - Certificat de révocation : permet d'invalider sa propre clé si elle est compromise. À générer et stocker hors-ligne dès la création. Depuis GnuPG 2.1, un certificat est créé automatiquement dans
~/.gnupg/openpgp-revocs.d/. - WKD (Web Key Directory) : publication d'une clé via le domaine de l'adresse e-mail (méthode moderne, sans serveur de clés).
- KEYID / fingerprint : identifiant d'une clé. Préférer l'empreinte complète (40 hex) pour lever toute ambiguïté.
Génération et gestion des clés
Générer une clé
- Génération interactive avec contrôle complet (algorithme, taille, expiration) — méthode recommandée :
gpg --full-generate-key
- Choisir de préférence ECC (Curve 25519) ou, à défaut, RSA 4096, et toujours fixer une date d'expiration.
- Génération rapide non interactive (scripts) :
gpg --quick-generate-key "Alice <alice@example.com>" ed25519 cert 1y
Lister les clés
gpg --list-keys # clés publiques gpg --list-secret-keys # clés privées gpg --fingerprint KEYID # empreinte d'une clé
Certificat de révocation
- Générer manuellement un certificat de révocation :
gpg --output revoke.asc --gen-revoke KEYID
- À conserver hors-ligne (clé USB, papier). Pour révoquer plus tard :
gpg --import revoke.ascpuis renvoyer la clé sur les serveurs.
Modifier une clé
- Éditeur interactif (expiration, ajout d'UID, de sous-clés, niveau de confiance...) :
gpg --edit-key KEYID
- Commandes utiles dans l'éditeur :
expire,adduid,addkey,trust,passwd, puissave.
Sauvegarde / import
- Exporter la clé publique (format ASCII armuré) :
gpg --armor --export KEYID > alice_pub.asc
- Exporter la clé privée (sauvegarde — à protéger !) :
gpg --armor --export-secret-keys KEYID > alice_priv.asc
- Importer une clé :
gpg --import alice_pub.asc
- Exporter au format clé publique SSH (remplace l'ancien
gpgkey2ssh) :
gpg --export-ssh-key KEYID
Supprimer une clé
gpg --delete-keys KEYID # clé publique gpg --delete-secret-keys KEYID # clé privée
Chiffrement symétrique (mot de passe)
Pas de clé, juste une phrase de passe partagée.
- Chiffrer :
gpg --symmetric fichier.txt # → fichier.txt.gpg gpg --symmetric --cipher-algo AES256 fichier.txt # forcer AES-256
- Sortie ASCII armurée :
gpg --symmetric --armor fichier.txt # → fichier.txt.asc
- Déchiffrer :
gpg --decrypt fichier.txt.gpg > fichier.txt
Chiffrement asymétrique
- Chiffrer pour un destinataire :
gpg --encrypt --recipient bob@example.com fichier.txt
- Pour plusieurs destinataires :
gpg --encrypt --recipient alice@example.com --recipient bob@example.com fichier.txt
- Chiffrer et signer en même temps :
gpg --sign --encrypt --recipient bob@example.com fichier.txt
- Sortie ASCII armurée (pratique pour un envoi par mail) :
gpg --encrypt --armor --recipient bob@example.com fichier.txt
- Chiffrer pour soi-même :
gpg --encrypt --default-recipient-self fichier.txt
- Déchiffrer :
gpg --output fichier.txt --decrypt fichier.txt.gpg
Signature et vérification
- Signature détachée (le fichier reste intact, signature à part) :
gpg --armor --detach-sign fichier.txt # → fichier.txt.asc gpg --verify fichier.txt.asc fichier.txt
- Signature en clair (texte lisible + signature) :
gpg --clearsign message.txt # → message.txt.asc
- Signature inline (fichier signé et encapsulé) :
gpg --sign fichier.txt # → fichier.txt.gpg gpg --verify fichier.txt.gpg
- Certifier la clé d'un tiers (après vérification de son empreinte !) :
gpg --sign-key KEYID
Serveurs de clés et distribution
- Note — le pool SKS historique est mort. Utiliser le serveur vérifiant keys.openpgp.org (ne distribue les adresses e-mail qu'après validation, mais ne propage pas les signatures tierces / toile de confiance) ou le WKD.
- Envoyer sa clé :
gpg --keyserver hkps://keys.openpgp.org --send-keys KEYID
- Rechercher une clé :
gpg --keyserver hkps://keys.openpgp.org --search-keys bob@example.com
- Récupérer une clé par son identifiant :
gpg --keyserver hkps://keys.openpgp.org --recv-keys KEYID
- Rafraîchir les clés du trousseau :
gpg --refresh-keys
- Localiser une clé automatiquement (WKD / DANE, sans serveur) :
gpg --locate-keys bob@example.com
gpg-agent
Depuis GnuPG 2.1, gpg-agent démarre automatiquement et gère le cache des phrases de passe et les demandes pinentry. Le bricolage manuel de sockets/named pipes n'est plus nécessaire.
- Redémarrer l'agent (par ex. après modif de config) :
gpgconf --kill gpg-agent
- Recharger la configuration :
gpgconf --reload gpg-agent
- Configuration :
~/.gnupg/gpg-agent.conf(durée de cache, programme pinentry, etc.).
Suite d'outils GnuPG
- gpg — outil principal de chiffrement/signature OpenPGP (= version 2.x sur les systèmes récents).
- gpg-agent — démon de gestion des clés et phrases de passe.
- gpgconf — configuration et contrôle des composants.
- gpg-connect-agent — dialogue direct avec l'agent.
- gpgsm — équivalent pour le S/MIME (certificats X.509).
- dirmngr — accès réseau (serveurs de clés, CRL, OCSP).
- gpgv — vérification autonome de signatures.
- gpgsplit — découpe un message OpenPGP en paquets.
- gpgtar — chiffrement/signature d'archives (remplace l'ancien
gpg-zip).
Exemple : échange entre deux postes
- Poste d'Alice — création et export de sa clé publique
gpg --full-generate-key gpg --armor --export "Alice" > /tmp/alice_pub.asc
- Poste de Bob — import et chiffrement d'un fichier pour Alice
gpg --import /tmp/alice_pub.asc gpg --encrypt --armor --recipient Alice --output /tmp/message.asc fichier.txt
- Retour chez Alice — déchiffrement
gpg --output fichier.txt --decrypt /tmp/message.asc
- Variante sans transfert manuel de fichier, si la clé d'Alice est publiée (WKD ou keyserver) :
gpg --locate-keys alice@example.com gpg --encrypt --armor --recipient alice@example.com fichier.txt
Voir aussi
- OpenSSL — boîte à outils cryptographique en ligne de commande
- Cryptographie asymétrique — Portail — théorie des clés publique/privée
- Chiffrement en transit et cryptographie hybride