Zero-knowledge encryption for your notes

A zero-knowledge notes app is one whose operator cannot read your notes — not because of a policy, and not because nobody has looked yet, but because the keys that would open them were never sent anywhere. This page explains what that means in practice, how Scrinium implements it, and what it costs you.

What “zero-knowledge” actually rules out

The phrase is used loosely, so it is worth being concrete. For a notes app to be zero-knowledge, the operator must be unable to produce the plaintext of your notes in response to a request — from itself, from an employee, from an attacker who has taken the database, or from a court. That rules out three things that are common elsewhere: escrow keys held “for compliance”, a server-side admin view that exists but is “only used for support”, and any feature that must read your notes to work.

It does not mean the service stores nothing. It stores ciphertext, and it has to store enough to authenticate you. The question is whether what it holds is useful to anyone who takes it.

Why most “encrypted” notes apps are not zero-knowledge

“Encrypted at rest” is about a stolen disk. The service holds the key, encrypts the database with it, and can decrypt whenever it needs to — for a support ticket, an abuse investigation, a legal request, or an AI feature that summarises your notes. Nothing about that is dishonest, but it is a different promise from the one people hear when they read the word “encrypted”.

A quick way to tell the two apart: ask who can reset your password. If an email link can restore access to your notes, then the operator can read them. If it cannot — if losing your password means losing the key — the encryption is real, and the inconvenience is the receipt.

How Scrinium implements it

The key hierarchy follows the model used by password managers rather than the one used by note apps: nothing is encrypted with your password directly, and no single key does more than one job.

  1. Your password never leaves the browser. Login uses SRP-6a, a protocol in which the server verifies a proof instead of receiving the password — and authenticates itself to you in return.
  2. Argon2id derives a Master Unlock Key. Memory-hard key derivation makes bulk guessing expensive, which matters precisely because an attacker who steals the database has the ciphertext offline.
  3. That key unwraps an Account Key, then a Vault Key. Changing your password re-wraps the hierarchy rather than re-encrypting your notes.
  4. Every note gets its own key. A note key is generated per note and wrapped by the vault key, so one compromised note tells an attacker nothing about the others.
  5. Everything is sealed with XChaCha20-Poly1305. An authenticated cipher, so tampering is detected on decrypt rather than silently rendered. Attachments get the same treatment under their own keys.
  6. Keys exist in memory only. No key material is written to localStorage, sessionStorage, or IndexedDB. Notes at rest on disk are stored encrypted too.

The design is documented in full, not summarised in a marketing paragraph — see the cryptography design for the primitives and the wrapping order, and the threat model for what this does and does not protect against.

What the server stores

Encrypted note bodies and titles

Opaque ciphertext. No key, no plaintext, no metadata about what is inside.

An SRP verifier for your password

Used for mutual authentication. It is not a password hash and cannot be replayed to log in.

Your account and vault keys, wrapped

Encrypted under your password-derived key — unreadable without the password.

Your email address

For account verification and recovery. Everything else about you is optional.

The trade-offs, stated plainly

There is no password reset

Nobody can reset a password they cannot read the key for. Recovery happens through the recovery key you are given when the vault is created, not through an email link.

Lose both and the notes are gone

If the password and the recovery key are both lost, the ciphertext is unreadable by anyone — including us. That is the same property that protects the notes, viewed from the other side.

The vault locks when the tab closes

Keys live in memory only, so a refresh or a restart asks for the password again. It is not a broken session; a session that outlived the key is exactly what we refuse to ship.

Server-side features are off the table

No server-side search, no server-side image processing, no “AI summarise this note”. Features that would need your plaintext are built on the device instead, or not built.

These are the costs, and they are the reason a product like this is worth choosing deliberately rather than by default. If a note app you use can restore your access with an email link, it is not zero-knowledge — which is fine, as long as it is not being sold as though it were.

Questions people ask

What is a zero-knowledge notes app?

A notes app where the operator cannot read your notes even if it wanted to, because the decryption keys never leave your device. The server stores ciphertext and a way to authenticate you, nothing more.

Is end-to-end encryption the same as zero-knowledge?

They overlap, but the words are not interchangeable. End-to-end encryption describes how data travels between you and your devices; zero-knowledge describes what the operator can know. A service can encrypt notes in transit and still hold the keys at rest. Zero-knowledge means it holds neither the keys nor a working copy.

Can Scrinium read my notes?

No. Note bodies and titles are encrypted on your device with a per-note key wrapped by a vault key that exists only in your browser’s memory. The server receives ciphertext, and there is no escrow key, back door, or admin view that can open it.

What happens if I forget my password?

You use the recovery key issued when you created the vault; it can unwrap your account key independently of the password. If the password and the recovery key are both lost, the notes are unrecoverable by design.

Is client-side encrypted note-taking usable day to day?

Yes — the trade is fewer server features, not a worse editor. Scrinium renders Markdown inline as you type, searches locally over decrypted notes in memory, and syncs encrypted blobs free and unlimited across devices.

See it for yourself

Create a vault and watch the network tab: encrypted blobs leave the device, and nothing else does.

Open Scrinium