". Sur base de cette
identification, on pourrait croire que cette clé appartient au Président des USA. En fait, cette
clé est plus que probablement une fausse clé qui n'appartient pas du tout au locataire de la
Maison Blanche. Ce problème de la mise en correspondance entre un individu (une adresse
email) et une clé publique est le talon d'Achille de tout système à clé publique.
Heureusement, PGP dispose de plusieurs mécanismes permettant de vérifier qu'une clé
publique appartient bien à la personne mentionnée dans son identificateur. Le premier
mécanisme est celui des "empreintes de clé" (key fingerprints). Ces empreintes sont
constituées d'une somme de contrôle calculée sur votre clé publique (pgp -kvc
identificateur). Elles sont utiles lorsque l'on veut vérifier une clé PGP avec son propriétaire
supposé. Par exemple, pour vérifier une clé publique par téléphone, il suffit de contrôler
cette empreinte et non toute la clé. Le second mécanisme est celui de la certification des
clés. Les certificats de clés permettent à tout utilisateur de PGP de signer (certifier) la clé
d'un autre utilisateur. L'idée de la certification est qu'un utilisateur peut raisonnablement faire
confiance à une clé qui a été certifiée par quelqu'un en qui il a confiance. Pour bien
comprendre ce mécanisme, le mieux est probablement de prendre un petit exemple.
Utilité du mécanisme de certification des clés
Considérons trois utilisateurs, Alice, Bob et Charles. Supposons que Alice connaît
Bob et que Charles connaît Bob, mais qu'Alice et Charles ne se connaissaient pas.
Supposons en outre que ces trois utilisateurs ont chacun généré une clé PGP avec comme
identificateur leur nom (P_Alice, P_Bob et P_Charles). Comme Alice connaît Bob, elle a
l'occasion de vérifier (par exemple en le rencontrant, ou par téléphone grâce aux empreintes
de clés) que P_Bob est bien la clé publique de Bob. Pour annoncer aux autres utilisateurs
que P_Bob est bien la clé de l'individu dénommé Bob, Alice certifie la clé de Bob et Bob fait
de même. Après avoir certifié la clé d'Alice, Bob retransmet P_Alice, munie de son certificat
au serveur de clés PGP. Comme Bob et Charles se connaissaient, ils ont également
l'occasion de se certifier mutuellement leurs clés. Bob peut donc envoyer la clé P_Charles
certifiée au serveur de clés PGP. Si maintenant Alice demande la clé de Charles au serveur
de clés PGP, elle la recevra munie du certificat de Bob. Si Alice fait confiance à Bob, la
présence du certificat de Bob dans la clé P_Charles pourra suffire à convaincre Alice que
cette clé est bien celle de Charles.
Dans un monde parfait, tel que celui de l'exemple précédent, la certification n'est pas
nécessaire. En fait, la certification n'est utile que lorsque quelqu'un veut tromper le système.
Considérons à nouveau les trois utilisateurs de l'exemple ci-dessus, mais supposons que
Michel, pour n'importe quelle raison, souhaite se faire passer pour Charles. Pour cela, Michel
génère une clé PGP P2_Charles et la transmet aux serveurs de clés. A cette clé, Michel a
pris soin d'associer le nom "Charles" et pas son vrai nom. Lorsque Alice demandera la clé
publique de l'utilisateur Charles sur le serveur de clés, elle recevra deux clés en réponse
(P_Charles et P2_Charles). Si Alice ne regarde que le nom associé à ces deux clés, elle ne
pourra pas les distinguer, puisqu'elles sont toutes deux associées au nom "Charles". Par
contre, si Alice regarde les certificats des deux clés, elle verra que P_Charles est certifiée
par Bob en qui elle a confiance, tandis que P2_Charles n'est certifié par personne en qui
Alice a confiance. Alice n'utilisera que la clé P_Charles pour vérifier les messages signés par
Charles ou pour lui envoyer des messages cryptés et pourra donc supposer, à raison, que la
clé P2_Charles ne correspond pas à l'utilisateur "Charles".
Obtention des clés publiques
Si vous voyez régulièrement vos correspondants, le plus simple est de leur
demander leur clé publique sur disquette. Si ce n'est pas possible, vous pouvez interroger un
serveur de clés PGP. Par exemple, le serveur de clés de RTFM vous répondra par email à
l'adresse pgp-clefs-publiques@pgp.netline.be. Pour récupérer une clé via le serveur email,
vous devez soit connaître le numéro de la clé (KeyId) que vous cherchez, soit une partie de
l'identificateur de l'utilisateur (UserId), par exemple son adresse email. Si vous connaissez le
numéro de la clé, envoyez un message vide avec comme sujet "GET 0xKeyId" (sans les
guillemets et où KeyId est le numéro de la clé voulue) à l'adresse ci-dessus. Si vous ne
connaissez que l'adresse email, vous pouvez demander au serveur de clés la liste des clés
contenant cette adresse email en envoyant un message vide avec comme sujet "INDEX
nom@site" à l'adresse ci-dessus. Le serveur de clés vous renverra alors un listing des clés
correspondant à nom@site. Grâce à cette liste vous pourrez trouver le KeyId qui vous
intéresse et réinterroger le serveur de clés avec la commande GET. Le serveur de clés
supporte d'autres commandes qui peuvent vous être utiles (MGET par exemple). Envoyez-
lui un message avec "HELP" comme sujet pour en savoir plus. Lorsque vous recevez la clé
publique d'un autre utilisateur, par exemple via le serveur de clés, vous devez demander à
votre PGP de l'ajouter à votre liste de clés publiques. Pour cela, il vous suffit de lancer PGP
avec le message contenant cette clé comme paramètre, et PGP rajoutera la clé contenue
dans ce message à votre liste de clés publiques (pubring.pgp en l'occurrence).
Signature d'un message
PGP peut signer un message ASCII de deux façons. Avec la première option (pgp -
sta message), PGP crypte votre message avec votre clé privée. Le message crypté est
encodé de façon à pouvoir être transmis par email et se retrouve par défaut dans le fichier
message.asc. Toute personne qui dispose de votre clé publique peut alors vérifier (pgp
message) que le message vient bien de vous, mais il est totalement illisible pour quelqu'un
qui n'a pas votre clé publique. Si vous voulez que le message soit signé mais reste lisible par
ceux qui n'ont pas votre clé (par exemple si vous voulez poster ce message sur Usenet),
vous devez utiliser l'option "signature en clair" de PGP (pgp -sta +clearsig=on message). De
cette façon, PGP conservera votre message intacte, mais rajoutera, à la fin du message,
une somme de contrôle qui est, elle, cryptée avec votre clé privée. Cette somme de contrôle
permettra à toute personne qui dispose de votre clé de vérifier que le message n'a pas été
modifié en recalculant la somme de contrôle du message et en la comparant à celle qui a été
cryptée avec votre clé privée. Si vous comptez utiliser cette fonction de PGP sur Fidonet ou
Internet, faites quelques essais pour vérifier que vos messages passent correctement. En
effet, certains programmes de gestion du mail, tant sur Internet que sur Fidonet, ont la
mauvaise habitude de modifier légèrement (par exemple en supprimant des espaces ou en
changeant From en >From lorsqu'il apparaît en début de ligne) certains messages. La
moindre modification d'un message signé en clair (même un espace qui manque) invalidera
la signature PGP.
Vérification d'une signature
Pour vérifier la signature d'un message que vous avez reçu, il vous suffit de lancer
pgp avec comme paramètre ce message. Si la clé publique nécessaire à la vérification de la
signature est présente dans votre fichier pubring.pgp, PGP sera en mesure de valider la
signature. Sinon, PGP vous indiquera le numéro de la clé publique nécessaire pour vérifier
la signature.
Messages confidentiels
Si vous désirez envoyer un message de façon confidentielle à Alice, il vous suffit de
demander à PGP de le crypter avec la clé publique d'Alice (pgp -eta message Alice). Si Alice
veut lire le message que vous lui avez envoyé, elle doit demander à PGP de le décrypter
avec sa clé privée (pgp message_crypté).
Messages signés et confidentiels
Si vous désirez envoyer à Bob un message signé, de façon confidentielle, vous
pouvez demander à PGP de signer le message avec votre clé privée et de le crypter avec la
clé publique de Bob en une seule commande (pgp -esta message Bob). Pour autant que Bob
dispose de votre clé publique, il pourra, également, décrypter et vérifier la signature du
message en une seule opération (pgp message_reçu).
Pour en savoir plus :
La lecture du manuel de PGP (en anglais malheureusement) est vivement conseillée
à tous les utilisateurs potentiels.
Sur Fidonet, les abonnés à PGP.B pourront probablement vous aider.
Sur Usenet, demandez de l'aide dans les newsgroups comp.security.pgp.*
La FAQ de PGP, postée régulièrement sur comp.security.pgp.announce
et disponible sur http://www.pgp.net/pgpnet/pgp-faq/
contient également de nombreuses informations.
Olivier Bonaventure
olivier@rtfm.be
Retour à la page principale de En-Ligne
WebMaster
Dernière modification de cette page : 29 juillet 1997