Publish post
This commit is contained in:
parent
f81bc4abdb
commit
b6ac806d45
133
content/blog/2021/03/2021-03-08--keyoxide-project-update-3.md
Normal file
133
content/blog/2021/03/2021-03-08--keyoxide-project-update-3.md
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
---
|
||||||
|
title: "Keyoxide Project Update #3"
|
||||||
|
author: Yarmo Mackenbach
|
||||||
|
slug: keyoxide-project-update-3
|
||||||
|
date: "2021-03-09 16:00:00"
|
||||||
|
published: true
|
||||||
|
discussion:
|
||||||
|
---
|
||||||
|
|
||||||
|
Two months since the last update. Two great new additions for this one.
|
||||||
|
|
||||||
|
## Keyoxide 2.5.0
|
||||||
|
|
||||||
|
The latest version of Keyoxide's web client has two very neat additions, all
|
||||||
|
thanks to the latest [0.11.*](https://codeberg.org/keyoxide/doipjs) release of
|
||||||
|
[doip.js](js.doip.rocks): the verification of accounts on the IRC and Matrix
|
||||||
|
platforms.
|
||||||
|
|
||||||
|
This really is what Keyoxide was designed to do: making sure your online
|
||||||
|
correspondances are exchanged with the intended person or entity, even as both
|
||||||
|
parties use anonymous accounts with varying usernames on different platforms.
|
||||||
|
|
||||||
|
To this end, it was important to integrate additional communication platforms,
|
||||||
|
to join the already supported [XMPP](https://keyoxide.org/guides/xmpp) protocol.
|
||||||
|
|
||||||
|
Given the popularity and decentralized nature of either platform, IRC and Matrix
|
||||||
|
were both prime candidates. So, let's see what goes into proving identities on
|
||||||
|
IRC and Matrix.
|
||||||
|
|
||||||
|
(All examples below use a certain OpenPGP fingerprint and a fictional user, make
|
||||||
|
sure to use your own data when replicating the steps!)
|
||||||
|
|
||||||
|
## Proving IRC identity with taxonomy
|
||||||
|
|
||||||
|
What is taxonomy within the context of IRC?
|
||||||
|
|
||||||
|
```
|
||||||
|
>> /msg NickServ help TAXONOMY
|
||||||
|
|
||||||
|
***** NickServ Help *****
|
||||||
|
Help for TAXONOMY:
|
||||||
|
|
||||||
|
The taxonomy command lists metadata information associated
|
||||||
|
with registered users.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
/msg NickServ TAXONOMY foo
|
||||||
|
***** End of Help *****
|
||||||
|
```
|
||||||
|
|
||||||
|
Taxonomy is metadata information, much like the vCard data for XMPP. Let us use
|
||||||
|
this to our advantage:
|
||||||
|
|
||||||
|
```
|
||||||
|
>> /msg NickServ SET PROPERTY KEY openpgp4fpr:3637202523e7c1309ab79e99ef2dc5827b445f4b
|
||||||
|
|
||||||
|
Metadata entry KEY added.
|
||||||
|
|
||||||
|
>> /msg NickServ TAXONOMY foo
|
||||||
|
|
||||||
|
Taxonomy for foo:
|
||||||
|
KEY : openpgp4fpr:3637202523e7c1309ab79e99ef2dc5827b445f4b
|
||||||
|
End of foo taxonomy.
|
||||||
|
```
|
||||||
|
|
||||||
|
And there you have it: one-directional linking from IRC to an OpenPGP key. Now,
|
||||||
|
to make that bidirectional, add the following notation to your key:
|
||||||
|
|
||||||
|
```
|
||||||
|
proof@metacode.biz=irc://chat.freenode.net/foo
|
||||||
|
```
|
||||||
|
|
||||||
|
Et voilà, foo has now cryptographically proven that that IRC nickname is theirs.
|
||||||
|
|
||||||
|
All steps above are explained with more detail in the
|
||||||
|
[IRC guide](https://keyoxide.org/guides/irc).
|
||||||
|
|
||||||
|
It is important to note that IRC is the slowest identity to verify to date. As
|
||||||
|
IRC servers lack API endpoints to query the taxonomy metadata (maybe one
|
||||||
|
day? ^_^), Keyoxide has to log in into the IRC server like any other client,
|
||||||
|
send a message to NickServ, parse the response and log out again.
|
||||||
|
|
||||||
|
## Proving Matrix identity with...
|
||||||
|
|
||||||
|
[Matrix](https://matrix.org/) is an excellent decentralized communication
|
||||||
|
platform, but sadly, for identity verification purposes, it completely lacks
|
||||||
|
any form of customisable metadata. A shortcoming we can work with, but one which
|
||||||
|
might also understandibly deter some from proving Matrix identities.
|
||||||
|
|
||||||
|
One simply sends a message to a public room with the following content:
|
||||||
|
|
||||||
|
```
|
||||||
|
[Verifying my OpenPGP key: openpgp4fpr:3637202523e7c1309ab79e99ef2dc5827b445f4b]
|
||||||
|
```
|
||||||
|
|
||||||
|
Easy enough. The issue is: Keyoxide can only read messages in a public room via
|
||||||
|
a Matrix account that already has access to said public room.
|
||||||
|
|
||||||
|
Ergo, we can't just use any room, we'll all have to use the same room.
|
||||||
|
|
||||||
|
A dedicated room named
|
||||||
|
[#doipver:matrix.org](https://matrix.to/#/#doipver:matrix.org) has been created
|
||||||
|
for the very purpose of receiving Matrix identity proofs. Simply join the room
|
||||||
|
and send the message with your own OpenPGP fingerprint.
|
||||||
|
|
||||||
|
By viewing the source of message, you get the data needed to generate the
|
||||||
|
identity claim to be stored inside your OpenPGP key: the `room_id` (shared by
|
||||||
|
everyone) and the `event_id` (unique to your proof). The notation will look
|
||||||
|
like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
proof@metacode.biz=matrix:u/@foo:matrix.org?org.keyoxide.r=!dBfQZxCoGVmSTujfiv:matrix.org&org.keyoxide.e=$3dVX1nv3lmwnKxc0mgto_Sf-REVr45Z6G7LWLWal10w
|
||||||
|
```
|
||||||
|
|
||||||
|
That is quite an unwieldy notation, but one designed to follow the
|
||||||
|
[MSC2312 Matrix URI scheme proposal](https://github.com/matrix-org/matrix-doc/pull/2312)
|
||||||
|
.
|
||||||
|
|
||||||
|
Please refer to the [Matrix guide](https://keyoxide.org/guides/matrix) for
|
||||||
|
detailed instructions on how to verify your own Matrix identity.
|
||||||
|
|
||||||
|
## Signing off
|
||||||
|
|
||||||
|
As the project now supports multiple communications platforms and its
|
||||||
|
versatility increases with each update, I am confident that Keyoxide is now
|
||||||
|
ready for the next phase: focus on the user experience. Nothing to show just
|
||||||
|
yet, but I am sure the next project update will have interesting announcements
|
||||||
|
related to this.
|
||||||
|
|
||||||
|
For all your questions and suggestions, be sure to join the conversation in the
|
||||||
|
[Keyoxide matrix room](https://matrix.to/#/#keyoxide:matrix.org).
|
||||||
|
|
||||||
|
Until next time.
|
||||||
Loading…
x
Reference in New Issue
Block a user