How on-device encryption actually works in Passfold
“Encrypted on your phone” should mean something you can picture. Here is the stack Passfold uses, in plain language, without turning this into a threat-model dump of secrets.
The rule: we never hold your wallet
Passfold does not create a cloud account for the app. Cards, boarding passes, documents, notes, and vault credentials are stored locally. There is no Passfold server sitting in the middle of that data. Website checkout (Paddle) is only for buying the APK — it is not a sync backend.
That is why encryption at rest on the device matters. If the files on disk are readable plaintext, “no cloud” is only half a story.
SQLCipher for the wallet database
The wallet itself is a Room database protected with SQLCipher. The database file on disk is encrypted. Opening it requires a passphrase the app can only reconstruct on that device, not a password you type every time you glance at a loyalty card.
That passphrase is not shipped in the APK and is not sent to us. It is wrapped using the Android Keystore — hardware-backed key storage on modern phones — with AES-GCM. If someone copies the app’s files off the device without the Keystore key, they get ciphertext.
AES-GCM for files and the vault
Attachments (PDFs, images, documents) are encrypted with AES-GCM before they sit on disk. The vault — logins, recovery codes, optional 2FA secrets — uses its own PIN-derived wrapping. A vault PIN is not cosmetic: it encrypts vault payloads at rest, so unlocking the outer app is not the same as opening the vault.
GCM gives confidentiality and integrity. Tampering with a file should fail closed, not silently produce garbage that looks like a pass.
Backups you export, with a password you choose
Passfold will not recover a lost wallet. That is uncomfortable copy and it is also honest. When you export a backup, you set a password. The backup key is derived with PBKDF2 and the file is encrypted with AES-GCM. You keep the file. You keep the password. Passfold never receives that file.
Android’s automatic backup of app data is disabled. Your Google account is not a hidden replica of the wallet.
What encryption does not promise
Encryption at rest does not stop an unlocked phone in someone else’s hands, a compromised OS, or a password written on a sticky note. App lock and a vault PIN reduce casual access. They do not replace a screen lock, a current Android version, or a hardened OS if that is your threat model.
We also will not claim “military grade” or “unbreakable.” Those phrases are marketing. The useful claim is narrower: no Passfold cloud copy, and keys held on the device.
Why this pairs with privacy-first Android
A local encrypted wallet is the application-layer match for people who already chose not to live in a synced identity. It works on stock Android. It is a particularly clean fit next to GrapheneOS, where the OS already assumes less trust in Google services and network defaults.
If you are comparing architectures, start with cloud vs local wallets, then the privacy policy.