33

現在、WebサービスへのoAuth 1および2アクセスのフレームワークを開発していますが、私の質問は、oAuthアクセスキーなどの機密データを安全な方法で保存するにはどうすればよいですか?このキーの問題は、Twitterのような一部のプラットフォームが永続的なキーを使用し、誰かがこのキーにアクセスできる場合、ユーザーのTwitterアカウントでやりたいことが何でもできることです。

それで、共有設定に保存される前にデータを自動的に暗号化することは可能ですか?または、非常に重要なデータを保存するためのより良い方法/場所はありますか?

更新-また読む:Androidアプリケーションにユーザー設定を保存するための最も適切な方法は何ですか

4

10 に答える 10

50

また、これを正確に行うために作成したこのクラスを確認することもできます:https ://github.com/sveinungkb/encrypted-userprefs

他の提案で使用されている非推奨で弱いDESの代わりにAESを使用します。

于 2012-06-04T16:24:27.690 に答える
32

1)。暗号化する方法は?

Androidでは、暗号化はJava Cryptography Architecture(JCA)を介して行われます。主にjavax.crypto.*パッケージです。

JCAリファレンスガイド

これは、 JCA APIの使用です(特にAES alrorithm)。

2)。どこに保管しますか?

暗号化APIは、(文字列ではなく)バイト配列で操作します。これは、を使用できることを意味しますがSharedPreferences、暗号化されたバイト配列にBase-64エンコーディングを適用してから適用する必要がありますSharedPreferences(そうしないと、XMLパーサーは共有設定ファイルの読み取りに失敗します)。次に読むには、Base-64デコードを使用する必要があります。デフォルトでは、ほとんどのAndroidOSバージョンにはBase-64APIが組み込まれていないことに注意してください(UPDATEセクションを参照)。したがって、このBase-64オーバーヘッドを削除するには、バイトをプライベートファイルに保存することをお勧めします。

更新: APIレベル8以降、APIにはandroid.util.Base64

于 2011-02-05T23:06:40.207 に答える
3

ほぼ毎回、Androidの暗号化にFacebook Concealを使用することをお勧めします。これは高速なAndroidライブラリであり、非常に正しい決定を下し、実際に作業を行うためのいくつかのシンプルなインターフェイスを提供します。

ボーナス!最近、Xamarinからどのように使用できるかというパズルを組み立てました。詳細については、 concealを使用してC#アプリのデータを保護する方法に関する私の記事を参照してください。

于 2015-05-16T18:59:46.340 に答える
3

Slinkをご覧ください。ほとんどのSharedPreferences暗号化ツールは、実行するアクションごとに暗号化を使用することに気付きました。つまり、各キーと値のペアは、キーと値の両方が別々に暗号化された後にのみ保存されます。これにより、パフォーマンスのオーバーヘッドが大きくなります。

そこで、より効率的な暗号化プロセスを提供するライブラリを検索し、Slinkを見つけました。Slinkは、FacbookのConcealライブラリを使用して、オブジェクトのマップ全体を全体として保存し、最も効率的で高速なSharedPreferences暗号化ソリューションにします。また、一般的なAndroidのSharedPreferencesインターフェースを使用しているため、非常に簡単でほぼシームレスに使用できます。免責事項:私はこのライブラリを開発している開発チームの一員です。

于 2016-11-07T14:05:31.433 に答える
2

重複を参照してください:SharedPreferencesファイルを難読化/暗号化できますか?

こんにちは、私はAES暗号化を使用してSharedPreferences実装を作成しました。プロジェクトはMavenモジュールです。必要な場合は、ご覧ください。https://github.com/kovmarci86/android-secure-preferences

于 2013-02-02T13:24:26.043 に答える
1

https://github.com/BottleRocketStudios/Android-VaultVaultコンポーネントを使用してみてください。Androidのキーストア(サポートされているデバイス上)または難読化手法を使用してSharedPreferenceファイルの値を暗号化し、SharedPreferenceインターフェイスを実装するため、主にドロップインの代替品です。

于 2016-04-22T15:21:09.777 に答える
1

Facebookによって導入された新しい暗号化-暗号化を隠す..使いやすい

https://github.com/afiqiqmal/ConcealSharedPreference-Android

于 2017-04-07T01:48:02.223 に答える
0

codeprojectに関するこの記事には、共有設定の優れたラッパーが含まれています。ただし、クラス名SecurePreferencesは誤解を招くようなものObfuscatedPreferencesであり、より適切です。

于 2013-05-29T14:32:57.080 に答える
0

FacebookConcealを使用してデータを暗号化するAndroidライブラリがあります。

https://github.com/rtoshiro/SecureSharedPreferences

Maven Central:

compile 'com.github.rtoshiro.securesharedpreferences:securesharedpreferences:1.0.+'

于 2015-06-12T13:48:23.957 に答える
0

環境設定でデータを暗号化し、Androidキーストアシステムに暗号化キーを保持できます。このようにして、暗号化キーも安全になります。

これを行うライブラリを調べることができます https://github.com/ophio/secure-preferences

于 2015-06-29T14:12:50.513 に答える