Repository navigation
Security Model
SecureVault layers several protections so your secrets stay safe on the device.
Passwords and note contents are encrypted with AES-256-GCM using a key in the Android Keystore. The key is bound to user authentication (setUserAuthenticationRequired), so it can only be used after you verify with a strong biometric or your device screen lock. Unlocking the app is therefore a cryptographic gate, not just a UI screen. The key material never leaves the Keystore.
The entire Room database is encrypted with SQLCipher, keyed from a dedicated Keystore key. This protects metadata (account titles, usernames, URLs, tasks) from being read out of a raw database file. This database key is not auth-bound, so background features (such as scheduled task reminders after a reboot) can still run, while the sensitive password/note columns remain protected by the auth-bound key above.
- Unlock with a strong biometric (fingerprint/face) or the device screen lock (PIN/pattern/password).
- The app locks automatically after 30 seconds in the background; you can also lock it manually from Settings.
- There is no separate app PIN — the device authentication is what releases the vault key.
Backups are encrypted with a password you choose, using PBKDF2-HMAC-SHA256 (210,000 iterations) to derive a key and AES-256-GCM to encrypt the data. See Backup and Restore.
-
FLAG_SECUREblocks screenshots and screen recording. - Android's own backup is disabled (
allowBackup=false). - Release builds are signed and R8-optimized.
- No analytics, ads, or trackers. The only network call is the breach check.
- Your data is tied to the device's Keystore keys. Moving to a new phone or doing a factory reset requires Backup → Restore.
- A lost backup password cannot be recovered; the backup file cannot be opened without it.