Encryption State
- In Transit: All data is encrypted using TLS 1.3 (transport layer) AND Signal Protocol (application layer). This means even if the SSL/TLS layer is breached, the data remains unreadable.
- At Rest (Server): We store nothing but temporary, undecryptable blobs.
- At Rest (Device): Data on your device is encrypted using AES-256-GCM via SQLCipher, protected by the device’s secure enclave (Keystore/Keychain).
Scope of Encryption
- Messages & Attachments: Fully E2EE. Only the sender and recipient possess the ephemeral keys to decrypt.
- Metadata: Sealed Sender technology is used to minimize metadata exposure. The server knows that a message is being sent, but cryptographically hides who is sending it to whom where possible.
Key Management
- Ownership: You control the keys. Private keys are generated on-device and never leave it.
- Rotation: We use the Double Ratchet Algorithm.
- Session Keys: Rotated with every single message. If a key is compromised, it cannot decrypt past messages (Forward Secrecy) or future messages (Post-Compromise Security).
- Separation of Duties: Letro acts only as a key directory service (publishing Public Keys/Pre-keys). We cannot access Private Keys.

