There is a password manager app for Android that I'm considering using, that reads a database format for a popular desktop password manager. There is one part of this app that is giving me pause; I've approached the author about the issue but the author does not seem very concerned about it. I want to make sure I'm not just being paranoid.
To use this app, you give it the master password for your password database. The app creates a two-part key by combining a 4-digit PIN with a random 256-bit key stored in Google's cloud-based application data. This key is then used to encrypt the master password locally. When you use the app, you enter the PIN, the app retrieves the cloud-based key, and uses both to decrypt the master password and unlock the database. There are no other options for unlocking the database. The cloud-based key is never stored on the device, it is only ever used in memory. The encrypted master password is only stored on the device, it is never uploaded to the cloud.
I'm willing to give the author benefit of the doubt here and assume the key is generated securely, and for the sake of argument I will give Google the benefit of the doubt and assume that this one app is really the only party they'll ever give the data to. Yes, I know this may not be a realistic assumption, but an Evil Google is not high on my list of concerns. If these assumptions hold, then as long as my phone is secure, then only the app on my phone can get at the cloud key directly, and therefore only the app on my phone can decrypt my master password.
However, I thought up this scenario:
- Attacker steals phone.
- Oooh, look! A password database! Drat...it's locked!
- Attacker roots phone.
- Attacker launches the password manager app.
- Attacker enters a single PIN at random.
- App downloads cloud-based key.
- Attacker uses root privileges gained above, to dump process memory for the app.
- Attacker reads cloud-based key from memory dump.
- Attacker brute-forces PIN/cloud-key combinations offline.
- Password database is unlocked in milliseconds or less.
Am I right to worry about this attack, or is it implausible/preventable somehow? Right now it's the only thing keeping me from trying the app. I'm not an especially high-value target or anything.
A follow-up question: I'm trying to convince the author to add an option NOT to store the master password, and rather to just ask for it every time I open the app. Assuming the password is secure (I use a phrase of 7 words chosen at random, with dice, from an unabridged hard-copy dictionary), and assuming the password is never stored anywhere, would this likely keep my passwords secure from an attacker who obtains my phone?
I know that root access on a phone can attack any running and unlocked password manager, but in that case, I simply need to (a) not root my phone myself, (b) be careful not to install malware, and (c) carefully lock my database after use. However for this app, there does not seem to be anything I could do to prevent the attack unless I immediately notice my phone is missing, and immediately delete the cloud-based key.