Vulnérabilité dans la gestion des clés PGP
Date : 07 Juillet 2005
NAI a publié au début du mois de septembre un avis relatif à une vulnérabilité dans le mécanisme de vérification des signatures PGP. La fonction de vérification de signature permet de contrôler qu'un document signé (email ou fichier) provient effectivement de l'émetteur supposé. Il s'agit d'une fonction fondamentale pour les échanges sécurisés. Le Cert-IST a donc examiné avec soin le problème soulevé, et a décidé, après analyse, de ne pas publier d'avis sur celui-ci. Cet article explique en détail le problème et son impact.
Gestion des clefs par PGP
Pour comprendre le problème, revenons sur la façon dont les clefs PGP sont construites. Une clef PGP (clef publique et/ou clef privée) est associée à une personne. Cette personne est décrite au moyen d'un identifiant PGP (UserdID) qui conventionnellement est constitué par un couple : nom de la personne, adresse email. Eventuellement, plusieurs identifiants peuvent être associés à la même clef PGP, pour le cas, par exemple, où quelqu'un dispose de plusieurs adresses emails. Afin de garantir que la clef considérée appartient effectivement à une personne donnée, les clefs sont signées par des tiers, qui par cette action se portent garants de l'authenticité de la clef. Ce mécanisme de confiance dans la signature (le "web of trust") se fait au niveau de chaque identifiant de la clef. Une clef PGP a donc typiquement la structure suivante :
Clef PGP
Identifiant1 (Albert Martin - Albert.Martin@cert-ist.com)
· Signature du couple (Clef, Identifiant1) par Mr XXX
· Signature du couple (Clef, Identifiant1) par Mr YYY
· Etc ...
Identifiant2 (Albert Martin - amartin@free.fr)
· Signature du couple (Clef, Identifiant2) par Mr ZZZ
· Etc ...
Dans cet exemple, Mr XXX certifie que la clef PGP considérée appartient effectivement à " Albert.Martin@cert-ist.com ".
Nature de la vulnérabilité
Lorsque PGP vérifie la signature d'un message, il utilise pour informer que la signature est correcte l'identifiant principal de la clef. Dans l'exemple précédent, PGP dira donc simplement que le message provient effectivement de " Albert Martin - Albert.Martin@cert-ist.com " (parce que " Idenfiant1 " est l'identifiant principal).
Ce mécanisme peut, dans certains cas, permettre de tromper un utilisateur insuffisamment vigilant. Supposons ainsi que " Albert Martin " modifie sa clef PGP pour ajouter un 3eme identifiant (par exemple " Cert-IST - Cert-ist@cert-ist.com ") et déclare cet identifiant comme identifiant principal. Avec cette clef modifiée, un message signé avec la clef de " Albert Martin ", une fois vérifiée par PGP produira un message du type " la signature de Cert-IST - Cert-ist@cert-ist.com est bonne " (puisque c'est maintenant l'identifiant par défaut de cette clef). Dans ce cas, il est clair que l'utilisateur pourrait penser (à tort) que le message a été envoyé par Cert-ist@cert-ist.com et non par Albert Martin.
Pour que cette usurpation d'identité fonctionne, il est cependant indispensable qu'Albert Martin convainque tous les utilisateurs de sa clef d'importer sa clef publique ainsi modifiée (celle qui indique que l'identifiant principal est " Cert-IST ") dans leur anneau de clefs. C'est en effet l'anneau de clef local qui est utilisé lors de toutes les opérations PGP (y compris la vérification de signature).
Précautions
Comme on le voit, la vulnérabilité n'est exploitable que si l'utilisateur visé importe des clefs sans précautions (i.e. sans vérifier la description de la clef et ses signataires). Il est relativement peu probable que cela se produise au moment de l'ajout d'une nouvelle clef dans l'anneau de clefs. Par contre, cela peut éventuellement se produire lors d'une mise à jour : un utilisateur double clique sur un fichier " Albert Martin.asc " (par exemple reçu par email ou téléchargé sur un serveur de clefs PGP), puis importe la clef sans prendre soin de l'inspecter ...
Etant donné les conditions tout à fait particulières requises pour exploiter cette vulnérabilité (et le fait que l'attaque implique une négligence peu probable de l'utilisateur visé), le Cert-IST n'a pas émis d'avis sur ce problème. Vous en retrouverez donc simplement la description dans la rubrique " Failles n'ayant pas fait l'objet d'avis " du Bulletin.
NAI/PGP a publié pour cette vulnérabilité des correctifs à appliquer sur les dernières versions PGP distribuées (cf. l'avis NAI mentionné ci-dessous).
Informations complémentaires
Avis NAI - "PGPsdk Key Validity Vulnerability" : http://www.pgp.com/support/product-advisories/pgpsdk.asp