Skip to content
PersonalPremiumFamilyTeamBusinessEnterprise

How encryption works

The PulsVault client-side key hierarchy — PDS → KEK → UMK → DEK — and how field-level encryption keeps your secrets readable only on your devices.

PulsVault uses a layered key hierarchy so that a single password can protect many vaults, sharing can happen without exposing plaintext, and changing your password never re-encrypts your data. Every step runs on your device.

The key hierarchy#

text
Password + Email
      │  PBKDF2 (600k)
      ▼
     PDS  (Password-Derived Secret)         in memory only, for the first unlock after sign-in
      │
      │  + Access Key            PBKDF2/HKDF (600k)
      ▼
     KEK  (Key Encryption Key)               computed on demand, never stored
      │
      │  AES-256-GCM decrypt(encryptedMasterKey, KEK)
      ▼
     UMK  (User Master Key)                  in memory while unlocked
      │
      │  AES-256-GCM decrypt(encryptedDek, UMK)
      ▼
     DEK  (Data Encryption Key, per vault)   in memory while the vault is open
      │
      │  AES-256-GCM / ChaCha20-Poly1305 (per field)
      ▼
   Encrypted item fields

Each layer, briefly#

  • PDS — derived from your password and email. Proves you know the password without sending it.
  • KEK — derived from the PDS and your Access Key. Both are required, which is why the Access Key matters and why it's unrecoverable by design.
  • UMK — a random 256-bit key, stored only in its encrypted form (encryptedMasterKey). The KEK unwraps it at unlock.
  • DEK — a random 256-bit key per vault, stored only as encryptedDek. The UMK unwraps it when you open the vault.
  • Item fields — sensitive fields are encrypted individually with the DEK, each with a unique 12-byte IV.

Why this design#

Property How the hierarchy delivers it
Server can't read your secrets It only ever stores encryptedMasterKey, encryptedDek, and ciphertext for every secret field (item names and non-secret fields are stored readable — what is and isn't encrypted)
Password change is cheap It only re-wraps the UMK — items are never re-encrypted
Sharing without plaintext A vault's DEK is re-wrapped for the recipient's keys
Per-vault isolation Each vault has its own DEK; revoking one doesn't expose others
Invariants that never change

The raw UMK, DEK, and PDS never reach the server. The primary vault is always AES-256-GCM and never shareable. Each AES-GCM encryption uses a unique IV. See the full list in Security invariants.

Was this page helpful?