How do I protect users if their device or pin has been compromised?
The best way is to avoid storing data on the device in the first place. This however means that the app won't be able to work offline, needs to re-download data each time and might have performance impact.
In the end it depends on the risk you want to accept and the user experience you want to give to your users. One possible solution is to require the user to setup a separate pin/password in the app which is used to derive an encryption key. Keep in mind however that in case of a physical compromise of the device, the data is vulnerable to offline brute force attacks. The security of this data depends thus on:
- A strong password policy
- A solid encryption scheme
Basically once the data is out there, it's only a matter of time.