Erseni Vault is a zero-knowledge tool. Plaintext never leaves your browser unencrypted. Our server only ever sees ciphertext plus a short-lived token.
Plaintext stays in your browser.
The server stores only encrypted data.
The key travels in the link fragment and never reaches us.
A compromised server, a nosy employee, or a lawful-intercept order cannot read your secret. We never hold the key.
URL fragments are not transmitted in HTTP requests, they live only in the browser's address bar. That is why we put the key there.
Secrets self-destruct after one successful read or when the lifetime expires. Either way, the ciphertext is deleted from our database.
The backend and the browser crypto are open source. Read the code, run it locally, or host your own instance.
Source code: gitlab.erseni.net/open-source/secrets-component
Architecture notes and threat model: docs/architecture.md
Browser crypto uses the native window.crypto.subtle API. No third-party crypto library.
AES-GCM-256: A symmetric encryption algorithm using a 256-bit key. GCM mode provides both confidentiality and authentication, so any tampering with the ciphertext causes decryption to fail.
X25519: A modern key agreement algorithm. Two parties each generate a keypair, exchange public keys, and independently derive a shared secret that no one else can compute without one of the private keys.
HKDF-SHA256: A key derivation function. It turns a shared secret (from X25519) into a uniform, fixed-length key suitable for AES-GCM.
URL fragment: The part of a URL after the #symbol. Browsers keep fragments local and never send them in HTTP requests. That is why we put encryption keys there.
Zero-knowledge: An architecture where the server cannot read user data even if it wanted to. Only the client holds the keys needed to decrypt.