-1

ユーザーがメモ(evernote、keepなど)を保存できるようにするAndroidアプリを開発していますが、これらのメモの一部を許可されていない人が閲覧できないように「保護」(暗号化など)する機能を備えていますユーザー。

まず第一に、私は暗号化について何も知らないので、修正、提案、強化など..大歓迎です。

これは私が望むシナリオです:

ユーザーがアプリを開き、自分のパスワードでログインすると、それらのメモを表示できます。

パスワード チェックについて読んだ限りでは、強力な一方向暗号化を使用したハッシュ + ソルトが最適なオプションです。ただし、詳細を読むと、より良いオプションと思われる BCrypt アルゴリズムが見つかりました。また、非常に使いやすいように見えるJava用のjBCrypt APIも見つかりました(ちなみに、Androidの統合を確認しました...)

それらのどれをお勧めしますか?

ハッシュ + ソルトを使用する場合、(ランダムな) ソルトはどこに保存すればよいですか? 次回ユーザーがログインするときにユーザー入力パスワードに追加する必要があるため(次にハッシュして)、DBに保存されているハッシュを確認します。

これは問題の 1 つであり、もう 1 つはデータの暗号化自体に伴います。

私の考えは、暗号化にユーザーパスワードを使用することでしたが、そのパスワードは短いため、ブルートフォース攻撃を防ぐために別のソルトが必要です...

これについて何か考えはありますか?秘密鍵 (ユーザーパスワード + ¿salt?) に基づいて一部のデータ (文字列) を暗号化する強力なアルゴリズムを知っていますか? データの復号化を回復するには、2 方向のアルゴリズムである必要があります。

そして最後の質問: パスワードをメモリに保存しても安全ですか (ユーザーがログインしてデータを復号化している間)? キーストアなど、多くのことを読みましたが、ここで最も安全なオプションについての手がかりはありません。

前もって感謝します

4

1 に答える 1

2

最善の解決策は、そのような低いレベルで作業しないことです。暗号化は難しいので、暗号化の専門家になることを計画していない限り、これらすべての詳細に苦労することなく、「正しいことを行う」既存のオープンソース ライブラリを使用してください。データベース用の AndroidSQLCipherと BLOB/ファイル用の IOCipher は、そのような 2 つの例です。

于 2013-09-06T12:25:18.627 に答える