10- Un bug de GnuPG compromet les clés ElGamal

les doubles clés ElGamal sont concernées
vendredi 5 décembre 2003
par  Fabien ILLIDE, Gaétan RYCKEBOER
popularité : 1%

Werner Koch a annoncé le 27 novembre 2003 la découverte par Phong Nguyen (un étudiant de l’ENS) d’un bug critique dans GnuPG. Ce bug permet d’obtenir en quelques secondes la clé secrÚte de certaines personnes. Une fois cette clé en sa possession, un utilisateur malveillant peut ainsi usurper leur identité ou déchiffrer leurs couriers électroniques. Et moi, comment vérifier si je suis concerné ?

Effectivement, la découverte de ce problème a suscité de nombreuses interrogations de la part des utilisateurs de GnuPG. Heureusement, seules les doubles clés utilisant l’algorithme ElGamal pour la signature et le chiffrement sont affectées, et leur nombre total est estimé à environ un millier.

La liste de toutes les clés de votre trousseau affectées peut être obtenue avec la commande suivante :
gpg --list-keys --with-colon | awk -F: '{if($4 == 20) print "gpg --list-keys 0x"$5}'

Ou grâce à cette autre commande, plus simple mais moins complète :

gpg --list-keys | grep 1024G
gpg --list-keys | grep 2048G

Voici un exemple de clé affectée :
pub 1024D/xxxxxxxx 1998-10-12 Foo bar
sub 1024G/xxxxxxxx 1998-10-12 [expire : 2012-10-25]

(sous Windows, il faut utiliser la commande gpg --list-keys --with-colon | FIND ":20:")

Notez le G majuscule qui indique les doubles clés ElGamal pour le chiffrement ou la signature. Les clés marquées d’un D (DSA), d’un R (RSA) ou d’un g (ElGamal simple) ne sont pas compromises. Dans le cas présent, c’est une sous clé qui est compromise ; il ne faut pas révoquer la clé primaire, mais simplement la sous clé (via la commande gpg --edit-key).

Si votre clé publique est compromise, vous devez immédiatement créer un certificat de révocation et le transmettre aux serveurs de clés, puis en informer toutes les personnes ayant signé votre clé, afin qu’elles révoquent leur signature. Il faut absolument sortir du réseau de confiance et éviter ainsi qu’un tiers usurpe votre identité et compromette la totalité de votre réseau de confiance.

Reportez vous au paragraphe 3 de notre FAQ GPG pour savoir comment révoquer votre clé.

Un patch (correctif de sécurité) servant à désactiver cette fonction est disponible. Il sera intégré aux prochaines versions de GnuPG.


Pourquoi révoquer sa signature ? Elle est indépendante de la clé, non ?

Signer une clé consiste à dire : « cette clé a été vérifiée. Elle appartient bien à la personne qui prétend la détenir. Si vous me faites confiance, vous pouvez lui faire confiance ». C’est vrai, au moment de la signature, puisque gpg est réputé sûr, et que vous avez vérifié un papier d’identité attestant de l’identité de la personne vous présentant la clé à signer.

Mais la signature dit aussi que l’utilisateur peut faire confiance à cette clé. Moi, qui l’ai signée, je lui accorde la mienne. Or, j’ai connaissance d’une faille qui permet à un tiers de s’approprier cette clé, et de se faire passer pour la personne qui a émise la clé gpg et me l’a présentée.

Autrement dit, j’ai connaissance d’un moyen qui permet à quelqu’un d’autre de l’utiliser à mon insu. La clé n’est donc plus sûre, et je le sais. Je ne peux me permettre de dire que j’accorde ma confiance à cette clé. Je révoque donc ma signature, qui représente la relation de confiance.

En générant le certificat de révocation, je dit ouvertement que j’ai signé la clé, mais que maintenant je ne lui fais plus confiance :
« cette clé a été vérifiée. Elle appartenait, au moment de la vérification, à une personne qui a attesté de son identité. Maintenant, cette clé est potentielement (ou complètement) compromise. Si vous me faites confiance, ne faites plus confiance à cette clé ».

Maintenant, pour votre utilisation personelle, n’oubliez pas d’ajuster la valeur de confiance que vous accordez à la clé, en jouant sur le paramètre "trust" (voir le chapitre 4 de la FAQ, relatif aux réseaux de confiance).


D’accord. C’est donc important, ça fait partie de mon rôle de suivre les clés que j’ai signé, et leur validité. Mais maintenant, comment je la révoque, cette signature ? Comment j’annonce que cette clé n’est plus fiable ?

Prenons un cas pratique. Tout d’abord, je cherche les clés compromises que j’ai signé. Il n’y en a pas beaucoup, ça va aller vite.

On voit que la clé ElGamal qui pourrait être compromise, est une sous clé de la clé DSA 1024D/3DCXXXXX. Personnellement, je n’accord pas ma confiance aux sous clés. Je choisis de révoquer mes signatures pour la totalité de la clé [1].

Ensuite, j’édite la clé [2], avec mon gpg mi-français mi-anglais, et j’utilise la commande revsig :

Notez bien le "y", les questions sont en français, les réponses en anglais ;-)

Il va falloir donner une raison à la révocation. Seul le changement de nom d’utilisateur est possible, je vais mettre en commentaire la raison réelle de la révocation :

Maintenant, il suffit de taper son mot de passe, et de vérifier que tout s’est bien déroulé.

On voit qu’une ligne nouvelle est apparue. Il y a un certificat de révocation sur les deux UID (xxxx@foo.org et xxxx@debian.org) que j’avais signés.

Tout en bas, on voit la sous clé ElGamal incriminée.

gaetan@nutella : /signatures$


[1C’est mon avis, vous n’êtes pas obligés de faire comme moi, mais je n’aime pas jouer avec la sécurité, et les sous clés GPG sont très mal comprises voir mal gérées par les logiciels. Pour ne pas introduire de confusion dans la tête des utilisateurs, je décourage l’utilisation des sous clés, et ici, je révoque complètement ma confiance.

[2gpg --edit-key #KID


Commentaires

Agenda

<<

2020

>>

<<

Juin

>>

Aujourd’hui

LuMaMeJeVeSaDi
1234567
891011121314
15161718192021
22232425262728
2930     

Annonces

Annuaire LibreNord

Retrouvez l’annuaire de logiciels libres créé par l’association Club Linux Nord-Pas de Calais sur le site suivant http://www.librenord.org