Veil and Keyoxide compared
Keyoxide and Veil answer the same question, whether this key belongs to the person behind these accounts, from opposite ends. Keyoxide has no central directory at all. Veil is a directory with a public log. Both choices have a cost, and this page tries to be fair about each.
Written on
How Keyoxide works#
Keyoxide started in 2020. Your identity claims live in your own key, written as notations under the Ariadne specification: a line in your OpenPGP key, or in a newer signature profile, that names an account such as a Mastodon profile or a GitHub gist. On the account you post a link back to your key’s fingerprint. A Keyoxide client fetches the key, follows each claim to the account and checks that the account points back.
Nothing is stored on a Keyoxide server. The website at keyoxide.org is one client among several, and anyone can run their own. Keys are fetched from where you publish them, usually keys.openpgp.org or a Web Key Directory on your domain. If you change your key, the profile changes with it.
How Veil works#
Veil is the public directory of cryptographic identities. Each person or organisation has one card that ties their keys to the accounts people know them by. You can start from an account you already know, such as a Discord ID, an email address or a domain, and get the card and its keys, checked in your own browser. Because the keys stay on the owner’s devices, a stolen account can’t sign as its owner.
Each change to a card is signed by one of the owner’s device keys and written to a public log. Independent witnesses cosign the log, and your browser checks the card against it, so the server can’t quietly rewrite a card’s past or show different cards to different readers.
Where each one is stronger#
Keyoxide is stronger on independence. There is no account to make and no operator to trust, and the proofs live with your key. If keyoxide.org went away tomorrow, your proofs would still check out in any other client. It also accepts claims from many platforms, including some Veil doesn’t link yet.
Veil is stronger in the other direction, from an account to a key. With Keyoxide you need the fingerprint or the email address first, and nobody can ask which key goes with a given account. Veil answers that lookup directly, and it also works backwards from a key, an SSH line or a PGP fingerprint to the card that holds it.
Veil also keeps history. Keyoxide shows the claims your key makes right now. A Veil card has every past version in the log, so a reader can see when a key or an account was added and removed. When an account is stolen, its owner can say so from the card with a date, and anyone who looks the account up sees the warning first.
There is a cost to that. Some of Veil’s links, Discord for one, are proven through the platform’s sign-in at the moment you link them, and Veil’s server records that sign-in in the signed card. A reader then relies on that record, kept in the witnessed log. A Keyoxide reader goes and looks at the account itself, every time.
Using both#
They don’t exclude each other. If you already have an OpenPGP key with Keyoxide claims, you can put its public half on your Veil card as a public key from elsewhere. You sign a short challenge with the private key on your own computer, and Veil never sees it. Your Keyoxide profile keeps working, and people who find you through Veil see the same key, checked in their browser.
If you don’t use PGP at all, Veil doesn’t require it. The browser makes a device key when you create a card, and you link accounts from the card’s page.
Questions#
Is Veil decentralised like Keyoxide?
No. Veil runs one directory at veil.pub. What keeps it honest is the public log with outside witnesses and the check in each reader’s browser, which catch a server that lies. Keyoxide avoids having a server in the first place.
Can I find a Keyoxide profile from a Discord account?
Keyoxide has no index of accounts, so you need the key’s fingerprint or email first. On Veil you can search a Discord ID, an email or a domain and get the card that has linked it.
Do I need an OpenPGP key to use Veil?
No. Your browser makes a device key when you create a card. OpenPGP, SSH and minisign keys are optional extras you can bring onto the card.
Which one should I choose?
If you want proofs that depend on nobody, use Keyoxide. If you want people to find your key from an account they know, and to see its history, use Veil. Many people will want both.