How Wasla keeps your conversations private
You don't need to understand cryptography to stay safe. Here's what happens to your messages, using everyday comparisons, and what we honestly can and can't protect you from.
Seven ideas that keep you safe
1. Your keys are made on your phone, and never leave it
When you create your account, your phone makes a pair of keys. Think of a padlock you can hand out to anyone (your Wasla ID), and the only key that opens it, which stays locked inside your phone. Wasla never sees the key and couldn't give it to anyone.
Your 12-word recovery phrase is a way to rebuild that key if you lose your phone. Keep it secret and somewhere safe. Anyone who has it can become you, and nobody, including us, can recover your account without it.
2. Your messages go straight to your friend, sealed
Every message is sealed on your phone and opened only on your friend's phone. That's end-to-end encryption. When you're both online, it also travels directly from your phone to theirs. It doesn't pass through Wasla's server, and it's never stored there.
- Never kept on Wasla's servers: a short message rides sealed inside a notification, anything longer waits on your own phone
- Never readable by Wasla
- Never readable by anyone along the way, including your internet or mobile provider
- Links are never visited for you: Wasla shows no link previews, so a website can't tell you received its link
If your friend's phone is off, a short message waits for them inside an encrypted notification, and anything longer waits on your own phone until they're back. Either way it stays sealed the whole time: nobody on the way can open it, read it or change it. The same goes for photos, voice notes, status updates, and your name and picture.
3. A new key for every single message
Wasla doesn't reuse one key forever. Each message gets its own fresh key, which is thrown away right after use. Even if someone somehow stole today's key, it wouldn't open yesterday's messages or tomorrow's. Security experts call this forward secrecy.
4. Phone to phone, not through a storage server
Most messengers keep your messages on their servers until they're delivered. Wasla sends them directly between your phones whenever you're both online. Our server is like a switchboard operator: it helps two phones find each other, then steps aside.
If your friend's app is closed, short messages ride inside an encrypted notification. For photos, voice notes and long messages, the notification carries a preview, and your friend's phone fetches the rest from yours on arrival, over a direct connection between the two phones, sealed to them. It never passes through our server. If both phones are offline, it waits on your own phone. Nothing ever waits on our server.
5. Your phone is a locked vault too
Chats saved on your phone are encrypted on the phone itself, with keys kept in your phone's secure hardware (Apple Keychain or Android Keystore). You can add an app lock with Face ID or your fingerprint, Wasla hides your chats in the app switcher, and you can hide message text from your lock screen.
6. Calls go straight from your phone to theirs
Voice and video calls connect directly between the two phones. No Wasla server carries your voice or video. Our server only introduces the two phones at the start, just as it does for messages.
Every call is also encrypted, with a secret your phones agree inside your already-private chat connection, so nobody can listen in. Your camera and microphone stay off until you accept a call.
Sharing your screen works the same way: it goes straight to the other phone, encrypted like your camera. It only starts when you tap Share and confirm on your phone's own prompt, a banner stays on screen the whole time, and one tap stops it.
To find each other, each phone first asks a public address service (STUN) what its own internet address is. That service never sees or hears the call.
7. Backups are locked before they leave
If you back up to iCloud or Google Drive, your phone locks the backup with a key made from your 12 words before uploading it. Apple and Google only store a sealed box with a meaningless name. Without your words, nobody can open it.
What our server knows, and what it never sees
To deliver anything, a messenger needs some information. Here's exactly what Wasla's server handles.
| Information | Can Wasla's server see it? | Why, and for how long |
|---|---|---|
| Your groups: who is in them, their names, what is said | Never | A group is a signed record kept on the members' phones. The server connects the phones, as for contacts, and has no idea they form a group. |
| Who may see your status | Never | Your phone simply doesn't send a status to anyone outside the audience you chose. The list of who is in or out never leaves your phone. |
| Your messages, photos, voice notes, statuses | Never | They go straight between phones, or sealed inside a notification only the other phone can open. Nothing is stored on our server. |
| Your calls (voice, video and a shared screen) | Never | Encrypted end to end, straight between the phones. |
| Your name, profile photo and about line | Never | Sent only to your contacts, encrypted. Your photo goes again only when you change it. |
| Delivered and read ticks | Never | They travel encrypted, phone to phone or sealed through our server, which can't see which messages they're about. |
| Your phone number and address book | Never | Wasla doesn't ask for them. |
| Your email address | No, only a protected fingerprint | Only if you turn on "Find me". The server keeps a scrambled fingerprint, never the address itself, until you remove it. |
| Your Wasla ID | Yes | It's like a public mailbox number. It contains nothing about you. |
| Which IDs you're connected to | Yes | To deliver messages and show "online" only between people who added each other. Forgotten 7 days after you stop using Wasla, or as soon as you delete your account. |
| When you're online | Yes, briefly | Only shown to your contacts. Kept in memory for about a minute and a half. |
| A notification token for your phone | Yes | So your phone can ring and show new-message alerts. Kept up to 60 days. |
| That you asked for a waiting photo | Who asked whom | Tapping a photo still on a contact's phone asks the server to wake that phone. It learns only which two IDs were involved, never which photo. Kept up to 24 hours. |
| Your internet (IP) address | While connected | Needed to connect at all, and used to stop abuse. Not saved in our database. |
Being honest about the limits
No app can protect against everything. Here's what Wasla can't do for you:
- Someone holding your unlocked phone can read what's on screen. Use a strong phone passcode and Wasla's app lock.
- The person you're talking to can take screenshots or show your messages to others.
- A shared screen shows everything on it, including notifications that pop up. Turn on Do Not Disturb before you share, and stop sharing when you're done.
- Your 12 words are your account. If someone gets them, they can become you. If you lose them and your phone, your account can't be recovered.
- Notifications don't reveal your messages. When Wasla is closed, Apple or Google deliver a sealed notification, and only your phone can open it. They can see that a notification arrived, never who sent it or what it says. You can also hide message text from your lock screen in Settings.
- Timing: like any online service, our server can see when your phone connects, even though it can't see what you send.
- Finding someone by email trusts our server to give you the right person. Adding by QR code or invite link doesn't. Wasla marks contacts found by email and asks you to compare safety numbers with them, in person or on a call.
- Groups bring strangers closer. Someone a friend added to a group can see what you write there and your name as you chose to share it. People who aren't your contacts are marked with a "~" so nobody can pass for someone you know, and you can leave any time.
- A phone-to-phone photo needs both phones. If your friend's phone is asleep or on a network that blocks direct connections, a photo waits on their phone. Tapping it asks their phone to wake up; nothing is ever parked on a server.
- Malware on your phone could read what you can read. Keep your phone updated and install apps only from official stores.
For the technically curious
The details behind the plain-language explanations above.
See it in diagramsStep by step, in the order you use Wasla: setting up, adding people, chatting, calling and backups.Identity
Your Wasla ID is an Ed25519 public key generated on your device from a BIP-39 recovery phrase (12 words). People are authenticated by signatures, never by trusting the server. The private key is stored in the iOS Keychain / Android Keystore.
Messages (end-to-end encryption)
A fresh, disposable padlock every time. Whenever two phones start talking, each makes a brand-new temporary key just for that conversation. It lives only in the phone's memory and disappears when the conversation ends.
Stamped with your personal seal. Each phone signs its new key with your permanent Wasla ID, like a wax seal nobody can copy. The signed note also says who it's for and when it was made, so no one can swap it, send it to someone else, or reuse an old one.
A shared secret that's never sent. Using clever maths (think of two people mixing paint colours), both phones arrive at the same secret without ever sending it over the internet.
A new key for every message. That secret works like a ratchet that only turns forward: each message gets its own key, which is destroyed right after use. Even someone who stole today's key couldn't open yesterday's messages.
Locked and tamper-sealed. Each message is scrambled and sealed so that any change on the way is detected and the message is thrown away. Copies sent twice are refused.
For experts: per-session ephemeral X25519 keys signed with the Ed25519 identity key (transcript binds sender, recipient, key, timestamp, nonce); HKDF-SHA256 directional chain keys; symmetric HMAC ratchet with per-message keys; XSalsa20-Poly1305; replay protection.
Links are detected on the phone and opened only when tapped. Wasla never fetches link previews.
Notifications and offline delivery
Content inside push notifications, and photos or voice notes fetched on arrival, are sealed to the recipient's delivery key: X25519 → HKDF-SHA256 → ChaCha20-Poly1305, with the sender's Ed25519 signature inside. The delivery key is replaced every 7 days and old ones are deleted 14 days later, so a key stolen one day can't open notifications from long before. On iPhone, the keys the notification extension uses are stored "this device only", never in a phone backup. Fetched items travel over a short, direct WebRTC data channel between the two phones (DTLS underneath); the relay only passes the connection offer and answer. Without a direct path (no TURN), the item waits on the sender's phone. Wasla's server and Apple/Google only see ciphertext. An iPhone's notification extension fetches with a fetch ticket (the server keeps only its SHA-256 fingerprint) that allows nothing else.
Delivered and read ticks
Ticks are receipts, and they're encrypted like messages. Normally they travel over the direct, end-to-end encrypted connection between the two phones. So they don't need both phones online at the same time, every message also carries the sender's latest receipts inside its encrypted content: when your friend replies, your ticks update, even by notification. A "read" receipt is included only if they have read receipts on.
When a message reaches a phone by notification, that phone sends a short "received" note back through our server, sealed so the server can't read it or see which messages it covers. The app signs it with its identity key. The iPhone notification extension never holds that key, so it proves the note instead with a key only the two phones can compute from their delivery keys (X25519 → HKDF-SHA256 → ChaCha20-Poly1305). No one else, our server included, can forge a receipt.
Voice notes to text
Turning a voice note into text happens only on your phone: with the phone's own on-device recognition, or with a Whisper speech model you choose to download. Models come from Hugging Face or Wasla's server and must match a SHA-256 fingerprint built into the app, or they're deleted. Your voice is never sent anywhere.
Photos and voice notes
Photos and voice notes travel inside the same end-to-end encrypted channel as messages. On your phone, media files are stored encrypted with AES-GCM.
Calls
Calls use WebRTC with DTLS-SRTP, connected directly between the two phones. The session descriptions, including the DTLS fingerprints, are exchanged only inside the end-to-end encrypted channel, so no server can step into the call. Public STUN servers are used only to discover each phone's public address. Wasla doesn't relay call media.
Screen sharing uses a second video transceiver reserved when the call is set up, so it starts and stops without renegotiating, and it is protected by the same DTLS-SRTP keys. On iPhone, a Broadcast Upload Extension captures the screen and hands frames to Wasla through a local socket in the app's private App Group folder; on Android, the system's MediaProjection is used. Nothing passes through a server.
Storage on your phone
The local database is encrypted with SQLCipher. Its key is derived with HKDF from a random key held in the Keychain / Keystore ("this device only" on iPhone, so it never moves to another phone in a backup), and text fields are additionally encrypted.
Backups
Backups are encrypted on the device with XSalsa20-Poly1305, using keys derived (HKDF-SHA256) from the recovery phrase's seed, separate from the identity keys. File names are HMAC-SHA256 values, and contents are padded to size buckets so file sizes reveal little.
"Find me" by email
The server stores HMAC-SHA256(secret server key, email) and a masked form for display, never the address. Verification codes are stored hashed for 10 minutes. Lookups are rate-limited per user, per network and per day to prevent scraping. Only people who chose to be findable can be found. Because the server answers the lookup, a contact found this way is marked in Wasla until you compare safety numbers.
Wasla's server
Wasla has one small server. Its job is to help phones find each other, deliver notifications and contact requests, and look people up for "Find me". It never carries your calls, and it can't read your messages.
No passwords to steal. Your phone signs in by proving it holds your secret key, the way you'd prove who you are with a signature instead of saying a password out loud. There's no password stored anywhere that could leak.
Strangers see nothing. The server only shows whether you're online to people you've both added as contacts. A stranger can't even tell whether your Wasla ID exists.
Requests can't be faked. Contact requests are signed by the sender, so no one can send one pretending to be someone else, and the sender's name inside is sealed so only you can read it.
For experts: Ed25519 challenge-response login; presence and routing only between mutual contacts; signed contact requests with the sender's name sealed to the recipient.