EVERYTHING IN YOUR VAULT

Every feature, explained simply

A technical breakdown of each feature: what it does, how it's implemented, and why the design decisions were made that way.

Core Feature 01

Hybrid Encryption: ML-KEM + AES-256-GCM

Each file uses a freshly generated 256-bit symmetric key, encapsulated under ML-KEM-768 using your vault's public key. The file itself is encrypted with AES-256-GCM using a key derived via HKDF-SHA-256 from the ML-KEM shared secret and a per-file salt. Decryption requires your ML-KEM secret key and the correct Argon2id-derived vault key.

Why hybrid? AES-256-GCM provides fast, hardware-accelerated authenticated encryption. ML-KEM provides quantum-safe key encapsulation. The hybrid approach means neither algorithm is a single point of failure — compromising one does not compromise the other.
Layer 1 — Key Encapsulation
ML-KEM-768 (1088-byte ciphertext)
Layer 2 — File Encryption
AES-256-GCM + 128-bit auth tag
Key Derivation
HKDF-SHA-256 (per-file salt)
Ciphertext Format
QSAFE Container v2
Core Feature 02

Tamper-Proof Digital Signatures

The entire QSAFE container — ciphertext, encapsulated key material, and all policy fields — is signed using ML-DSA-65 after encryption. The signature is verified before any decryption attempt. Any modification, including to policy metadata, produces a verification failure. This ordering prevents chosen-ciphertext attacks and ensures policy fields cannot be tampered with.

Coverage: The signature covers every byte of the container prior to the signature field itself — including the KEM ciphertext, AES ciphertext, IV, policy ID, and unlock timestamp. The signing key is the vault's ML-DSA-65 secret key, stored encrypted at rest.
Signing Algorithm
ML-DSA-65 (CRYSTALS-Dilithium)
Signature Covers
All container bytes incl. policy fields
Signature Size
3,293 bytes
Verification Timing
Before decryption — fails fast
Core Feature 03

Time-Lock Policies

When encrypting a file, you can optionally attach a policy: "This file cannot be opened until [date]." The unlock date is embedded inside the signed QSAFE container. Because the signature covers the policy fields, the time-lock cannot be removed or modified — doing so would break the signature and prevent decryption.

Use cases: Legal documents sealed until a court date. Inheritance files locked until a beneficiary comes of age. Planned announcements embargoed until a specific moment. Contract terms sealed during negotiation.
Policy Fields (all signed)
unlock_time · expiry_time · policy_id
Enforcement
PolicyEngine.evaluate() before decrypt
Tamper Protection
Cannot modify time without breaking sig
Status Visual
⏳ Countdown shown in file list
Core Feature 04

Full Audit Log

Every action taken in your vault is recorded: file encrypted, file decrypted, policy denied, signature failed, vault exported. Each log entry includes a timestamp, the action, the file name, and the result. The audit log is stored alongside your vault in IndexedDB.

Why this matters: If someone gets access to your unlocked device and tries to read your files, you'll see exactly what was accessed and when. Full transparency, zero gaps.
Logged Events
encrypt · decrypt · policy_denied · sig_failed · export · import
Each Entry Contains
timestamp · action · fileId · result · reason
Storage
IndexedDB access_logs store
Core Feature 05

Export, Backup & Import

Your vault lives in your browser — but you can export it at any time as a single encrypted backup file. The export includes all your encrypted files, policies, and audit logs — but not your secret keys in raw form (they remain encrypted with your password). Import the file in any browser to restore your vault.

Important: Export regularly if you store important files. Browser storage can be cleared. Your export file is safe to store anywhere — without your password, it's unreadable.
Export Format
.vault JSON archive
Contains
All files · policies · logs · encrypted keys
Without Password
Completely unreadable

QSafe vs other tools

Feature QSafe Vault ZIP Password VeraCrypt Standard Cloud
Quantum-safe encryption ML-KEM-768
Runs entirely in browser
No installation needed~
Zero file uploads
Digital signatures (tamper proof) ML-DSA-65~
Time-lock policies
Audit log~
Brute-force resistant KDF Argon2id PBKDF2~
No account required

Explore the vault

Open your vault and encrypt your first file in under 30 seconds.