08/07/2010

Organisation et déroulement d’une PGP Key Signing Party

Toute cette semaine je suis aux Rencontres Mondiales du Logiciel Libre. Ce matin je repère quelques affiches proposant aux geeks de se retrouver pour une Key Signing Party, càd. un échange de clés PGP où chacun vérifie l’identité des participants afin de signer les clés et ainsi étendre le Web of Trust.

Malheureusement l’organisateur n’avait rien organisé de plus que les affiches. Arrivé sur place j’ai donc dû faire ce que j’ai pu pour prendre les choses en main. Voici enfin compilé et en français quelques conseils pour qu’une Key Signing Party d’une taille raisonnable (nous étions une quinzaine) se déroule correctement.

C’est quoi PGP et une Key Signing Party?

Pour ceux qui ne connaissent pas, PGP ou “Pretty Good Privacy” est un système cryptographique introduit par Philip Zimmermann et basé sur le principe connu des paires de clés publiques et privées. Désormais standardisé en la norme OpenPGP (RFC4880), PGP permet de sécuriser ses communications soit en signant un message pour prouver son auteur soit en chiffrant le contenu pour être sûr que seul le destinataire légitime pourra le lire.

Mais puisque tout le monde peut générer sa paire de clés de chiffrement, il faut un moyen de lui donner de la valeur : il faut que d’autres personnes signent la clé publique pour certifier l’identité de son propriétaire. Pour cela on organise lors de divers rassemblements geeks des Key Signing Parties où les utilisateurs de PGP s’échangent leurs clés publiques et procèdent à une vérification de l’identité (grâce à un Passeport ou autre document officiel).

Étape 1 : Informez les gens à temps

Les RMLL durent une semaine et l’annonce de la Key Signing s’est pourtant faite moins de 8h avant son déroulement. Il vaut mieux prévenir plus tôt pour que les gens puissent éventuellement créer leur première clé PGP et se documenter sur son utilisation.

Surtout, il faut récolter les clés publiques des participants de préférence avant le début de la Key Signing Party.

Étape 2 : Récoltez les clés publiques des participants

Même si la plupart des clés sont disponibles sur le serveur de clés du MIT, elles n’y sont justement pas toutes. Pire, certains utilisateurs de PGP préfèrent que leurs clés ne se partagent que de personne à personne.

Il est donc important que l’organisateur récupère toutes les clés publiques, de préférence avant la Key Signing, pour éviter qu’elle ne dure trop longtemps.

Pour cela demandez aux participants de vous envoyer leur clé par e-mail (non chiffré mais signé) ou de l’uploader sur un serveur que vous mettriez en place.

Étape 3 : Compilez les informations du keyring et imprimez-les

Une fois que vous avez récolté les clés publiques de tous les participants il faut en faire quelque chose d’utile pour la Key Signing Party. Un tableau tel que celui-ci est intéressant:

ID Fingerprint et UIDs Fingerprint vérifié Identité vérifiée
4096R/ 0AA3BF0E E016 B36D 3BDB 9BDB D69E 138C BCDB 95B7 0AA3 BF0E
Christophe De Wolf (Tito) <tito@webtito.be>
Christophe De Wolf (Tito) <christophe.dewolf@webtito.be>

Ensuite envoyez-le ou mieux imprimez-le pour chaque participant. La Key Signing peut commencer.

Étape 4 : Un peu d’ordre dans tout ça…

C’est maintenant le grand jour. Demandez aux participants de venir avec une pièce d’identité, la liste imprimée, un stylo et leur propre fingerprint.

Les participants se mettent en deux lignes face à face, dans l’ordre de la liste. Normalement lors d’une Key Signing Party on n’utilise pas de laptop. Les deux participants l’un en face de l’autre vérfient mutuellement la fingerprint imprimée sur la liste et la pièce d’identité. Après vérification ils cochent les cases correspondantes.

Une fois tout vérifié, chacun passe au participant à sa droite. Ceux en bout de file changent de ligne. Et ainsi de suite… Normalement à la fin tout le monde aura vérifié les identité des de tous les autres participants.

Si la Key Signing Party prend des proportions inattendues il est peut-être nécessaire d’imaginer un autre système, par exemple en utilisant une webcam et un projecteur pour que tout le monde puisse vérifier une même identité en même temps.

Étape 5 : Distribuez le keyring

Puisque vous avez récolté toutes les clés publiques, il faut maintenant les retransmettre à tous les participants. Pour cela créez un keyring, càd. un fichier texte avec toutes les clés publiques les unes à la suite des autres. Vous pouvez éventuellement signer ou fournir le hash SHA-1 de ce fichier pour l’authentifier.

Si vous avez déjà importé les clés dans votre keyring personnel vous pouvez facilemenet exporter vers un keyring dédié à la Key Signing Party :

$ gpg --armor --export key1 key2 key3 key4 > Keyring-de-MaSuperKeySigningParty.asc

Faites en sorte que tous les participants y aient accès : mettez-le sur un serveur web ou envoyez-le par e-mail.

Étape 6 : Expliquez aux n00bs comment signer

Bah oui à toute Key Signing Party il y aura forcément des puceaux du PGP. Expliquez-leur la procédure idéale :

  • Récupérer et importer le keyring dans gpg
  • Vérifier consciencieusement le fingerprint et l’identité des différentes clés publiques en les comparant au papier rempli durant la Key Signing
  • Signer chaque clé publique uniquement si on est sûr de sa vérification d’identité
  • Envoyer les clés ainsi signées par e-mail à son propriétaire original. Éviter de les uploader directement sur un serveur de clés car cela permet de vérifier l’adresse e-mail.

À noter qu’il existe des outils pour automatiser tout cela. J’utilise PIUS, un script Python qui se charge de tout jusqu’à l’envoi par e-mail assez simplement :

./pius -H smtp.gmail.com -P 587 -u tito@webtito.be -S -A  -s <MA_KEY_ID> -r </chemin/vers/keyring>

En savoir plus…