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.
Every device generates its own unique encryption keys on install. We never see them. Not even we can decrypt your messages.
Your phone encrypts every message with a key only you and your friend's device share. Our servers only see scrambled bytes.
The encrypted version stays on our server permanently. New phone? Old photos? Everything's still there, still encrypted, still yours.
We store, route, and sync ciphertext. We can't read it, modify it, or hand it over readably — even if forced to.
Follow a single message from "Hey!" on your screen to your friend's lock screen a second later.
The message exists only as plain text on your screen, in your phone's memory. Nothing has left the device yet.
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.
ciphertext: 7aZ9x3kL8mQw... (gibberish) nonce: 4f8a2c... signature: ed25519 proof
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.
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.
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.
This is the single biggest difference between Zoza and WhatsApp. It's worth knowing.
| Scenario | 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) |
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.
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.
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.
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.
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.
Profile → Security & Recovery → Block Screenshots
Prevents screenshots and screen recording of any Zoza screen. Useful in shared or public environments.
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.
Not "we promise not to" — we cannot, by design.
We don't have the encryption keys. They exist only on your device and your friend's.
Even if ordered to, the most we can hand over is the encrypted blob — which is useless without your key.
Every message is signed. Tampering breaks the signature and the recipient's client rejects it.
Sending a message as you requires your private identity key. It never leaves your device.
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.
You don't need this to use Zoza. It's here because you asked.