WallyMates

Security & Encryption

Privacy in WallyMates isn't a single settings toggle — it's several independent layers of protection, each aimed at a different threat: server-side interception, a stolen phone, a man-in-the-middle attack during a call, syncing with the web version.

1:1 end-to-end encryption — Static X3DH

Private chats are encrypted with an in-house Static X3DH implementation (a triple Diffie-Hellman exchange over an identity key, a signed pre-key, and an ephemeral key — a simplified "SESAME-lite" multi-device session scheme inspired by Signal's approach) with AES-256-GCM. The encryption key is derived independently for every device pair — no Double Ratchet chain, no one-time pre-keys — a simpler model than the classic Signal protocol, but the server still never sees the content and never receives any of the keys.

Group end-to-end encryption — Sender Key

Group chats can't be efficiently encrypted the same way as 1:1 — that would mean separately encrypting every message for every member. Instead, WallyMates uses a Sender Key scheme (v5): each member generates their own AES-256 key for a specific group and distributes it to the other members, individually encrypted through the same end-to-end encrypted channel used for regular private messages — the server sees only encrypted blobs, never the key itself. Group messages are then encrypted with fast AES-256-GCM using that shared key — no per-message key negotiation. The protocol is wire-compatible between Android and Windows — the exact same key-distribution and encryption scheme on both platforms.

Call verification — MITM protection

Voice and video in a call are protected separately (see the Calls page), but one question remains: how do you know you're actually calling that person, and not someone who intercepted the connection? During a call, the app shows a "call fingerprint" — a sequence of 96 emoji computed from both parties' long-term identity keys. Compare it out loud, and if it matches, a swap is ruled out: an attacker would need the other party's private key, which not even the server has. It's the same idea as Signal's or WhatsApp's "safety number", and the algorithm is identical on Android and Windows.

Syncing with the web version

The web messenger (web.worldmates.club) is a special case: to show chat history in a browser, messages are additionally re-encrypted with a Web Sync key (AES-128) and stored encrypted in the database. This is a deliberate trade-off — without it, the web version simply couldn't show chat history at all.

If conversation privacy is critical, use the mobile app or secret chats, and keep the web version for one-off conversations.

Local storage

Account protection