Security you can check, not trust

Spojiti is built so that the interesting question isn't "do you promise not to look?" — it's "can you look at all?" Wherever possible, the answer is engineered to be no.

Identity without identifiers

No phone number, email or name — your identity is an Ed25519 keypair derived from a 12-word phrase generated on your phone. We can't link you to a SIM, a Google account, or another app's shadow profile, because there is nothing to link.

End-to-end encryption

Sessions are established with X3DH — now with a post-quantum leg, below — and evolved with the Double Ratchet — the same cryptographic family trusted by security researchers worldwide — with per-device sessions and forward secrecy. The relay routes ciphertext it cannot read and deletes it on delivery.

Post-quantum, and checked on your phone

Session setup adds an ML-KEM-768 key exchange (FIPS 203) alongside the classical one, so an attacker recording your traffic today to break later has to defeat both. The classical encryption is extended, never replaced.

The part almost nobody else does: our implementation is verified against NIST's own published test vectors on your device, at every launch, before it is allowed near a conversation. If that check ever fails, post-quantum switches itself off and says so, rather than pretending to protect you. Claiming post-quantum is easy. Proving it on the device in your hand is the part that counts.

Sealed at rest

On your phone, history lives in an SQLCipher-encrypted database and media is stored as sealed blobs — each photo, video and voice note under its own fresh key. A stolen phone without your unlock gives up nothing readable.

Notifications that say nothing

Push messages carry zero content — Google's and Apple's push networks deliver only a content-free nudge; your words are fetched over the encrypted channel after your phone wakes. Previews are rendered locally, and you control what the lock screen shows.

Safety without surveillance

The abuse guard runs entirely on your device — a local lexicon in English, Hinglish and Devanagari that blurs abusive content until you choose to see it and nudges senders to think twice. No cloud moderation, no server-side scanning; structurally, there is nothing for a server to scan.

Abuse reports that prove themselves

Message franking means that when you report abuse, cryptography lets us verify the reported message is real — without giving us the ability to read anything you didn't report. Accountability and privacy in the same design.

Zero-knowledge backup

Backups are optional and sealed with a key derived from your recovery phrase before they leave your phone. One opaque snapshot per account, replaced on each backup. We cannot open it, and neither can anyone who compels us.

Sovereign infrastructure

Spojiti runs on servers we own and operate, multi-homed across Europe and India — the app races every route and takes the first that answers. No hyperscaler sits between your words and their destination, and calls punch through strict networks over TLS on port 443.

Everyone moves forward

If a build ships with a security flaw, the relay refuses it once a fixed build is out — a forced-upgrade gate so no one quietly lingers on vulnerable software.

Everything grows from your 12 words

Every key you own is derived from your recovery phrase, on your device, every time. Nothing on this tree is stored anywhere or uploaded ever — only the public halves are published. That is why the 12 words alone can rebuild your identity on a new phone, and why we could not recover them for you even if you asked.

Your 12 recovery words ● ● ● ● ● ● ● ● ● ● ● ● generated on your device known only to you derive (HKDF) same words in → same keys out Identity keys Ed25519 sign · X25519 agree public half → published private half → never leaves Post-quantum prekey ML-KEM-768 · FIPS 203 public half → published, signed by your identity key Database key SQLCipher · AES-256 seals your history at rest, on your device only Backup key optional · zero-knowledge seals backups before they leave the device deterministic, so recovery is just re-derivation — and unrecoverable without the words, by design

How a conversation gets its keys

Two independent secrets are agreed the moment a chat starts — one classical, one post-quantum — and both feed the root key. An attacker has to break both. From there the Double Ratchet gives every single message its own key, thrown away after use.

Classical secret · X25519 (X3DH) the exchange trusted for a decade Post-quantum secret · ML-KEM-768 used only after passing NIST vectors on your device HKDF combine break one, learn nothing root key key · msg 1 key · msg 2 key · msg 3 … a fresh key per message, deleted after use the Double Ratchet — keys churn as you talk a stolen key opens one message, never a history — and the ratchet heals the session afterwards

Honest limits — what we can and cannot see

What the relay necessarily handles: the ciphertext it routes while you're offline (deleted on delivery), the opaque account IDs involved in delivery, your subscription tier, and standard connection data any server sees (an IP address while connected). We keep this to the minimum routing requires.

What we structurally cannot see: your messages, media, and calls (end-to-end encrypted); your name or phone number (never collected); your contact book (never uploaded); your backup contents (sealed with your phrase); what you say in a payment request or which sticker you send (all inside the encrypted envelope).

What we won't pretend: no messenger can protect a conversation from the person you're talking to, or from a compromised phone. Screenshot control raises the cost of leaks; it can't make a screen unphotographable. Where a promise can't be absolute, we say so — here and in the user guide.

Found something?

Security reports are welcome and taken seriously. Every build ships with on-device diagnostics (Settings → Diagnostics → Export) that contain no message content — export a log and reach us through the store listing's support channel.

No ads. No brokers. No exceptions.

Our only revenue is subscriptions. There is no advertising SDK, no analytics broker, and no data-sharing "partner" in the app — the business model is the privacy policy.