logo

Utilisacteur Linux-Québec

OpenPGP Keysigning Party

Oui, c'est très facile d'échanger des clef OpenPGP sur internet. Mais rien ne garantit que personne n'intercepte les mails ou les requêtes HTTP, et remplace une clef par une autre. Ça permettrait à l'attaquant de déchiffrer tous les messages, et se faire passer pour un autre.

L'échange physique de clefs reste le moyen le plus sûr d'établir qu'une clef appartient à la bonne personne. Chacun emporte avec lui son empreinte (fingerprint), et la donne à tous les intéressés. Une fois retournés chez eux, ils téléchargent la clef d'un endroit quelconque, et vérifient que l'empreinte de la clef téléchargée correspond à celle reçue en personne.

Une fois la clef vérifiée de cette façon, il est possible de signer la clef, pour:

  1. se rappeler que la clef qu'on a sous les yeux a été vérifiée correctement
  2. partager la signature avec d'autre personnes

Si je trust ce qui vient de Bob (j'ai vérifié sa clef), et que Alice a vérifié ma clef, alors Alice peut truster Bob si je présente à Alice ma signature de la clef de Bob.

Déroulement

1. Générez une paire de clefs

Si vous n'avez pas déjà généré de paire de clefs OpenPGP, vous devez évidemment le faire. Avec GnuPG, on fait:

gpg --gen-key

2. Envoyez votre clef publique

Pour que les autres participants puissent signer votre clef, ils doivent l'obtenir d'une certaine façon. Nous avons installé un serveur de clefs (apt-get install pks), et vous pouvez donc simplement faire:

gpg --keyserver linux-quebec.org --send-keys [email protected]

Vous pouvez comme toujours remplacer votre adresse de courriel par l'identifiant exact de clef (dans mon cas: 39D4B2D4).

3. Informez le coordonateur de votre présence

Envoyez les informations de votre clef par courriel à gpg-party à linux-quebec.org, avec minimalement l'identifiant de votre clef, et préférablement aussi votre nom et courriel complets, comme ils figurent dans votre clef.

Le coordonateur saura alors qu'il faut vous ajouter à la liste des clefs à signer.

4. Présentez-vous au party

Vous devez amener:

  • Vous-mêmes (impossible de participer virtuellement)
  • Deux pièces d'identité (permis de conduire et carte d'assurance maladie sont de bons exemples)
  • Identifiant de clef ("39D4B2D4", par exemple), type de clef et grosseur ("1024D", par exemple), empreinte hexadécimale ("5E84 1089 0036 BB63 6997 232C 8FFB 777D 39D4 B2D4", par exemple)
  • Un crayon

Vous pouvez obtenir toutes les informations du point 3 en faisant:

gpg --fingerprint [email protected]

Le coordonateur du party vous donnera une copie de la liste des empreintes des participants. Vérifiez que la liste que possède le coordonateur comporte bien votre clef.

Les participants se mettront en ligne. Le premier en avant vérifiera sa clef avec le second, et vice-versa, puis passera à la troisième personne en file. La seconde personne fait la même chose, et à la fin, la ligne se sera repliée sur elle-même, et chacun aura vérifié les clefs de tous. Un crochet sera mis au niveau de chaque clef vérifiée.

5. Signez toutes les clefs vérifiées

Importez la clef de tous les participants en exécutant la commande suivante pour chaque clef:

gpg --keyserver linux-quebec.org --search-keys 39D4B2D4

Vérifiez les informations de la clef en vous fiant à la feuille que vous avait remis le coordonateur, et que avez utilisée pour vérifier les clefs des autres participants:

gpg --fingerprint 39D4B2D4

Signez chaque clef en exécutant:

gpg --sign-key 39D4B2D4

6. Envoyez les clefs signées au serveur, ou à son propriétaire

gpg --keyserver linux-quebec.org --send-keys 39D4B2D4

7. Téléchargement des signatures

Quelques heures/jours après l'événement, vous pouvez aller chercher les nouvelles signatures pour une clef précise en faisant:

gpg --keyserver linux-quebec.org --recv-keys 39D4B2D4

Notez que vous pouvez spécifier plus d'une clef à la fois.

Pour en savoir plus

  • GnuPG Keysigning Party HOWTO
  • Jason Harris' page on PGP keysignings

Si vous utilisez Debian, jetez un petit coup d'oeil à au package signing-party (apt-cache show signing-party), qui contient un script pour générer un PostScript à imprimer, contenant plusieurs fois votre empreinte sous forme de bandes à découper, pour distribuer aux autres participants, et qui contient aussi un script pour envoyer une signature au propriétaire de la clef.