For Users

How Zoza works
in plain English

The same encryption Signal and WhatsApp use, but with one critical difference: your messages don't vanish when you switch phones, and your photos still load a year later.

The 30-second version

🔐

Your keys, your phone

Every device generates its own unique encryption keys on install. We never see them. Not even we can decrypt your messages.

📨

Encrypted before it leaves

Your phone encrypts every message with a key only you and your friend's device share. Our servers only see scrambled bytes.

☁️

Synced, not forgotten

The encrypted version stays on our server permanently. New phone? Old photos? Everything's still there, still encrypted, still yours.

👁️

Server is blind

We store, route, and sync ciphertext. We can't read it, modify it, or hand it over readably — even if forced to.

What happens when you send a message

Follow a single message from "Hey!" on your screen to your friend's lock screen a second later.

1

You type "Hey!"

The message exists only as plain text on your screen, in your phone's memory. Nothing has left the device yet.

2

Your device encrypts it

Using the Signal Protocol (X3DH key agreement + Double Ratchet), your phone generates a unique encryption key for this message. A previous compromise doesn't let an attacker read it. A future compromise doesn't either. Every message has its own one-time key.

What actually leaves your phone:
ciphertext: 7aZ9x3kL8mQw...  (gibberish)
nonce:      4f8a2c...
signature:  ed25519 proof
3

Our server stores the encrypted blob

We receive the ciphertext. We don't decrypt it. We can't — we don't have the key. We write it to our database and route it to your friend's device.

4

Your friend's device decrypts it

Their phone fetches the ciphertext, uses its half of the shared key, and turns it back into "Hey!" — directly on their screen. The plaintext never touches our server.

5

The ciphertext stays on our server — forever

This is where Zoza differs from Signal. We keep the encrypted blob so that when your friend switches phones or opens Zoza on a new device, the message is still there. They can still read it — but only they can.

Your photos and videos don't vanish

This is the single biggest difference between Zoza and WhatsApp. It's worth knowing.

Scenario WhatsApp Zoza
Old text after 1 month (same phone) Yes ✓ Yes ✓
Old photo after 1 month (same phone) Yes ✓ Yes ✓
Old photo after 1 month on a new phone ❌ "Download failed" — WhatsApp deleted it ✓ Still loads from encrypted cloud storage
Old text after restoring on a new phone Only with Google Drive backup + verify Yes — cloud-synced ciphertext
Server has the plaintext ❌ (claims E2E) ❌ (same — we can't read it either)

How it actually works

When you send a photo: your phone encrypts the photo bytes with a random AES-256 key, uploads the scrambled blob to our storage (Cloudflare R2), and sends the decryption key to your friend inside the chat message (also encrypted end-to-end).

When they view it: their phone fetches the scrambled blob, uses the key from the chat message to decrypt locally, and shows the photo. We never see the original.

A year later, on their new phone: same flow. The scrambled blob is still on our storage. The key is still in the chat history. It just works.

What you control — and where

🔔

Notification privacy

Profile → Security & Recovery → Notification content

Your phone's OS (iOS especially) caches every notification it shows. If your phone is seized, old notification previews can be recovered. Pick "Hidden" to leave nothing in the cache. Default is "Name and message" for best UX.

📱

Linked devices

Profile → Security & Recovery → Linked devices

See every device logged into your account. Revoke any you don't recognise — that device is signed out instantly. Always check here if someone sends you a suspicious QR code and you accidentally scanned it.

⏱️

Disappearing messages

Any chat → timer icon

Set a per-chat timer (1 minute to 1 week). Messages auto-delete from every device AND our server after the timer. Use this for sensitive conversations you don't want archived.

🔐

Biometric lock

Profile → Security & Recovery → Biometric Lock

Require fingerprint or face unlock every time you open Zoza. Even if someone has your unlocked phone, they can't open the app without your finger.

📷

Block screenshots

Profile → Security & Recovery → Block Screenshots

Prevents screenshots and screen recording of any Zoza screen. Useful in shared or public environments.

🔑

Password-encrypted key vault

Profile → Security & Recovery → Change Password

Your encryption keys are stored on your device, encrypted with a key derived from your password. If someone steals the device, they can't extract your keys without the password.

Things we literally can't do

Not "we promise not to" — we cannot, by design.

Read your messages

We don't have the encryption keys. They exist only on your device and your friend's.

Hand your messages to anyone

Even if ordered to, the most we can hand over is the encrypted blob — which is useless without your key.

Modify a message in flight

Every message is signed. Tampering breaks the signature and the recipient's client rejects it.

Impersonate you

Sending a message as you requires your private identity key. It never leaves your device.

Recover old messages if you lose your keys

This is the flip side of "server is blind". Losing your password + all devices means losing your history. Use recovery email or multi-device backup to avoid this.

The crypto, in detail

You don't need this to use Zoza. It's here because you asked.

X3DH
Extended Triple Diffie-Hellman key agreement — how two strangers establish a shared secret without ever talking directly. Lets you start a secure chat with someone who's offline.
Double Ratchet
Every message gets a brand-new encryption key, derived by ratcheting forward from the last. Forward secrecy (past messages safe if today's key leaks) + break-in recovery (future messages auto-heal after compromise).
AES-256-GCM
NIST-standardised authenticated encryption. 256-bit key, 96-bit IV, 128-bit authentication tag proves no tampering. The same AEAD TLS 1.3 and Signal's Double Ratchet use. NSA-approved for US classified data up to Top Secret per CNSSP-15.
Curve25519
Elliptic curve used for all the Diffie-Hellman key exchanges. Fast, secure, compact (32-byte keys). Designed by Daniel Bernstein.
Sender Keys
For group chats. Encrypt once, fan out to every member — O(1) per message instead of O(N). Each member holds a sender key per peer device.
Channel Keys
For broadcast channels. Admin encrypts once; every subscriber decrypts. Key rotates whenever membership changes so removed members lose access.