La première opération à réaliser est la génération d'une paire clef privée/clef publique avec la commande
--gen-key
:
gpg --gen-key
Cette commande génère une nouvelle paire de clefs, une privée et une publique en se basant sur vos réponses à quelques
questions. La première concerne l'algorithme de chiffrement et de signature que vous voulez utiliser. Vous trouverez des
informations sur les algorithmes proposés dans PGP DH vs. RSA FAQ
et surtout dans l'excellent ouvrage de Bruce Schneier : Cryptographie appliquée.
Le choix DSA and ElGamal est à privilégier étant donné leur utilisation très courante sur le réseau Internet. Si vous
choisissez de n'utiliser que l'algorithme ElGamal, il vous sera demandé de confirmer ce choix (implications à préciser).
La seconde question concerne la longueur de votre clef de chiffrement ou de signature si vous avez choisi de générer une clef de signature seulement. La réponse à cette question dépend pour beaucoup de l'usage que vous comptez en faire. Pour l'algorithme DSA, la longueur de la clef est généralement de 1024 bits. Pour ElGamal, vous pourrez choisir une longueur entre 768 bits et 2048 bits. Dans l'absolu, plus une clef est longue, mieux c'est. Cependant, le temps de chiffrement augmente avec la longueur de votre clef. Si vous n'avez pas d'idée précise quand à la longueur nécessaire, le mieux est de choisir la taille proposée par défaut. Si à l'usage cette taille s'avère inadaptée, vous pourrez toujours générer une nouvelle paire de clef plus adaptée à vos besoins.
Les questions suivantes servent à collecter de l'information qui servira plus tard à distinguer sans ambiguïté cette nouvelle paire de clefs parmi toutes les paires de clefs en votre possession. C'est grâce à ces informations, par exemple, que vous pourrez choisir la paire de clefs à utiliser pour signer un message. Vous devez donc entrer un nom, une adresse email et un commentaire. Le commentaire étant un champs libre est très pratique pour distinguer vos paires de clefs les unes des autres. Toutes ces informations et un générateur de nombres pseudo-aléatoires seront ensuite utilisés pour générer une nouvelle paire de clefs. Vous pourrez, si vous le souhaitez, modifier ultérieurement les informations contenues dans une paire de clefs.
Il ne vous reste plus qu'à choisir une phrase clef qui servira à chiffrer votre clef privée pour pouvoir la stocker sans risques sur votre disque dur. Cette phrase vous sera demandée à chaque fois que vous voudrez utilisez votre clef privée. Autrement dit, si vous oubliez la phrase clef d'une paire de clefs, vous ne pourrez plus utiliser cette paire de clefs ! Veillez donc à vous prémunir contre ce genre de risques sans mettre en péril la confidentialité de votre phrase clef. En effet, la sécurité de vos messages repose sur la confidentialité de votre clef privée et la confidentialité de votre clef privée sur celle de votre phrase clef. La première mesure à prendre est donc de choisir une phrase clef robuste. Le problème ici est qu'il n'existe pas de définition rigoureuse de robuste. Nous pouvons seulement donner quelques conseils :
La seconde mesure consiste à générer un certificat de révocation pour toute une nouvelle paire de clefs. La raison de procéder ainsi est qu'il vous faut disposer de la clef privée, et donc de la phrase clef, pour générer le certificat de révocation d'une paire de clef. Générer le certificat de révocation le plus tôt possible vous mets à l'abri de l'oubli de votre clef. Vous devrez bien sûr conserver ce certificat à l'abri.
Une fois toutes les informations entrées, le calcul de votre paire de clef commence. Le générateur de nombres pseudo-aléatoires a besoin d'un très grand nombre de données aléatoires, ce qui est difficile sur un ordinateur. Vous pouvez améliorer la qualité des résultats du générateur de nombres pseudo-aléatoires en générant vous même un peu de hasard, par exemple en bougeant votre souris, en tapant sur votre clavier, en exécutant des applications, etc. L'utilisation de pseudo-hasard est nécessaire pour s'assurer qu'il n'est pas possible d'obtenir votre clef privée en effectuant le même calcul que vous. En fait, les chances de succès d'une telle attaque sont directement liées à la qualité du pseudo-hasard généré par le générateur de nombres pseudo-aléatoires.
Vos paires de clefs sont stockées sur votre système et la commande --export
vous permet d'extraire la
clef publique d'une paire de clefs et de l'écrire sur la sortie standard :
gpg --export [info-clef]
[info-clef]
est une information permettant de distinguer sans ambiguïté la paire de clefs dont vous voulez
extraire la clef publique. Si cette information n'est pas fournie alors ce sont les clefs publiques de toutes les paires
de clefs en votre possession qui seront affichées. Bien sûr, si vous ne possedez qu'une paire de clef, aucune
information n'est nécessaire pour en extraire la clef publique.
La commande --export
écrit la clef publique en caractères codés sur 8 bits, ce qui peut poser quelques
problèmes pour l'envoyer par email ou pour l'afficher. L'option --armor
ou -a
permet d'obtenir une clef publique en caractères codés sur 7 bits.
Par défaut, la clef publique est écrite sur la sortie standard. L'option --output
ou -o
permet
d'écrire cette clef dans un fichier plutôt que sur la sortie standard.
Une fois votre clef publique dans un fichier, vous devez la mettre à disposition de vos éventuels interlocuteurs pour
qu'ils puissent s'en servir pour vous envoyer des messages chiffrés avec. Vous pouvez le faire, par exemple, en plaçant cette
clef sur une de vos pages web, dans votre fichier ~/.plan
, en l'envoyant par mail ou en la déposant sur un
serveur de clefs.
Pour pouvoir utiliser la clef publique d'un de vos interlocuteurs, vous devez l'ajouter à votre trousseau grâce à la
commande --import
:
gpg --import [fichier]
Si aucun nom de fichier n'est passé en paramètre, la clef publique est lue depuis l'entrée standard.
La commande --list-keys
affiche toutes les clefs publiques en votre possession et toutes les informations
attachées à vos clefs publique sur la sortie standard :
gpg --list-keys
Vous pouvez aussi obtenir les signatures des clefs publiques en votre possession avec la commande
--list-sigs
:
gpg --list-sigs
et les clefs privées de votre trousseau avec la commande --list-secret-keys
:
gpg --list-secret-keys
La commande --delete-key
vous permet d'effacer une clef publique de votre trousseau :
gpg --delete-key info-clef
et la commande --delete-secret-key
vous permet d'effacer une clef privée de votre trousseau :
gpg --delete-secret-key
--fingerprint
affiche les empreintes des clefs publiques de votre trousseau :
gpg --fingerprint
--edit-key
:
gpg --edit-key info-clef
Cette commande vous donne accès à un menu textuel qui vous permet, entre autres, de signer la clef désignée par
info-clef
en tapant sign
. Une fois la clef publique signée, vous pouvez la
rendre publique de la même façon que pour une de vos clefs publiques. Une fois de plus, rappelons
que vous pouvez totalement compromettre la sécurité de vos échanges et
de ceux de ceux qui vous font confiance, en
accordant votre confiance à la légère. Vous ne donc signer une clef publique que lorsque vous êtes ABSOLUMENT SUR
de l'authenticité de la clef que vous signez.
Ce menu textuel vous permet aussi de modifier le niveau de confiance avec la commande trust
. Les niveaux de
confiance sont :
Vous pouvez générer un certificat de révocation pour une paire de clefs en votre possession à tout moment avec la
commande --gen-revoke
:
gpg --gen-revoke info-clef
Attention, la génération d'un certificat de révocation d'une paire de clef nécessite de connaitre la clef privée de la
paire à révoquer. Si vous oubliez la phrase clef d'une paire de clefs, vous ne pourrez plus révoquer cette paire. Vous
avez donc intêret de ce point de vue à générer ce certificat dès que vous créer une paire. D'un autre coté, si quelqu'un
réussi à obtenir ce certificat, il peut faire croire que vous avez révoquer la paire de clefs décrite par ce
certificat. Vous devrez donc mettre ce certificat en sécurité tant que vous voudrez vous servir de la paire de clefs
révocable par ce certificat.
La commande --edit-key
vous donne accès à un menu textuel vous permettant de modifier certaines
informations associées à une clef publique de votre trousseau de clefs :
gpg --edit-key info-clef
Vous pouvez connaitre les commandes accessibles sous ce menu textuel avec la commande help
.