Skip to content

The Asgard Protocol

How it works, in order.

Six steps, in the order they actually happen. Each one is written plainly first. The exact mechanism sits underneath it, and you can open it or leave it alone.

  1. Step 01

    Proving it is you

    Before anything else your phone makes two identities for you and keeps both. When somebody checks that a message really came from you, they check both of them. Breaking one is not enough.

    The technical version

    Ed25519 for the classical signature and CRYSTALS-Dilithium for the post-quantum one. A peer verifies both signatures on every identity key, so forging an identity means breaking both schemes rather than either one.

    A sheet of paper with two differently shaped wax seals pressed side by side and a hand lifting the stamp away, drawn as one continuous line
  2. Step 02

    Agreeing on a secret

    Two phones that have never met need to agree on a secret without ever saying it out loud. They do it twice over, using two unrelated pieces of mathematics, and mix the two results together. If one of them turns out to be breakable, the secret still holds.

    The technical version

    X25519 running X3DH, alongside CRYSTALS-Kyber. The two shared secrets are combined with HKDF, so the session key is only as weak as the stronger of the two assumptions.

    Two hands holding differently cut keys entering one upright cylinder lock with two keyways, drawn as one continuous line
  3. Step 03

    A new lock for every message

    Every message gets a lock of its own. Once it has been sent, that lock is thrown away and the next one is made. Somebody who takes your phone tomorrow cannot open what you sent yesterday.

    The technical version

    AES-256-GCM under a Double Ratchet, with an CRYSTALS-Kyber encapsulation at every ratchet step rather than only at session setup. That gives forward secrecy and post-compromise security, and the per-step encapsulation is the line that separates this from PQXDH.

    A long chain of keys, each one different, the oldest crumbling into fragments behind, drawn as one continuous line
  4. Step 04

    When somebody leaves

    In a group everybody holds a piece of the key. When somebody leaves, the remaining pieces change, and everything sent from that moment on is unreadable to them. It costs the same whether the group is five people or five hundred.

    The technical version

    MLS as specified in RFC 9420, extended with the hybrid post-quantum profile intouch_hybrid_v1. Membership changes cost O(log N), and the tree heals itself after a compromise.

    Spaces
    A round table with four chairs joined by a looping cord and a fifth chair pushed away out of the circle, drawn as one continuous line
  5. Step 05

    Who talks to whom

    Hiding what you wrote is the easy half. The list of who you wrote to is usually the more revealing one. Delivery here is attached to a temporary token instead of to your account, so that list is never ours to hold.

    The technical version

    Sealed sender. The sender identity is not attached to the envelope, and delivery uses a short-lived token issued to the recipient. The relay sees ciphertext and a token, and can tie neither of them to an account.

    An addressed envelope entering a relay carrying a knot, and leaving it with nothing attached, drawn as one continuous line
  6. Step 06

    How you would catch us

    If we ever handed you the wrong key, you would need some way of noticing. Every key we publish goes into a log that can only be added to, and your phone checks that the key it was given really is in there before it sends anything.

    The technical version

    Mandatory Key Transparency. Keys are entered in an append-only Merkle log, and clients verify inclusion and consistency proofs against a signed tree head before sending. A substituted key breaks the proof for every observer, not only for the person targeted.

    Sixty-four leaves resolving to a single root with a magnifier checking one branch, drawn as one continuous line

What this does not protect

Metadata is reduced and not eliminated: when a message was sent, and roughly how large it was, still exist. Private contact discovery is on the roadmap and has not shipped. And a compromised device is a compromised device — nothing on this page protects a conversation from somebody holding an unlocked phone.

The whole thing, written down.

Every step above is specified in full, including the hard parts and the unfinished ones. The library that implements it is open.