Encryption Design
Consider your data secured inside multiple independent layers of protection. These layers are not physical barriers but well-studied cryptographic constructions designed to resist both current and future attacks.
Your password is never stored. It is used only to derive a key that unlocks a small encrypted container holding the actual vault key. This vault key is generated randomly and is entirely independent of your password. All user data is encrypted with this random key.
As a result:
- Changing your password does not require re-encrypting your data
- Your data security does not depend directly on password strength alone
- An attacker must defeat multiple independent cryptographic layers
At no point do we have access to your password or your data. A stolen vault file reveals only indistinguishable random data.
Security Properties (Summary)
Section titled “Security Properties (Summary)”- Password is never stored — only a derived key is used
- Data is encrypted with a random master key — independent of the password
- Password changes do not require re-encrypting data — only the wrapped master key is updated
- Multiple cipher layers — reduces reliance on any single cipher
- Integrity protection — ciphertext and metadata are authenticated
- No recovery mechanism — no backdoors or server-side keys exist
Technical Details
Section titled “Technical Details”Phase 1 — Vault Creation
Section titled “Phase 1 — Vault Creation”Password Hardening
Section titled “Password Hardening”The password is transformed using Argon2id:
Parameters:
- — memory cost
- — time cost
- — parallelism
These parameters are stored alongside .
Master Key Generation
Section titled “Master Key Generation”The master key is generated uniformly at random (256-bit entropy) and is independent of the password.
Wrap Key Derivation (HKDF)
Section titled “Wrap Key Derivation (HKDF)”First derive a pseudorandom key:
Then expand per cipher:
Authentication key:
Domain separation is enforced via distinct info values.
Master Key Encryption
Section titled “Master Key Encryption”Each cipher operates in CTR mode with a unique random IV.
The master key is encrypted through a cascade:
Authentication (Encrypt-then-MAC):
IVs are generated via CSPRNG, are unique per encryption, and stored alongside the ciphertext.
Stored Data
Section titled “Stored Data”| Value | Description |
|---|---|
| Argon2 salt | |
| Argon2 parameters | |
| HKDF salt | |
| Per-layer IVs | |
| Ciphertext + authentication tag |
Phase 2 — Vault Unlock
Section titled “Phase 2 — Vault Unlock”Re-deriving the Password Key
Section titled “Re-deriving the Password Key”Master Key Recovery
Section titled “Master Key Recovery”- Recompute
- Re-derive wrap keys and
- Verify HMAC before decryption
- Decrypt cascade (reverse order):
Incorrect passwords or tampering result in authentication failure.
Data Key Derivation
Section titled “Data Key Derivation”Data Encryption
Section titled “Data Encryption”User data is encrypted using the same cascade structure:
- CTR mode per cipher
- fresh random IVs per object
- Encrypt-then-MAC using HMAC-SHA512
- authentication covers ciphertext and all required metadata
Algorithm Reference
Section titled “Algorithm Reference”| Algorithm | Purpose |
|---|---|
| Argon2id | Password key derivation |
| HKDF-SHA512 | Key expansion |
| AES-256-CTR | Cipher layer |
| Twofish-256-CTR | Cipher layer |
| Serpent-256-CTR | Cipher layer |
| XChaCha20-Poly1305 | Optional AEAD cipher |
| HMAC-SHA512 | Authentication |
| CSPRNG | Random generation |
Threat Model
Section titled “Threat Model”| Threat | Mitigation |
|---|---|
| Brute-force attacks | Argon2id with high cost |
| Stolen vault file | Full encryption + authenticated decryption |
| Cipher failure | Multi-cipher cascade |
| Tampering | HMAC over ciphertext and metadata |
| Key reuse | HKDF domain separation |
| IV collision | Random IVs per operation |
| Memory exposure | Key zeroization |