← All news

End-to-end encryption for Seldeo direct messages

The one-line summary

Direct and group messages on Seldeo are end-to-end encrypted between paired devices. Seldeo servers can see that a message was sent (from whom, to whom, and when) but cannot read the message body. Media attachments — photos, voice notes, files — are encrypted before upload and decrypted only on receiving devices.

The rest of this post is the honest, detailed version.

What "end-to-end encrypted" means on Seldeo

When two accounts message each other, each device generates a long-lived identity key and a rotating set of pre-keys. Messages are encrypted on the sender's device using a key derived from the recipient's public identity plus a fresh session key. The ciphertext travels through our servers. Only the recipient's device can decrypt it, because only it holds the matching private key.

The important properties this gives you:

  • Confidentiality. Nobody at Seldeo can read the plaintext of your messages. Nobody at our cloud providers can. Nobody who intercepts the network traffic can. If a subpoena arrives, we can produce metadata (who sent to whom, when) but not content, because content is not stored server-side in a form we can read.
  • Forward secrecy. Every session periodically rotates its session keys. If someone captured ciphertext yesterday and somehow obtained today's session key, they still cannot decrypt yesterday's messages, because the key they hold does not derive backwards.
  • Authenticity. Ciphertext is authenticated per-message. A server that tampered with a message in flight would fail to produce a valid signature, and the receiving device would discard the message rather than display corrupted plaintext.

Group chats

Group chats use the same primitives, plus a sender-key layer so that a message written once is efficiently deliverable to a group of ten, twenty, or two hundred people without the sender having to encrypt the same body twenty times.

The trade-off for that efficiency: when a member is removed from a group, the sender-key is rotated so past-member devices cannot read future messages. Members added to a group cannot see history from before they joined. This is intentional — group membership is the boundary of message visibility, not the boundary of the group's existence.

What we can and can't see

We are unusually direct about this because opaque privacy claims are the reason people distrust messaging apps to begin with.

Seldeo servers can see:

  • Sender account, recipient account (or group), timestamp.
  • Ciphertext length (rounded to a small number of buckets).
  • Push-notification triggers (an opaque "you have a message" event routed via FCM / APNs).
  • The device fingerprint that established a session pairing.
  • The pre-key advertisement that supports asynchronous first contact when the recipient device is offline.

Seldeo servers cannot see:

  • The plaintext of any message.
  • The plaintext of any voice note.
  • The plaintext of any attached photo or file.
  • Which messages within a session are replies to which.
  • Which links inside a message plaintext are followed.

Multiple devices

Seldeo supports pairing multiple devices to one account — for example, your phone and your tablet. Pairing is done by scanning a QR code on the new device from the existing signed-in device. Both devices then independently hold identity keys and independently receive ciphertext for the account.

Pairing does not replay past history from the paired device to the new device. Older messages that were only decrypted on the old device stay on the old device. This is a real inconvenience — a common request is "show me my old conversations on my new phone" — and we've chosen the private option over the convenient one until we can build a solution that does not require handing the server a decryption key.

Backups

Seldeo does not currently ship a cloud message backup. If you lose all paired devices, you lose the plaintext of your prior messages. We know this trade-off is expensive; we are working on an opt-in, passphrase-encrypted backup that decrypts only on your devices. When that ships, the passphrase will never leave your device, and no version of Seldeo will ever store a recovery key that can decrypt your messages without your passphrase.

Push notifications

Push notifications on Seldeo carry a preview of the sender's display name and the first few words of the message body, because that's the notification pattern people expect. The preview is generated locally on your device from the decrypted plaintext — it is not composed by our servers or by the push providers (Apple's APNs, Google's FCM).

You can turn message previews off in Settings → Notifications → Message previews. Doing so is the safest option if your phone is often unlocked in front of other people.

Reporting a message

End-to-end encryption creates a tension: if we cannot read a message, how do we act on a report of an abusive one?

Our answer is the same one every credible E2EE messenger has converged on: when you report a message, your device shares the plaintext of that specific message (and its immediate context) with our Trust & Safety team via an encrypted upload that only our reviewer can decrypt. No other messages, in that thread or elsewhere, are exposed by a report. See Reporting a message for the full flow.

We do not scan messages in aggregate. We do not run heuristics against the plaintext of your conversations. The report is the only path by which a specific message can be inspected.

What we still owe you

  • Verifiable identity key fingerprints in the app so you can compare with a friend out-of-band (planned for Q4).
  • A cross-device backup with a user-held passphrase so history survives losing all devices (in design).
  • Independent audit of the messaging cryptography (RFP out).

We will publish updates on all three on this news feed. When we change the messaging model in a way that materially changes what our servers can or cannot see, we will announce the change here first — not in a legal notice update.

If you have specific questions about how our messaging privacy works, security@seldeo.com is the right address.