Keyboard

Shortcuts

Command palette
K
Home
gh
About
ga
Projects
gp
Expertise
gx
Journal
gj
Contact
gc
Copy email
e
Call
c
Toggle theme
t
Show this help
?

↑↓ to navigate · Enter to open · Esc to close

Security

Client-side end-to-end encryption — without lying about zero-knowledge

TL;DR Credible zero-knowledge means the key never leaves the client — not just « we encrypt at rest ».

12 Nov 2024 · Nicolas Albert

  • crypto
  • e2ee
  • webcrypto
  • argon2
Client-side end-to-end encryption — without lying about zero-knowledge

2 min read Reading 0%

When a client asks for a « secure vault », the tempting shortcut is to encrypt files at the DB layer and call it zero-knowledge. It isn't. Credible zero-knowledge requires the key to never leave the client device.

What LockVault does

  1. The user enters a password in the browser.
  2. Argon2id derives an account key (64 MB memory, 3 iterations, 4 parallelism).
  3. Each file is encrypted with AES-256-GCM using a random IV; the file key is wrapped by the account key.
  4. Only the encrypted blob + anodyne metadata (size, date, encrypted name) reaches the server.

Why not « we encrypt at rest »

If the key travels to the API, a DB dump or an error log exposes it. The moment the server can read the cleartext, it stops being zero-knowledge and becomes encryption-at-rest. Both have their place, but name them honestly.

Assumed limits

  • Strength depends on password quality (hence Argon2id).
  • Revoking a recipient implies rotating the vault key — supported, but costly.

The outcome: an admin can manage accounts without ever reading a document. Verifiable by design, not by promise.

← Back to journal

Contact me Call