End-to-End Encryption
SipherMail's end-to-end encryption (E2EE) protocol is called SIPHER-E2EE-V1. It uses RSA-OAEP 4096-bit for key exchange and AES-256-GCM for message encryption — all performed client-side in your browser or mobile app. We never see your unencrypted messages or private keys.
How it works
- Key generation: When you enable E2EE, your browser generates an RSA-OAEP 4096-bit key pair using the Web Crypto API. The private key never leaves your device in unencrypted form.
- Key storage: The private key is encrypted with AES-256-GCM using a key derived from your passphrase (PBKDF2, 310,000 iterations, SHA-256, 256-bit key). The encrypted private key is stored on SipherMail's servers.
- Sending: When you send an E2EE email, the message body is encrypted with a random AES-256-GCM session key. That session key is then encrypted with each recipient's RSA-OAEP public key. The server stores only ciphertext.
- Receiving: Your browser fetches the encrypted email, decrypts the session key using your RSA private key (unlocked with your passphrase), then decrypts the message body with the session key.
Enable E2EE
- Go to Settings → Encryption.
- Click Generate Keys.
- Choose a strong passphrase. This is separate from your login password. Write it down — there is no recovery if lost.
- Your key pair is generated and the encrypted private key is uploaded to the server.
- Optionally enable Show E2EE in composer, then use the encrypt toggle when composing.
⚠️ Passphrase warning
Your E2EE passphrase cannot be recovered if lost. There is no "forgot passphrase" option. If you lose your passphrase, you will permanently lose access to all E2EE-encrypted messages. Store your passphrase in a password manager.
Multi-recipient encryption
E2EE emails can be sent to multiple recipients. Each recipient's public key is used to encrypt a copy of the session key. The sender's own public key is always included as well, so you can decrypt messages in your Sent folder. Recipients without a SipherMail public key cannot open the encrypted body.
Passphrase session cache
After you unlock your private key once, the passphrase is kept in sessionStoragefor that browser tab (cleared when the tab closes) and also auto-clears after 30 minutes of inactivity. Subsequent messages in the same tab decrypt without re-prompting. The passphrase is never written to long-term storage (localStorage / disk). This is intentional UX, not a bug.
Mobile parity
E2EE is fully supported on iOS and Android. The same SIPHER-E2EE-V1 protocol runs in the mobile apps. You can read and compose E2EE emails on any device where you've unlocked your private key with your passphrase.
E2EE vs server-side encryption
All mailbox data is encrypted at rest on SipherMail servers (server-side encryption). E2EE goes further: messages are encrypted before they leave your device, so even SipherMail cannot read them. E2EE is optional and must be explicitly enabled.