A social network has to store your posts and deliver them to the right people. On Krypton Ø (Krypton zero), it does both without ever being able to read them. The trick is that the server only moves locked boxes around, and the keys stay on phones.
What happens when you post
- A new key for this post. Your phone makes a fresh content key just for this post, inside its security core.
- Lock the post. It locks the text, photos and videos with that key. Text is padded to a set size first, so its exact length doesn’t show.
- One envelope per reader. It seals the content key to each reader’s encryption key, making a separate envelope for every person on your Fam list. You get one too.
- The server stores and delivers. Our server keeps the ciphertext and the envelopes and passes them on. It has no key to open either.
- The reader opens their own envelope. Their phone opens its envelope inside its security core, takes out the content key and unlocks the post on screen.
Every post and every reply gets its own key, so the key to one won’t open another. Link previews work the same way: the preview is made and sealed on the writer’s phone, so readers’ phones never contact the linked site just to show it.
Who decides who can read it
Your phone does. It seals each post for the Fam list it keeps itself. People get on that list only by accepting a Fam request, scanning each other’s QR code or opening a Fam link you sent. A Fam link works once, within 24 hours.
Where the keys live
Private keys are kept in a security core on your phone, written in Rust and shared by the iPhone and Android apps. Not even the app code that draws the screen gets them; it only gets handles. The keys are stored in the iPhone Keychain or Android Keystore and are never carried to another phone by a backup.
Ready for quantum computers
Some attackers collect encrypted traffic today and hope to open it later with a quantum computer. The layer that hands keys to the people you choose combines today’s proven X25519 with post-quantum ML-KEM-768, so breaking one isn’t enough. Posts themselves are locked with XChaCha20-Poly1305. We don’t use home-made cryptography: these are widely used standards, implemented by the Rust libraries dalek and RustCrypto.
What the server can still see
Being honest about the limits matters as much as the protections:
- When a request reaches our server, it sees the IP address and time. In that moment, that can link a mailbox to an account.
- It holds your public keys and an encrypted recovery backup it can’t open without the 18 words on your paper.
- Calls usually go through a relay that sees both phones’ IP addresses but can’t open the audio. If a phone can’t reach the relay, the two phones connect directly and can see each other’s IP address.
- Screenshots and screen recordings of the app come out black, but a second camera pointed at a screen is something no app can stop.
The full design, with diagrams, is in Security design.