The protocol
Five strengths, each specified before being coded, each verifiable. The diagrams are exact: what they show is what the code does.
End-to-end encrypted, post-quantum, no backdoor.
An ELQIO message is encrypted on the sender's device and decrypted on the recipient's. In between, relays, operator, network and observers only see an opaque block. There is no service key, no exceptional access: there is nothing to hand over to anyone.
Hybrid: two methods, only one has to hold
The key exchange combines a classical elliptic curve, X25519, and a post-quantum mechanism, ML-KEM-768, in the X-Wing construction. If one of them were broken, by a quantum computer or by a discovered flaw, the other still protects the message. Signatures are composite in the same way: Ed25519 and ML-DSA-65, together.
Built to change
Every message carries the number of its cryptographic suite. The current suite is called ELQIO-1. An ELQIO-2 suite will be able to replace it without a break: devices recognise the suite of a message and know whether they can read it.
Down to the relays
Links between relays use TLS 1.3 with a hybrid X25519MLKEM768 exchange, mandatory: a relay that does not support it is not accepted into the network.
- Suite
- ELQIO-1 (number 0x01)
- Key exchange
- X-Wing = X25519 + ML-KEM-768 (FIPS 203)
- Signatures
- Ed25519 + ML-DSA-65 (FIPS 204)
- Encryption
- ChaCha20-Poly1305
- Hashing, derivation
- SHA-256, HKDF-SHA-256
- Between relays
- TLS 1.3, X25519MLKEM768, mandatory
- Libraries
- libcrux, RustCrypto. Audited only. No home-made crypto.
Metadata anonymity: who talks to whom is known to nobody.
Encrypted content does not protect from everything. Knowing that two people write to each other, at what time, how often, is often enough to understand. ELQIO treats that metadata as part of the message to protect.
Three relays, three layers
Each circuit goes through a guard relay, a middle relay and an exit. The message is wrapped in three layers of encryption; each relay removes its own and knows only the previous relay and the next. The guard stays the same for about a month, which limits the number of relays that see a client's IP address.
Fragments, not messages
A message is split into redundant fragments by an erasure code, deposited in pseudonymous mailboxes on several storage relays. A part of the fragments is enough to rebuild the message. Mailbox labels are derived from the session and change: the storing relay does not know who owns a box.
Proven, not claimed
No relay sees a client's IP address and a mailbox label together. This property is checked by an automated non-linkability proof, replayed at every demonstration on the logs of all relays of the network.
Verifiable, revocable identities, with no access to content.
Each person owns a unique identifier, published in a registry of signed events, chained to one another and replicated. Anyone can verify that an identifier is authentic and has not been modified.
An identifier fits in 20 bytes: a version, a 16-byte address and a 3-byte checksum, written as 32 characters in groups of four. The alphabet leaves out I, L, O and U so that nothing is confused when reading it aloud. An identifier always starts with E. As a link, it is written elq:E3Q9-6FYS-….
Revoking is not reading
An account can be revoked, for criminal use or by court decision. A revocation event is added to the registry and the network stops relaying that identity's messages. This never opens access to what was written: no key exists for that. Revocation is a public, verifiable act, like publication.
The stamp: an anonymous business model.
A service that sells neither advertising nor data has to be paid for some other way. ELQIO goes back to the oldest model of correspondence: the stamp. Every deposit on the network costs one stamp.
Signed without seeing
The stamp is bought from the operator, but blind-signed: the operator signs a stamp it does not see, as one would sign through an opaque envelope. The relay can then check that the signature is valid, without anyone being able to link that stamp to its buyer. The operator knows it sold a hundred stamps, never which one was used by whom.
Bought through the anonymous network
The purchase itself goes through the anonymous network, within a session, and not through an identifiable connection. No purchase is made by direct connection any more. Every guard relay publishes a signed daily count of the stamps it accepted: the network's accounting can be checked, no relay can deny a figure, and nothing about the correspondence is revealed.
The local radio network, from box to box, stays free.
- Signature
- Blind RSA-2048 (RSABSSA, RFC 9474)
- Unit
- One stamp per deposit
- Purchase
- Through the anonymous network, per session
Transport independent, resilient.
An ELQIO message is a binary block, designed to the bit to fit in a LoRa radio frame. What fits in the slowest radio gets through everywhere else.
Why 48 bytes
The most robust LoRa payload in Europe, at 868 MHz with spreading factor 12, is 51 bytes. Three bytes go to the radio mesh header, 48 to the fragment. A Compact fragment is therefore exactly 48 bytes, 35 of them data, and passes over any LoRa module, even the slowest. An Extended fragment, for networks with good throughput, is 960 bytes, 947 of them data.
Four routes
- Internet, through the network's relays.
- LoRa radio hop by hop, through home boxes relaying from roof to roof.
- An audio signal encoded over a plain phone line, in the spirit of modems and fax.
- Satellite, through a partner operator, where nothing else gets through.
If one channel fails, another takes over. Deferred delivery is a normal case of the protocol, not a failure: a message waits in its mailbox as long as it takes.
Relays that hold
Relays update themselves from threshold-signed releases, that is, signed by several maintainers at once, and reproducible builds, which anyone can recompile and compare. The core is written in Rust, without system allocation, so that it also runs on the embedded targets of the boxes.
Two message profiles, and a third mode.
| Profile | Content | Transports | Status |
|---|---|---|---|
| Compact | Short text, maximum protection | All: radio, audio, Internet | in service |
| Rich | Long texts, images, files, deferred voice | Networks with good throughput | in service |
| Real time | Encrypted point-to-point video call | Networks with good throughput | in service |
Status and specifications
The protocol, identity, the relay network, stamps and their anonymous purchase, the four transports, the three profiles, the apps and the devices are specified, coded in Rust and in service, in "stamp required" mode with mandatory hybrid TLS. The network describes what runs and how it is verified.
The code and the specifications are not public. Reviewers get access on request; all design decisions are written and dated. To review the specifications: contribute.