デフォルトでは、AccountManager
はどの暗号化方式でも保護されません。パスワードはプレーンテキストで保存されます。
一般に、機密データをAndroid搭載端末にローカルに保存することは、常に危険にさらされる可能性があります。ただし、ハッカーがアプリケーションの機密データを抽出するのをより困難にすることで、リスクを軽減できるオプションがいくつかあります。データを暗号化したら、一般的な問題は、暗号鍵を目立たないように隠す方法が必要なことです。 AndroidのKeystore
システムがそれを手助けすることができます。
Androidキーストアシステムでは、秘密鍵をコンテナ に保存して、デバイスから抽出するのをより困難にすることができます。キーが のキーストアに格納されると、 秘密鍵の素材をエクスポート不可能なままにして、暗号操作に使用できます。
OphioのSecure-Preferencesライブラリをチェックすることをおすすめします。ライブラリでは、データを暗号化してSharedPreferences
に保存し、暗号化キーを暗号化するためのKeyStoreKeyGenerator
に抽象化しています。ローカルユーザーのパスワードを保存すると、次のようになります。
private static void stashPassword(Application application, String password) {
String secretKey = null;
try {
secretKey = KeyStoreKeyGenerator.get(application, "KeyFilename")
.loadOrGenerateKeys();
} catch (Exception exception) {
// handle error
}
SharedPreferences preferences = new ObscuredPreferencesBuilder()
.setApplication(application)
.obfuscateValue(true)
.obfuscateKey(true)
.setSharePrefFileName(PREFERENCES_NAME)
.setSecret(secretKey)
.createSharedPrefs();
preferences.edit().putString(KEY_PASSWORD, password).apply();
}
あなたはSharedPreferences
に保存した情報を保護の詳細についてはthis articleを見てみましょう。
ストアパスワードを暗号化したローカルデータベースにユーザー名とパスワードを格納する最善の方法。 –