Utiliser Keyoxide avec une clé OpenPGP via WKD

En 2020, Keybase a été racheté par Zoom, et par conséquent ses développeurs ont stoppé toute contribution à son code. Si le site, la messagerie et même les 250 Go de stockage chiffré sont encore accessibles, on ne peut savoir pour combien de temps. Comme solution alternative, Keyoxide (oxyde, base, oui c’est limpide) permet de produire des preuves d’identité de manière décentralisée.

Au lieu d’avoir une entité centrale gardant les preuves pour tous les comptes, l’idée de Keyoxide est de stocker ces preuves dans une clé cryptographique (type PGP, mais pas seulement). La page présentée par Keyoxide ne s’occupe alors que de la lecture des données d’une clé, et de la vérification de ces preuves. Ainsi, les clés publiques peuvent être stockées soit sur https://keys.openpgp.org/, soit via WKD sur notre propre hébergement web, et la page de vérification peut être forkée et hébergée n’importe où.

Dans ce court article, nous allons voir comment utiliser Keyoxide avec une clé OpenPGP servie par WKD, telle que créée à l’aide de notre précédent article.

Créer et publier une clé OpenPGP

Bon, tout a déjà été dit dans notre précédent article. Il s’agira de mettre en place WKD en faisant attention à deux choses :

  1. Exporter la clé publique au format binaire, et non avec --armor, puisque Keyoxide utilise OpenPGP.js qui est la seule implémentation à être stricte sur ce point.
  2. La première identité DOIT être une adresse email. Il est possible d’exporter une clé publique en mettant une certaine identité comme identité principale, puis revenir sur l’ancienne après l’export. Notez que cela n’est pas nécessaire pour la recherche Keyoxide par HKP, seulement pour WKD.

Il est conseillé de publier cette clé sur https://keys.openpgp.org/upload, au moins une fois manuellement pour contrôler la recherche d’identité. Keyoxide permettra ainsi l’affichage d’un profil avec /hkp/ comme par exemple https://keyoxide.org/hkp/yomli@yom.li.

Ajouter des claims

Pour le moment, la liste des preuves d’identité est mince, mais elle reste plus fournie que Keybase. L’idée commune est d’ajouter soit https://keyoxide.org/<email> soit openpgp4fpr:<fingerprint> à un profil ou à un post (disons un profil Mastodon ou un post Reddit), puis d’ajouter à la clé OpenPGP une notation sous la forme proof@ariadne.id=<url of the proof>. Prenons l’exemple de Mastodon :

  1. Ajouter sur son profil, dans l’une des quatre Métadonnées de profil, soit https://keyoxide.org/<email> soit openpgp4fpr:<fingerprint>.
  2. gpg --edit-key <email> pour entrer dans le mode d’édition de la clé.
  3. gpg> uid 33 correspond à l’identité souhaitée
  4. gpg> notation et entrer : proof@ariadne.id=https://domain.tld/@handle.
  5. gpg> save.

Il est possible de voir toutes les notations d’une identité avec gpg> showpref. Pour supprimer un claim, il suffit de faire gpg> notation puis d’écrire le claim précédé par le caractère moins (-) : Enter the notation: -proof@ariadne.id=https://domain.tld/@handle.

Republier la clé

Une fois les claims ajoutés, il suffit de republier la clé sur https://keys.openpgp.org/ et via WKD. Le profil Keyoxide sera alors disponible :

  1. via la clé HKP à l’adresse https://keyoxide.org/hkp/yomli@yom.li ;
  2. via la clé WKD à l’adresse https://keyoxide.org/wkd/yomli@yom.li ou plus simplement https://keyoxide.org/yomli@yom.li ;
  3. via l’empreinte à l’adresse https://keyoxide.org/33102e995b302b94be01391eb483a55d3af111c4.

Si je conseille d’utiliser WKD, c’est à la fois par résilience (keys.openpgp.org ne centralise pas tout) et parce que les profils Keyoxide HKP sont bien plus instables (menant à des erreurs 404) que WKD. Si vous ne voulez pas utiliser une clé OpenPGP pour ça, vous pouvez toujours vous rabattre sur une clé ASP en suivant la documentation.