Discrio
How it works, end to end
Everything a message passes through, in order, including the parts that are ordinary. If you are deciding whether to trust this, the useful thing is not a list of adjectives — it is knowing exactly what exists and where.
1. There is no account, so nothing is created
The first time the app opens it generates a keypair on the phone. That is the whole of your identity. No phone number, no email, no username, nothing sent anywhere, and nothing on a server that could be listed, demanded or leaked. Two passphrases are chosen — one opens your conversations, the other opens a second vault — and the keys are sealed under them.
The passphrase is stretched with Argon2id, using libsignal's own parameters: 16 MiB of memory and 32 passes. Memory-hardness is the part that matters, because a chain of hashes is exactly the shape a purpose-built machine runs hundreds of thousands of times at once, and 16 MiB per guess is not.
2. Two people connect by meeting, or by one link
One shows a QR code, the other scans it. Or one sends an invitation link that works once and expires after 24 hours. There is no directory, so there is no third way and nobody can be found by searching.
The handshake is PQXDH — X25519 combined with Kyber-1024 — so a session recorded today stays closed to a quantum computer later. Afterwards each message gets its own key through the Double Ratchet, with SPQR braided through it so the post-quantum protection is continuous rather than only at the start.
None of that is ours. It is libsignal, the library Signal ships, unmodified and pinned to an exact commit. An app that had invented its own cipher would be the wrong one to trust, and this is the reason to say so plainly.
3. Every message leaves as the same 8192 bytes
Your text is padded to 4096 bytes before it is encrypted, so the ciphertext's length says nothing about what you wrote. The result is padded again to a fixed 8192-byte block for the wire, so every block on the network and at rest is identical in size.
Hold any message and the app shows you the real block in hexadecimal — the same bytes a relay operator would see, and nothing else. It is the one claim on this page you can check yourself, on your own phone, without trusting the sentence above it.
4. The relay holds bytes and forgets them
Blocks go to queue addresses that are random and rotate. There is no user table and no contact graph, because neither was ever created — not deleted, never made. The relay deletes a block when the recipient acknowledges it, and expires anything left after 21 days.
It is written in Rust, it is part of the same public source, and you can run your own. If you do, the app turns off certificate pinning for it, because we cannot pin a certificate we do not control, and it says so where the setting lives.
What the relay does see, and this is the honest limit: the IP address a connection comes from. We do not log it, but that is a policy rather than mathematics. Anyone who needs to hide the fact of using this at all should use Tor or a VPN, and that is equally true of every other messenger.
5. With no internet, it still goes
Two phones in the same room hand each other the same encrypted blocks directly, over Wi-Fi or over Bluetooth. No relay, no connection, nothing leaving the room. A phone that meets yours later can also carry a block onward without being able to read it.
6. On the phone itself
Both vaults live in one encrypted file, padded with decoy records to the same sizes, so the file cannot be read as "a real one and a hidden one". Photographs are encrypted separately and padded to one of five fixed sizes. Messages disappear on a timer you choose per conversation, counted from when a message is sent rather than read. A ghost message is stronger: read once, for three to thirty seconds, then it exists on neither phone and never touched the disk at all.
Screenshots come out blank inside a conversation. Screen recording and mirroring too. It is a setting, and it applies to both people or neither — because your messages sit on the other phone as well, and a choice one of you makes alone protects nothing.
7. What it cannot do
It cannot stop a camera. No software can. What it offers is deterrence a photograph has to get past: a mode revealing about one word at a time under your finger, agreed words where one word stands for another and the meaning never renders on the glass, spelling bent on the way out so a picture cannot quote you verbatim, and a watermark identifying the device a leaked screenshot came from.
It cannot recover anything. Forget the passphrase and the conversations are gone, for everyone, including you. Nothing is kept from which they could be rebuilt. That is the design and it is the one thing that cannot be softened.
It has not been audited. No independent security audit has been published. Until one is, nothing on this page should be treated as an established security property — including the parts that are true. The source is public under AGPL-3.0 and can be read by anyone who wants to check it, which is not the same thing as somebody having checked it.
It has no groups. A group is shared state — who is in it, who left, who added whom — and that is precisely the list this app exists in order not to hold. One-to-one is not a missing feature here; it is the same decision as the rest of the page.
Questions: support@discrio.com · Discrio on the App Store · Under duress · vs Signal · Last updated 15 September 2026