Whiteout v1
Updated October 25, 2026
Whiteout is an open protocol, published by Terebyte. Anyone may implement it. It lets a member send us a message without us learning who wrote it: the message travels inside packets that every member’s app sends every day, all the same size, all sealed. It builds on cover-traffic ideas from David Chaum’s mixes, Loopix and the Nym network.
The packet
Every packet is exactly 2,048 bytes, real or empty, sealed with X25519 and ML-KEM-768 together to Terebyte’s feedback key. Inside: whether it’s empty, a message id, which part of how many, and up to 891 bytes of text, padded to 912. A longer message is split across up to 16 packets. Nothing else is in it: no account, device, app version or time. If you ask for a reply, your address is the first line of the message, inside the seal.
The rhythm
Every member’s app sends packets at random moments, about three a day, whether or not its member ever writes. A packet rides inside the app’s ordinary sync request as one field; most requests carry none. When you send a message, it’s sealed at once and takes the place of an empty packet chosen at random among your app’s next three to six. It arrives in a day or two.
What our server does
It counts packets per account per day only to keep at most 6, then stores each packet with its day and nothing else: not your account, not your address, not the time. It can’t open a packet and doesn’t try to tell real ones from empty ones. Packets are deleted once our mailbox has fetched them, or after 60 days.
Who reads them
The private key lives only on the computer of Terebyte’s owner, never on our servers. A program there fetches each day’s packets, opens them, throws the empty ones away, and shows the messages in random order with their day only.
The feedback key
It ships inside the app (1,216 bytes). Its SHA-256 fingerprint: e6c7 0478 3b43 bed3 c78d 93f4 5fae c0f0 46b3 6ea3 eb78 d6cf f34e f13b 790d 19c2
What it doesn’t protect against
- Words that identify you: a reply address, a name, or writing someone could recognise.
- A small crowd: the fewer members, the fewer apps to hide among.
- A compromised device or a changed app.
- A server changed to watch in real time would see which account sent a packet, as the daily limit needs, but not what’s in it or whether it’s real.
- Someone watching your network may see a request slightly larger than usual: a packet, never which kind.
- Delay: a day or two, and a browser tab only sends while it’s open.
See it for yourself on Murmuration. The full specification is licensed under CC BY 4.0.