Encrypted on your device
Messages, files and their names are encrypted with AES-GCM before they leave the device that sends them.
SendSelf encrypts what you share on your own device, before it is uploaded. This page explains how, what the service can still see, and where the protection ends.
Messages, files and their names are encrypted with AES-GCM before they leave the device that sends them.
Private keys never leave the device that created them. The server only relays sealed copies it cannot open.
Every message is signed by the device that sent it, so the server cannot alter it or change who sent it.
Removing a device cuts off its access and moves the space to a new key that device never gets.
Every space has its own space key: a random AES-GCM 256-bit key that is created on the first device and only ever exists on the devices in that space. Before anything is uploaded, your device uses it to encrypt:
Each piece of ciphertext is also bound to the message it belongs to, so it cannot be lifted into another message without failing to decrypt.
SendSelf has no accounts and no passwords on the server. What identifies you is a small set of keys, and the ones that matter never leave your devices.
| Key | What it does | Where it lives |
|---|---|---|
| Space key | Encrypts everything you share in a space. | Only on the space's devices. Replaced when a device is revoked; earlier keys are kept so your history stays readable. |
| Device keys | Each device has two P-256 key pairs: one to receive keys securely, one to sign what it sends. | The private halves never leave the device. The public halves are published so your other devices can recognise it. |
| Device token | A random 256-bit credential that lets one device use the API. | Kept on the device. The server stores only a hash of it, and each device has its own. |
| Lock key | Encrypts this device's local data, if you set a lock. | Derived when you unlock and held in memory only. |
Adding a device never gives the server a copy of the space key that it can open:
The device that scans also signs the newcomer's public keys, and your other devices check that signature rather than taking the server's list of devices on trust. When a device joins, the chat says whether its keys were verified this way. If the keys of a device you already know ever change, your devices say so instead of quietly accepting them.
Only the space's owner and its admins can link or revoke devices; other devices are members.
Every message — and every “delete for everyone” — is signed by the device that sent it. The signature covers who sent it, the key it was encrypted with, its id, and every encrypted field. Your devices check it against the sender they already trust before storing anything.
So the server cannot change a message, and cannot pass one off as having come from a different device in your space. What a signature does not cover is covered under limits below.
Revoking a device from the devices list does two things:
From then on, everything is encrypted with a key the revoked device never receives. Your other devices keep the earlier keys, so your history stays readable.
Delete for everyone sends a signed deletion through the same path as a message. The server drops its own copy straight away, and each of your devices deletes its copy once it has checked the signature.
A temporary message disappears from your other devices as soon as one of them opens it, and from that one when it is closed. Whether a message is temporary is part of the encrypted content, so the server cannot tell which ones are — or remove the flag to keep one around.
Both depend on your devices doing what the app asks. Neither can undo a screenshot, a file that was already saved elsewhere, or a device that never comes back online.
Your history, your files and your keys are stored in this browser. Without a lock, anyone who can open this browser profile can read them.
A lock encrypts all of that at rest, with a key derived from a passphrase or PIN (PBKDF2-SHA-256, 600,000 iterations) or from a passkey. SendSelf then asks for it every time it starts, and you can lock it on demand. The secret is never sent anywhere, so it cannot be reset: if you forget it, you lose this device's copy — not the space, and not your other devices.
If every device in a space is lost, nothing on the server can bring the space back. A recovery file can: it restores this device in that space, identity and keys included. It is encrypted with a code that is generated for you and shown only once. The file and its code together are as good as the device itself, so keep them apart and safe.
A recovery file is a snapshot. After a device is revoked and the key changes, create a new one to cover what is sent from then on.
The sendself command line lets a server, a script or an agent send to a space. It encrypts and signs on that machine exactly like the app, and it only sends: nothing in the space is ever delivered to it. Its keys live in a file on that machine, readable only by the account that linked it and with no lock of its own. Revoke it from your devices like any other device.
Encryption hides what you share, not the fact that you are sharing. This is what the service can and cannot see:
It cannot read
It can see
Encrypted messages and files are kept only until your devices have them, and never longer than 24 hours. The privacy policy lists everything the service stores and for how long.
We would rather you knew these than found them:
SendSelf is open source under the MIT license. The technical security document describes the model in full — algorithms, formats and open design questions — and the source code is what runs.
If you find a vulnerability, please report it privately through the repository's security page rather than in a public issue.