Your notes are encrypted on this device with a key derived from your password. The server never receives your password, any decryption key, or your plaintext — it only ever sees ciphertext. If the server is compromised, an attacker gets encrypted blobs they cannot read.
Your Account Key and Vault Key are never written to disk, localStorage, sessionStorage, or IndexedDB. They exist only in your browser’s memory while the vault is unlocked. That’s why Scrinium asks you to re-enter your password after a refresh or when you close the tab — not a broken session, but a deliberate choice: no decryption key is ever at rest.
Your password runs through Argon2id (a memory-hard key derivation function) to produce a Master Unlock Key. That key encrypts your Account Key, which encrypts your Vault Key, which encrypts a unique Note Key for every note. Each note body and its title are sealed with XChaCha20-Poly1305.
An SRP verifier for login (not a password hash), your Account/Vault keys encrypted with the password-derived key, and opaque encrypted note blobs. It also stores your email for account recovery and verification.
Your password, any decryption key, note content, titles, tags, and even your search queries — search runs entirely on your device over decrypted content in memory.
When you create a vault you get a recovery key. It can decrypt your Account Key independently of your password, so you can recover if you forget the password. If you lose both the password and the recovery key, your notes are unrecoverable — by design.
The cloud is a single source of truth: your device pushes encrypted blobs and adopts the server’s version on pull. Every device converges to the same encrypted state. Sync only works after your email is verified.