Vertueal Docs
Password Manager

Zero-Knowledge Cryptography Explained

Understand how client-side PBKDF2 key derivation, AES-256-GCM symmetric encryption, and RAM scrubbing protect your credentials.

Zero-Knowledge Cryptography Explained

In cybersecurity, "Zero-Knowledge" is not a marketing term—it is a mathematically verifiable architectural guarantee. In Vertueal Password Manager, it means that the server has zero technical capability to decrypt, inspect, or leak your secrets.

Even if Vertueal's primary databases were subpoenaed, seized, or compromised by an advanced persistent threat (APT), attackers would obtain only meaningless ciphertext strings.


The Cryptographic Workflow

Loading diagram...

1. Key Derivation: PBKDF2 (SHA-256)

When you type your master password into the browser, it is transformed into a cryptographic key using Password-Based Key Derivation Function 2 (PBKDF2):

  • Salt: A 16+ byte cryptographically random string generated when you initialize your vault.
  • Hash Function: SHA-256.
  • Iteration Count: 100,000 rounds.
  • Resulting Key: A 256-bit Master Encryption Key (MEK) used for AES-GCM.

Why 100,000 Iterations Matter:

Computing 100,000 rounds takes approximately 100ms on modern hardware—virtually unnoticeable for a legitimate user unlocking their vault once per session. However, for an attacker attempting to brute-force billions of candidate passwords on specialized GPUs, the 100,000-round computational tax makes dictionary attacks economically and mathematically impossible.


2. Independent Server Authentication (auth_hash)

A common vulnerability in poorly designed password managers is sending a hash of the decryption key to the server for authentication. If the server is breached, an attacker might reconstruct the decryption key.

Vertueal eliminates this vulnerability through Salt Domain Separation:

  1. To authenticate you, your local browser worker derives a second, independent key using salt + "_AUTH".
  2. The worker signs a static challenge string using HMAC-SHA256.
  3. The resulting hash (auth_hash) is sent to the server.
  4. The server compares this hash against the database to confirm you know the password, without ever receiving the MEK or any key material capable of decrypting your data.

Info

Even if an adversary acquires our entire MongoDB database and all stored auth_hash values, they cannot reverse the hash to obtain the MEK or decrypt data_blob.


3. Isolated Web Worker Execution

Traditional web applications process data directly in the browser's main window thread. This introduces grave risks:

  • Malicious third-party browser extensions could inspect the window DOM or JavaScript variables.
  • Main-thread cryptographic computation causes visible browser UI freezing and stuttering.

Vertueal isolates all cryptographic operations in a dedicated Web Worker (crypto-worker.js):

  • The MEK resides in private worker memory and is never serialized across the window object.
  • Plaintext credentials and master passwords never enter global React state or localStorage.

4. RAM Scrubbing & Inactivity Auto-Lock

Leaving a decrypted vault open on an unattended workstation poses a physical security hazard. Vertueal implements active memory cleansing:

  • An inactivity timer monitors user keystrokes, clicks, and mouse movement.
  • When the timer reaches the threshold (default: 5 minutes), the application issues a CLEAR_KEY directive to the Web Worker.
  • The worker explicitly nullifies internal key pointers (MEK = null) and clears memory buffers with zeroed arrays.
  • Plaintext data in React memory is immediately garbage collected, locking the interface until the master password is typed again.

On this page