Skip to content

Both lists, in one place

What the bytes guarantee, and what they do not.

Eight things the bytes guarantee on every ask. Ten more are deliberately left out, and they are on the same page, because a promise is only worth what its limits say.

1seq: 12seq: 23seq: 3seenseenseenAliceBoba new key on every answer
01

What the bytes guarantee.

Each is a property of the bytes, on every ask.

Authenticity

Every ask and reply is signed and checked against the bytes as received. A reply is signed over the lid of its ask, so it answers that ask and no other.

Confidentiality

Every ask is sealed to the ward's padlock under a fresh key, every reply to that key alone. Method, args, answer and the heir's name travel inside the box.

A stolen seed alone opens no relation's asks

An ask's body is sealed under the agreement and the edge key it came under, and nothing derives an edge key from the seed. A thief of what the door keeps is another matter: it opens asks under the keys that state holds, the open and offered edge keys and any kept at removal. A key that is neither open nor offered after a move is forgotten, so what a door keeps reaches back only as far as its current keys.

A broken curve does not open a relation's asks

Their edge keys descend from ML-KEM-768. Replies are sealed under X25519 alone, so a broken curve opens recorded replies. Asks on the zero head are sealed under the zero edge key, thirty-two zero bytes anyone can write, so a broken curve opens their bodies too.

No replay

A number a door has honoured on a relation is never honoured again. Which numbers below the highest it still honours is the door's own, so a door chooses how much reordering it accepts and nothing it accepts is a second honouring.

Ownership at a choice on the knock

Once a door makes a choice on the knock, the relation belongs to the key the knocker minted; nobody who saw the invitation, the inviter included, can speak on it. Until then the channel that carried the invitation is trusted.

Revocation

A door may keep the keys of a relation it stopped holding, and for how long is its own. While it keeps them, the holder hears removed and learns the relation ended. Afterwards that holder hears silence, like everyone else, and nobody else ever hears anything different.

No oracle

Every stranger's case is one reply text of one length, sealed and signed, so the bytes tell nothing apart. Time is a kit's, and the spec puts no time on the wire. A carrier may still say that no ward stands under a pk.

a strangerone sheet, whatever came
strangerNoise, a dead key, or a fake key: the porter hands every one of them the same blank sheet, and writes nothing down.
02

What they do not guarantee, by design.

Each is left to a kit, a carrier or the world outside, on purpose.

Metadata

A carrier sees the ward, the time and the length.

A stolen seed

Whoever holds a ward's seed and what its door keeps is that ward.

A guessed seed

A text seed is hashed once, and the ward pk is public. Whoever guesses the text stands the ward, so a text seed is as strong as its text and no stronger. Thirty-two drawn bytes are the seed nobody guesses.

A relation after keys are lost

A door admits two signing keys and takes two edge keys, so the two ends may stand one move apart. An asker that moves further than its door has no way back in the bytes, and what it keeps of the keys it moved from is a kit's.

Keeping a ward

Storage, backup and copies are a kit's. A door put back to an earlier moment, or two copies that write apart, break the relations they diverge on.

The zero head and every head

Both are sealed to the padlock alone, so a later theft or a broken curve learns which heir a recorded ask named, never what it said.

Signatures after a broken curve

Ed25519 alone: forgery from then on, never in the past.

A small invitation

It carries the lock and is about 2.7 KB.

Load and timing

Whoever knows a ward pk can make its door work, and a door equalises bytes, not time.