Intentの付加情報で、秘密にしたい情報を隠すには †1. はじめに †タオソフト著のAndroid Securityによると、Intentの付加情報に格納されているキーの一覧を取得するのは容易で、また、キーから、キーに対する情報を取得するのも容易とのことです。本では、対策として、付加情報を暗号化するか、安全な場所に永続化してインテントでは渡さないようにするとあります。 2. 付加情報を暗号化する場合の欠点 †1. 暗号化を行う際に使う共通鍵はファイルとして保存しないのが望ましいので、端末ごとに固有な共通鍵を生成する必要があります。端末固有IDとしてIMSIやIMEIがありますが、これらを取得するにはREAD_PHONE_STATEパーミッションが必要で、この権限があると、端末の電話番号を取得でき、望ましくありません。また、パーミッションを要求しないANDROID_IDがありますが、意味のある値を返すのは Android 2.3以降で、Androidの幅広いバージョンをサポートしようとするとよくありません。 3. 画面遷移のたびに、秘密にしたい情報をプリファレンスに保存する †Intentの付加情報のうち、外部に漏らしたくない情報は、startActivityを呼ぶ前に、プリファレンスにモードMODE_PRIVATEで保存するといいです。遷移先のクラスでは、プリファレンスから読み込んで、データを取り出した直後に、SharedPrefereces.Editor#remove、SharedPrefereces.Editor#commitでデータを削除するといいです。プリファレンスを使う方法は、暗号化する方法に比べて、コードが複雑にならないし、処理時間がかかるということもありません。また、プリファレンスに保存したデータはMODE_PRIVATEなので、rootを取った端末でなければ、一時的保存されたデータが盗み見られることもありません。 |