Security & Encryption
How your vault is encrypted, what your master password actually protects, and what a stolen device or a compromised server can and can't see.
The short version
Every piece of sensitive data in your vault — passwords, card numbers, notes, two-factor secrets, passkey metadata — is encrypted on your device, with a key that is itself derived from your master password on your device. MyPwdTool never transmits your master password anywhere, never transmits your encryption keys anywhere, and stores nothing in a form that could be read without them.
If you forget your master password, nobody can recover your vault for you — not the developer, not a support team, nobody. That is a deliberate consequence of the design, not an oversight. See Local Vaults & Backups for how to protect yourself against that.
Your master password never leaves your device
Your master password is used once, locally, to derive a key — it is never stored, never sent over the network in any form, and never appears in a backup file.
Key derivation
- When you create a vault, MyPwdTool generates a random cryptographic salt.
- Your master password and that salt are run through PBKDF2-HMAC-SHA256 with 400,000 iterations — a deliberately slow, computationally expensive function. This is what makes guessing your master password by brute force impractical even if someone obtained your vault file: each guess costs real computation time, not a simple hash comparison.
- The result is a Key-Encryption Key (KEK) — used only to protect the vault’s real encryption key, never to encrypt your data directly.
- A separate, randomly generated Data Encryption Key (DEK) is created once, when the vault is first set up, and is what actually encrypts your entries. The KEK’s only job is to “wrap” (encrypt) this DEK so it can be stored safely alongside your vault. This separation means changing your master password is fast — it only re-wraps the DEK, it never has to re-encrypt every entry in your vault.
How each entry is encrypted
Every sensitive field — not just the password, but the username, note, card number, TOTP secret, and so on — is encrypted independently, using AES-256-GCM, an authenticated encryption algorithm that both hides the content and detects any tampering.
Each field’s encryption is additionally bound to which vault, which entry, and which field it is (a technique called “associated data”). In practice this means a piece of ciphertext from one field can never be silently copied into a different field, a different entry, or a different vault and be accepted as valid — any such attempt fails to decrypt. This closes a whole class of substitution attacks that simpler encryption schemes are vulnerable to.
Where your vault lives
Your vault is a single encrypted SQLite file, stored locally on your device — never in iCloud, never in a Microsoft account, never on any MyPwdTool server (there isn’t one that stores vault data at all). Multiple vaults are supported on macOS and iOS (e.g. a personal vault and a separate work vault), each with its own independent master password and encryption keys — see Local Vaults & Backups.
Unlocking with Face ID / Touch ID
On macOS and iOS, you can unlock with Face ID or Touch ID between master-password prompts, for convenience. This never replaces your master password as the actual source of the encryption key — biometric unlock retrieves a copy of your DEK that was itself sealed behind the device’s Secure Enclave at the moment you last typed your master password, and it always expires on a schedule you control in Settings; once it expires, you must type your master password again.
What a compromised sync relay would see, at worst
If you turn on sync, your vault’s changes travel through a relay server between your devices. That server is deliberately designed to be unable to read them — see Synchronization for the full explanation of how that’s enforced, and its source code is public for independent review.
Password Health, breach checks, and TOTP codes
These run entirely on your device. Checking whether a password appears in a known breach uses the Have I Been Pwned API with k-anonymity: only the first 5 characters of your password’s SHA-1 hash are ever sent, never the password itself and never the full hash — see Password Health & Breach Check for detail. Two-factor (TOTP) codes are generated locally from a secret stored only in your encrypted vault; MyPwdTool does not operate any authentication or OTP service.