Skip to main content
NEWIntroducing Norypt MDM — anonymity-first mobile device management for activists, journalists & privacy teams.Learn more →
Guide

Signal vs Session vs Matrix: A Technical Comparison

Signal, Session, and Matrix use different cryptographic protocols. This comparison shows which fits your threat model.

8 min read30 January 2026Norypt Team

Choosing a secure messaging platform requires understanding what the underlying protocols actually do, not just what the marketing says. Signal, Session, and Matrix make different engineering choices that result in meaningfully different security, metadata, and censorship-resistance properties. This article goes deeper than the surface comparison — into the protocol mechanics that determine what each system actually protects.

Signal Protocol: X3DH and the Double Ratchet

Signal's security rests on two cryptographic constructions. The first is X3DH — Extended Triple Diffie-Hellman — used for initial key agreement. When you first message someone on Signal, your app and theirs perform a multi-step key exchange using four Diffie-Hellman operations over their published key material. The result is a shared secret that neither party had before, and that nobody observing the exchange could derive. This key exchange can happen asynchronously — Signal's servers hold "prekeys" that allow someone to initiate a session even when the recipient is offline.

The second construction is the Double Ratchet algorithm, which governs all subsequent messages. It combines a symmetric key ratchet (which advances the key with each message) and a Diffie-Hellman ratchet (which injects fresh randomness into the key derivation chain when both parties are active). The result is forward secrecy per message: if an attacker compromises a single message key, they gain access to that message only. Past messages are protected because their keys have been discarded. Future messages are protected because new DH material will be injected.

Sealed sender is a distinct feature that addresses metadata rather than content: it obscures the sender identity from Signal's servers. Signal knows a message is being delivered to a recipient but cannot reliably determine who sent it. Combined with Signal's phone number identity model, this is a meaningful but incomplete metadata protection — Signal still knows which phone numbers have accounts and when they last connected.

Session Protocol: decentralised modifications

Session began as a fork of Signal's protocol and has since diverged. The core encryption — derived from the Signal Protocol — provides similar message-level security for one-to-one conversations. The significant differences are architectural.

Session replaces the centralised server model with the Oxen Network, a decentralised network of service nodes operated by independent parties. Messages are routed through onion routing (similar in concept to Tor), with three nodes in the path: the sender's guard node, a relay node, and the recipient's swarm. No single node sees both the sender's identity and the recipient's identity and the message content simultaneously. This is a stronger metadata protection than Signal's sealed sender at the routing level.

Session IDs are public keys, not phone numbers. Registration requires generating a keypair on the device — no external identifier is needed or collected. This is the most important distinction for anonymity: your Session identity is not tied to a phone number, email, or payment method.

The trade-off is reliability and speed. Decentralised routing through multiple nodes adds latency. The network is smaller and less tested under load than Signal's infrastructure. Message delivery guarantees are weaker — if a recipient's swarm is unavailable, message delivery may fail or be delayed in ways that Signal's centralised infrastructure handles more gracefully.

Matrix: federation and Megolm

Matrix is a protocol for federated, persistent, room-based messaging. Unlike Signal and Session, which are primarily conversation-oriented, Matrix rooms are persistent spaces that exist on homeservers and are synchronised across the federation. The architecture is closer to IRC or XMPP than to Signal.

E2EE in Matrix uses Megolm, a group ratchet algorithm. Megolm uses a one-way ratchet within a session: keys advance forward but cannot be derived backward. This provides forward secrecy at the session level, not the message level. A session key is rotated when participants change or on a configurable time schedule, not after every message. This is meaningfully weaker than Signal's Double Ratchet in terms of forward secrecy granularity.

Key verification in Matrix requires explicit cross-signing — scanning QR codes or comparing emoji strings to verify that the keys you are using to encrypt belong to the intended person and not to a compromised homeserver substituting keys. This step is often skipped by users, creating a risk that encrypted messages are being encrypted to unverified keys.

The federation model creates a persistent metadata exposure: the homeserver knows room membership, message timing, and which users interact with which rooms, even when message content is encrypted. For users on public homeservers, the operator has this metadata. Running a private homeserver addresses this, but adds significant operational complexity.

Forward secrecy: a direct comparison

  • Signal: Per-message forward secrecy via Double Ratchet. Compromising one key reveals one message.
  • Session: Per-message forward secrecy for one-to-one chats (same underlying ratchet). Group messaging uses a sender key approach with less granular rotation.
  • Matrix: Per-session forward secrecy via Megolm. A session may cover many messages before the key rotates. Weaker than Signal or Session.

Censorship resistance

  • Signal: Centralised infrastructure. Signal can be blocked by blocking its server IPs. Signal has censorship circumvention (domain fronting, proxies) but a motivated state-level adversary can block it.
  • Session: Decentralised across many independently operated nodes. No single point to block. Significantly more censorship-resistant than Signal.
  • Matrix: Federated — blocking one homeserver does not block the protocol. Users can run their own servers. Intermediate censorship resistance.

Metadata exposure summary

  • Signal: Phone number known to Signal, account creation and last connection date, sealed sender reduces content metadata exposure. Very minimal.
  • Session: No external identifier. Routing nodes see partial routing metadata but not full sender-recipient-content triples. Minimal by design.
  • Matrix: Homeserver sees room membership, timing, and federation relationships. Significant metadata exposure to homeserver operator unless self-hosted.

Practical verdict

For most individuals, Signal is the correct choice: the strongest per-message security, the widest adoption (increasing the anonymity set), and the best-audited implementation. For use cases where tying communications to a phone number is unacceptable, Session is the serious alternative. For organisations that need persistent rooms, team communication, and the ability to run their own infrastructure, Matrix is the right fit — with the understanding that E2EE must be explicitly enabled and key verification must be enforced.

None of these platforms protects you if your device is compromised. The best messaging protocol runs on a device designed for security. Norypt GrapheneOS phones provide that foundation — hardened at the OS level so the apps running on top can do their job.

Ready to take control?

Every Norypt device arrives pre-configured, verified, and ready to use — no technical knowledge required.

Related Product

Norypt

Norypt Pixel Secure

The practical steps in this guide are already built into every Norypt phone — pre-configured, verified, and ready from day one.

From €800

See details