Androidの電話に保存される他のデータの中でも、個人を特定できる機密情報(国民ID番号、電話番号など)を含むAndroidアプリを開発したいと考えています。
このデータは、ほとんどの場合オフラインであり、リモートサーバーにデータを送信するために非常に小さく、それほど頻繁ではない時間枠を持つ電話で保持されるとしましょう。
このデータを保護(暗号化?)して、電話が盗まれた状況で、技術知識のある人が電話をルート化したり、アプリのストレージにアクセスしたり、情報にアクセスしたりできないようにします。
データは電話で復号化する必要がないため、暗号化してサーバーに送信できますが、サーバーはそこで復号化できる必要があります。
ここでのオプションは何ですか?証明書または公開/秘密鍵はこれに適していますか、それとも欠陥がありますか?
各ソリューションの長所と短所は何ですか?
公開鍵/秘密鍵は論理的な方法のように見えますが、最初からコーディングしたくない場合があります。
TextSecureがそれを行う方法を見てください。 https://github.com/WhisperSystems/TextSecure/
アプリが実行するすべてのことを実行します(データの暗号化/ Webサービスへの送信)。
ライセンス(GPLv3)はユースケースによっては制限される場合がありますが、暗号化ライブラリ/コードをコードベースから直接使用する必要があります。