Protocol
Encryption in use
Every cryptographic mechanism in the product, where it applies, and where none applies yet.
We use established standards and well reviewed libraries. We do not design our own ciphers. This page lists each mechanism and what it protects.
Mechanisms
| Protects | Mechanism | Notes |
|---|---|---|
| Direct messages | MLS (RFC 9420) through XMTP | Keys are created and kept in your browser, one set per device. |
| Calls | DTLS-SRTP (RFC 5764) | Negotiated between the two browsers by WebRTC. |
| Every connection | TLS | Between your browser and our servers, XMTP and RPC providers. |
| Signing in | ECDSA signatures on secp256k1 | Over a Sign in with Ethereum message (EIP-4361). |
| Sessions | JWT signed with HMAC-SHA256 | The algorithm is fixed on the server, so a token cannot downgrade it. |
| Your PIN | Argon2id (RFC 9106) | With a salt per account and a secret held only by the server. |
| Community invite links | HMAC-SHA256 | So a link cannot be forged or altered. |
| Private payments wallet key | HKDF-SHA256 over an EIP-712 wallet signature | Computed in your browser. The derived secret is never sent to our servers. |
| Private payments | Zero knowledge proofs on Aztec, written in Noir | Aztec test network only. See Private payments on Aztec. |
Where encryption does not apply yet
Some data is protected only by TLS on the way to our servers and by access controls once it is there. That means we can read it.
- Messages that took the fallback path. They are labelled in the conversation.
- Posts and messages in communities.
- Attachments, which are stored as uploaded.
- Your profile, your contacts and your community memberships.
When any of these changes, this table changes with it, and the change is recorded in the changelog.
