Security and recovery

Zero-knowledge and its limits

What client-side encryption protects you from, what it can't, and what we do about the gaps.

Updated 2026-09-25

Everything you keep in Atrium is encrypted in your browser with AES-256-GCM under keys that come from your master password (via Argon2id). Our server stores ciphertext, wrapped keys and a value that confirms your password without revealing it.

What this protects against

A copy of our database, stolen backups, a curious database administrator or one of our own staff: all of them get ciphertext. Our admin tools have no way to decrypt your data.

What it can't protect against

  1. Tampered code from our server. The web app runs code our server sends to your browser. If that code were tampered with, it could capture your master password. We reduce the risk with a strict Content Security Policy, and the browser extension, once it ships, narrows it further because its code is installed rather than downloaded each visit. We don't claim this is solved.
  2. A compromised device. Malware or a malicious browser extension can see what you see and type.
  3. A weak master password. Argon2id slows guessing down; it can't make a guessable password safe.
  4. What you've already seen. An opened item or a read note can be copied. Time-locks and unsharing control the app, not memory.
  5. Losing both your master password and your Recovery Kit. Your data is then unrecoverable, by design.

Some information has to stay readable for the service to work, such as event times and schedules. It's all listed in What we can and cannot see.