Security model
Secretlink is designed so the server stores ciphertext, not your secrets. Encryption happens in your browser or mobile app using @secretlink/crypto (AES-256-GCM + X25519 key wrap).
What we cannot read
- Link secret plaintext (key is in the URL fragment or wrapped for recipients)
- Map drop messages (only encrypted blobs + wrapped keys at rest)
- Your private X25519 keys (stored locally in IndexedDB / secure storage)
What we do store
- Ciphertext, nonces, expiry, view limits, and public profile metadata
- Map coordinates and place labels (not message content)
- Session tokens: API JWT (
sl_token) and web session cookie (sl_session)
Map keys at rest
Map drop data encryption keys are wrapped with a server MASTER_KEY (AWS SSM in production). Reveal endpoints return key material for client decrypt — never plaintext messages.
Reporting & moderation
Users can report map content. Moderators work from metadata and reports; content removal does not require storing plaintext at rest under normal operation.
See also our Privacy Policy.