I have implemented SQLCipher
in my Android application to make it's database secure. SQLCipher
needs a key to encrypt database file. The problem I am facing is key protection, if my application is used on a rooted device or is reverse engineered then my key will be exposed and database can be decrypted.
Please note that my application doesn't ask for password every time user opens it and thus user entered password can't be used as the key. I want to implement behavior like facebook, whatsapp applications, which encrypts data using private-key/key without asking any password and keeps the users logged in all the time. Where and how these applications store their key?
Please suggest a solution/algorithm that will protect the key.Also, does Android OS provides any such functionality for data protection/management?