What “end-to-end encrypted” actually means for a couple

Every app claims it. Very few explain what it costs them, which is the only way to tell whether it is true. Here is the plain version, using our own app as the worked example.

The key is made on your phones, not on ours

When two people pair, each phone generates a key pair and publishes only the public half. Each side then combines its own private half with the other’s public half and arrives at the same shared secret — without that secret ever crossing the network. This is the same family of maths (X25519, then HKDF, then AES-GCM) that Signal and WhatsApp use.

The consequence is the whole point: we never hold the key, so we cannot be made to hand it over — not by a request, not by a court order, not by somebody who breaks into our database. What is stored on our servers is ciphertext.

What the server can still see

Any honest explanation includes this part. Encryption hides content, not the existence of content. Our servers know:

  • that two accounts are paired, and when they paired;
  • that a message or photo was written at a particular time, and by whom;
  • the size of it, and that the other person read it;
  • when a sealed letter is due to open — because a rule has to enforce that.

What they never learn is what any of it says. The server knows you talked at nine; it does not know what about. Anyone promising to hide the metadata too is either running a much stranger system than they described, or is not being straight with you.

Why notifications say so little

A push notification is normally composed on a server, which means the server has to know what to write. If it can write “Ayşe: are you awake?”, it can read your messages.

So ours cannot. The server sends the encrypted blob, and your phone decrypts it and writes the banner itself, in the fraction of a second before it appears. You see the message; we never did. It is more work for a worse failure mode — if the key is not on that device yet, the notification stays vague — and it is the only version that keeps the promise.

Photos are the part most apps skip

Plenty of apps encrypt chat and quietly upload photos in the clear, because encrypting bytes means you also have to decrypt them before anything can be displayed, and every plain image URL in your code stops working.

It is worth doing anyway. In an app for a couple, the photos are the sensitive part. Ours are sealed on the way up, cached decrypted on the device only, and never readable by us in storage.

The uncomfortable part: nobody can reset it

Here is what end-to-end encryption really costs. There is no “forgot my messages” link. If both of you lose your phones, your history is gone — permanently — unless one of you saved the recovery key.

If we could restore your history, so could anybody who convinced our support team they were you. A backdoor for you is a backdoor for them.

That is why the recovery key exists, and why it is deliberately awkward: a long string you are told to write on paper or put in a password manager, shown to you once you ask for it, with a warning that whoever holds it can read everything. It is not a password we can check. It is the key.

Rotation, and why it matters here

One shared secret used forever means one leak exposes every year of your history. So the key that actually encrypts each message is derived per month from the shared secret. A key recovered from an old phone opens the months it was there for; the rest stay closed. This is a weaker version of what Signal does per message, chosen because a couple’s app also has to show four-year-old photos instantly.

How to check anyone’s claim

Three questions are enough to tell a real implementation from marketing:

  • What happens if I lose every device? If they can restore your messages, it is not end to end.
  • What does the notification say? If the server writes the text, the server read the text.
  • Are photos and attachments included? Ask specifically. This is where the gap usually is.

Dearest Heart answers those three: gone unless you kept the recovery key; written on your phone from an encrypted payload; and yes, photos too.