Security
Threat model and limits
What SeTalk is designed to protect against, and what it isn't. Encryption is one part of protecting a conversation. A compromised or unlocked phone, a recipient who saves or shares a message, and an invitation sent to the wrong person can still expose information. No app removes every risk, and we don't claim to.
SeTalk is built on SimpleX Chat v7.0.3. Where something depends on SeTalk's own setup and hasn't been tested yet, we mark it planned.1
What SeTalk protects
- The content of your messages, on the way and on the serversMessages and files are end-to-end encrypted. The servers carry sealed packages they can't open.2
- Your keysYour keys are created and kept on your phone and don't pass through our servers.3
- Old and future messages if one key leaksEvery message gets a new key, so one leaked key doesn't open the others.2,4
- Direct conversations against future quantum computersDirect conversations add a layer designed to resist them, on by default. Group chats don't have it yet.4,5
- Who you are, at sign-upNo phone number, email or real name. A username, a password and an authenticator app.6
- Who talks to whom, on the serversServers see separate queues, not people. There is no user ID.7,3
- Your address bookThe app doesn't ask for access to it.8
- Your notificationsThey don't go through Google's push service.9
- Your payment, on the blockchainPaid in Monero; the blockchain doesn't show who paid, who received or how much.10
What SeTalk doesn't protect
- A compromised phoneSpyware on a phone reads what's on its screen, before any encryption. Keep the system updated and install apps only from trusted sources.
- An unlocked phoneAnyone holding your unlocked phone can open your conversations. Lock the screen and set an app passcode in SeTalk.3
- The person on the other sideYour contact can take a screenshot, forward or show the message. Use disappearing messages, and think about who's in each group.3
- An invitation sent to the wrong personIt connects you to the wrong person. Send invitations only directly, and verify each contact through another channel.3
- Network metadata, without TorYour carrier or network can see that you use SeTalk and when; SeTalk's design doesn't send them who you talk to. The SimpleX base supports connecting to servers through Tor; SeTalk hasn't tested this setup yet and our guides don't cover it (planned).3
- SeTalk, as the operator of the serversThe servers see only queues with no names attached, but since SeTalk runs them, the timing of messages could in theory be matched. The content stays end-to-end encrypted either way.1,2
- Google, if you install from Google PlayGoogle knows you installed the app through your Google account. A direct APK is planned, coming soon.1
- The exchange where you bought MoneroIt knows you bought Monero. Send it to your own wallet first, and pay from there.10
- Legal ordersSeTalk complies with the law. If we are legally required to hand over data, our account service can only hand over what it keeps: the account record shown on the home page.6 Our relay servers carry messages end-to-end encrypted, so we can't hand over their content, and we don't keep your contacts.2,6 Like any server, the relay servers see the IP address of the phones that connect to them, unless you use Tor.7,1 On the transparency page we publish how many requests we have received and, if we ever hand over data, what was asked and what we provided, as far as the law allows.
What data exists, and where
| Data | Where it is | For how long |
|---|---|---|
| Your account: username, dates, subscription, authenticators and the last 10 security events; your password and recovery codes only as one-way hashes, your authenticator's secret encrypted at rest, your sessions only as a hash of the token; the date of the last recovery and the second-factor failure counters; for 72 hours after a recovery, the previous password and authenticators | SeTalk's account service | Until you delete the account (the hash of the username stays another 30 days); sessions until they expire6 |
| Invoices (plan, amount, status, dates) | SeTalk's account service | Kept for accounting, also after you delete the account; from then on, nothing links them to you6 |
| The invoice on the payment page: plan, amount, payment times and status, without your username; plus the IP address of the browser that opens the page | SeTalk's payment server (pay.setalk.app) | planned Not defined yet6 |
| Your IP address, when you use setalk.app | Memory of SeTalk's account service, to limit attempts | Up to an hour, in memory; never written to the account service's database or logs6 |
| Your connection to setalk.app (IP address and the usual technical data of a web request) | Cloudflare, which sits in front of setalk.app | As set by Cloudflare's privacy policy6,11 |
| Your messages and contacts | Your phone | Until you delete them or uninstall the app6,7 |
| Messages on the way (end-to-end encrypted, in queues with no names) | SeTalk relay servers | planned Until delivered, or 21 days at most7,12 |
| The IP address of your phone, unless you use Tor | SeTalk relay servers, which the app connects to | planned Not defined yet; SimpleX's own policy says its servers may keep it temporarily to prevent overload or attacks7,1 |
| Your payment (sender, receiver and amount hidden) | The Monero blockchain | Permanent10 |
The logs of our account service don't record your username, session tokens, IP address, the content of requests, account or invoice identifiers, or amounts.6
Your account and its limits
- Two of threeYour account opens with two of three: password, authenticator, recovery codes. Without two of them, nobody can recover it, including us. Your conversations on your phone are not affected by your account.6
- Recovery can be undone for 72 hoursAfter a recovery, the account owner can undo it within 72 hours with the password and a code from an authenticator from before the recovery. Someone who has two of your old factors could also undo a legitimate recovery; that is a limit of the two-of-three rule. Recoveries and undos appear in your account's security events, which show the last 10.6
- Expired subscriptionYou have 7 days to read your conversations and renew; after that the app is locked until you renew. Nothing is deleted.6,13
- Long time offlineIf your phone stays offline for more than 21 days, reading is locked until it reconnects, even with a paid subscription.6,13
- Deleting your accountSeTalk can't erase what's on your phone remotely. To remove it, uninstall the app.6
Profiles
The app lets you have more than one chat profile.3 Profiles are a way to organize your conversations. We don't promise that one profile is kept apart from another against someone who has your unlocked phone.
What is still planned
- planned Messages removed from SeTalk servers once delivered, or after 21 days at most. That's how SimpleX's own servers work; we'll confirm it on ours once they're live.7,12
- planned Connecting through Tor, tested and covered by our guides.3
- An independent audit of SeTalk itself has not been done. The Trail of Bits audits cover the upstream SimpleX project.14
- iPhone app: planned for a later phase, with no date.
Why SeTalk is safer · the path of a message and who learns what
Sources
- SeTalk internal document, not public: research notes on the SimpleX Chat base
- SimpleX Chat v7.0.3, app texts on end-to-end encryption
- SimpleX Chat v7.0.3, README
- SimpleX Chat v5.6, double ratchet and quantum resistance
- SimpleX Chat v5.7, quantum resistance by default in direct conversations; groups not yet
- SeTalk internal document, not public: how the account service and the license work
- SimpleX Chat v7.0.3, privacy policy
- SimpleX Chat v7.0.3, Android manifest
- SimpleX Chat v7.0.3, notifications without Firebase or Google push
- Monero, “What is Monero”
- Cloudflare, privacy policy
- SimpleX Chat v7.0.3, server configuration
- SeTalk internal document, not public: what happens when a subscription expires
- SimpleX Chat v7.0.3, security audits and reporting channel