Encryption and keys
Paw uses age to encrypt vault data.
Vault key
When Paw creates a vault, it generates an age X25519 identity. Paw uses the matching recipient to encrypt the vault index and item files.
The private identity is protected with age’s scrypt-based password encryption and stored as key.age. Unlocking the vault gives Paw access to the identity needed to decrypt its data.
The password protects the private identity; it is not a single shared password used directly to encrypt every item.
Encrypted and unencrypted data
The vault index (vault.age) and individual item files are encrypted. The vault name, icon, and color are stored separately in unencrypted metadata.json to support listing locked vaults.
Changing the master password
When you change the master password of a vault, Paw re-encrypts the existing age private identity (key.age) with the new password. It does not regenerate the vault’s underlying X25519 key. Because the key remains unchanged, Paw does not need to re-encrypt stored items and attachments.
Scope
Encryption protects stored data at rest from unauthorized access. It does not protect against a compromised operating system while Paw is running and unlocked. See Threat model.