Skip to content
Ownfold
Esc
navigateopen⌘Jpreview
On this page

Key hierarchy

Root vault keys, per-record data keys, device envelopes, Recovery Kits, and why envelope encryption makes rotation practical.

Recovery secret ──KDF──▶ Recovery wrapping key ─┐
                                                 ├──unwrap──▶ Root vault key
Device private key + ephemeral public key ───────┘                    │

                                                         unwrap record data key


                                                              decrypt record

Root vault key

The browser generates one random root key per vault. Plain root-key bytes never enter the application server, database adapter, transport, logs, or Recovery Kit file. The active engine keeps them only while the vault is unlocked.

Record data keys

Every record gets a fresh random data-encryption key and nonce. That key encrypts record content; the root key wraps the data key. Root rotation can therefore rewrap keys without decrypting and re-encrypting every content payload.

Device keys

Each enrolled browser has independent X25519 key material. The server stores the public key and a device-specific encrypted root-key envelope. Revoking a device prevents future coordination but cannot erase keys already copied from a compromised device.

Recovery wrapping key

Argon2id derives a wrapping key from the Recovery Kit password or generated code and a random salt. The kit contains KDF parameters and an authenticated encrypted root key, never the recovery secret. See the cryptographic ADR for exact algorithms and parameters.

Rotation consequences

Root rotation creates a new root key, rewraps record data keys, replaces active device envelopes, and requires a newly verified Recovery Kit. Old root-key material remains only for the resumable transition and is removed after atomic server cutover.

Last updated on August 4, 2026

Was this page helpful?