I want to develop an Android app that may contain sensitive personally identifying information (national ID number, phone number, etc.) among other data that will be stored in an Android phone.
Let's say that this data will be kept on the phone, which is offline most of the time, and has a very small and not so frequent time-window to send the data to a remote server.
I want to secure (encrypt?) this data so that in a situation where the phone is stolen, someone with tech knowledge cannot root the phone, access the app storage and access the information.
The data doesn't need to be decrypted on the phone, so it can be sent encrypted to the server, but the server needs to be able to decrypt it there.
What are the options here? Are certificates or public/private keys suitable for this, or they are too faulty?
What are the advantages and disadvantages of each solution?