Skip to content

Threat model

Who can see what, and what stops them

A threat model is only useful if it names the adversaries it loses to as clearly as the ones it beats. Each row below lists what that adversary sees, what it cannot reach, the defence in place, and what remains possible anyway.

PrivaMesh is designed against an operator who wants your data, a chain observer reading everything public, and an impostor trying to intercept a contact add. It is weakest against a global timing analyst and offers nothing at all against a compromised device.

PrivaMesh threat model by adversary, with defences and residual risk
AdversarySeesCannotDefenceStill possible
PrivaMesh, the operatorThat an account paid for a send, and whenRead messages, learn recipients, list your contacts, or reconstruct historyNo account database or message store; blind tokens unlink payment from sendingWe could be compelled to show that some account sent something at a given time
The RPC providerYour IP address, request timing, the transactions you submitDecrypt anything, or tell which one-time address belongs to whomThe endpoint is swappable and self-hostableA logging provider builds a network-level picture of when you are active
A chain observerPadded ciphertext, one-time addresses, exact transaction timesRead content, or link two messages in the same conversationStealth addressing, fixed padding buckets, optional cover trafficWith cover traffic off, your activity pattern over time is fully visible
A global timing analystCorrelated activity across the whole network at onceDecrypt, or link addresses cryptographicallyCover traffic at random 3-10 minute intervals, when enabledThis is the adversary we defend against least well; an observer of the entire network with unlimited retention is outside what any per-message design fixes
Someone holding your unlocked phoneEverything: plaintext, contacts, keysRecover messages already deleted by the ratchetKeychain storage behind Face ID or Touch ID; forward secrecy limits the pastDevice compromise is total for anything currently on the device
Someone who has your recovery phraseYour identity, and can impersonate you going forwardRead your past conversations - those keys no longer existThe phrase never leaves your device and is never transmittedThere is no revocation. If the phrase leaks, the account is theirs too
A malicious contactEverything you send them, and can screenshot or forward itReach anyone else you talk to, or read other conversationsBlocking, and per-conversation key separationNo cryptography prevents the person you are talking to from being untrustworthy
An impostor during contact addNothing, if verification succeedsSubstitute their key for a contact whose bundle is signed on-chainWallet-signed prekey bundles published on-chain, verified by signature not by directoryYou still have to confirm you added the person you meant to add
AppleThat your Apple ID bought a subscriptionSee messages, contacts, or link the purchase to your sending activityBlind tokens sit between the purchase and every sendApple knows you are a PrivaMesh customer, which is unavoidable on iOS
A network-level censorThat you reached a Solana RPC endpointRead or selectively drop individual messagesRPC endpoints are swappable, including to ones you runBlocking Solana or every RPC blocks delivery entirely

What this model assumes

That the cryptographic primitives hold: X3DH, the Double Ratchet, AES-256-GCM and, on iOS 26, ML-KEM-768. That your device is not already compromised. That you verify the contact you are adding is the person you intended. If any of those fail, the rest of the design does not save you.

It also assumes our implementation of those primitives is correct, which is exactly the assumption an independent audit would test and which has not happened yet. For the full list of what is not covered, see known limitations.

Frequently asked questions

What is PrivaMesh worst at defending against?

A global adversary who watches the whole network continuously and keeps everything. Cover traffic raises the cost of timing correlation but does not defeat an observer at that scale, and the chain keeps a permanent record for them to work against.

If my device is seized, what is exposed?

Everything currently on it: plaintext, contacts and keys, unless it is locked and the attacker cannot get past Face ID. Forward secrecy limits the damage to what has not yet been deleted by the ratchet - old messages are already unrecoverable.

Can PrivaMesh be forced to hand over my data?

It can be asked. What exists to hand over is that an account paid for a send at a given time. There is no message content, no recipient, no contact list and no account record, because none of those are stored.

Does a VPN help?

Yes, against the RPC provider and a network-level observer, which are the two adversaries that see your IP. It does nothing about what is written to the chain, which is already unreadable.

Keep reading