モバイルには端末に情報を保存する仕組みが用意されています。しかし、そこにパスワードやユーザーIDのような重要情報を平文で端末に保存すると、下記のようなリスクがあります。
【リスク】
・バックアップ機能を用いた悪意ある操作者による重要情報の窃取
【対策】
1.重要情報を極力端末に保存しないようにする。
セキュリティ対策としてはこれが一番です。重要情報はなるべく保存しなくて済むように、アプリを設計しましょう。例えばパスワードを保存するのではなく、認証トークンなど一時的な代替手段があるかなど、設計時に熟慮しましょう。
2.設計上保存しなければならない場合、重要情報を暗号化して保存する。
・iOS
パスワードやユーザーIDはキーチェーンに保存しましょう。
キーチェーンに保存する場合、暗号化はOSにより行われます。
暗号化のアルゴリズムを気にする必要はありません。
・Android
SharedPreferencesのKeyとValueを暗号化する
EncryptedSharedPrefenrecesを使用しましょう。
MasterKeyの情報を使ってEncryptedSharedPrefenrecesの
KeyとValueを暗号化します。
MasterKeyはminSdkVersion23以上で使用可能です。
SharedPreferencesと同じ感覚でデータの保存、読み出しができるので、
minSdkVersionが23以上であれば
EncryptedSharedPrefenrecesの使用を推奨します。
アプリのminSdkVersionが22以下の場合はKeyStoreを使いましょう。
KeyStoreでRSAアルゴリズムの鍵ペアを作成し、
暗号化したデータをsharedPreferencesに保持させ、
読み出す際はPrivateKeyで復号します。
やや面倒ですが、秘匿性の高いデータ保存を実現するためには必要です。
アプリ内外に保持する情報のセキュリティは
セキュアプログラミングの肝ですね。
細心の注意を払って実装・テストをしてください。