Concepts
Vocabulary¶
The words are load-bearing. Several confusions in the design surfaced purely because two different things shared a name, so the terms below are chosen to stay distinct. The retired term channel is gone entirely — it blurred the machine, the endpoint, and the credential into one word.
The nouns¶
| Term | Definition |
|---|---|
| Cell | A node: one physical machine, running Barid. Binds dozens of IPv6 addresses at once. |
| Address | One derived, ephemeral IPv6 endpoint on a cell. Not separately credentialed — all of a cell's addresses derive from its cell secret. |
| Cell secret | The credential a client holds, one per cell. Derives every address on that cell. Rotating it revokes the client's access to the whole cell. |
| Barid | The server software running on a cell. Named for the caliphal courier-and-post network. |
| Root key | The single offline trust anchor. Signs the manifest and all server certificates. |
| Manifest | A root-signed, versioned document describing the network: which cells exist, their parameters, their certificate fingerprints. |
The derivation terms¶
An address is computed, not assigned. Two independent inputs feed the computation, and they are deliberately named apart because both were once called "index":
| Term | Meaning | Comes from |
|---|---|---|
| Bucket | Which time window — "hour 12345, counting from the epoch." | The clock (time buckets) |
| Slot | Which of a cell's concurrent addresses — "the 7th one." | Enumeration (address derivation) |
They form a grid. At any instant a cell has window_size × slot_count addresses
live. See address derivation for the
full picture.
The relationships that matter¶
A client holds N cell secrets, meaning N distinct machines. Because a cell is a machine, the redundancy a client relies on is structural — its credentials cannot accidentally end up on the same box. This is not enforced by assignment logic; it falls out of the vocabulary. See blast radius.
Revocation is cell-granular. Two operations are easy to confuse and must be kept apart:
- Unbinding an address is a server-side availability action. The client can still derive it — it simply finds nothing listening. This is not revocation.
- Rotating the cell secret is real revocation. It invalidates every address that secret ever produced, instantly, and drops the client from N cells to N−1.
A derived address is a rendezvous point, not a credential. Anyone who learns today's address may connect to it — and will fail the handshake, because authentication chains to the root key and has nothing to do with how the endpoint was found. Addresses buy scan-resistance and unlinkability, never authentication.
Naming is settled
Cell = machine. Address = endpoint. Cell secret = credential. Barid = the software. Bucket = time index. Slot = address index. "Channel" is retired.