ユーザーがメモ(evernote、keepなど)を保存できるようにするAndroidアプリを開発していますが、これらのメモの一部を許可されていない人が閲覧できないように「保護」(暗号化など)する機能を備えていますユーザー。
まず第一に、私は暗号化について何も知らないので、修正、提案、強化など..大歓迎です。
これは私が望むシナリオです:
ユーザーがアプリを開き、自分のパスワードでログインすると、それらのメモを表示できます。
パスワード チェックについて読んだ限りでは、強力な一方向暗号化を使用したハッシュ + ソルトが最適なオプションです。ただし、詳細を読むと、より良いオプションと思われる BCrypt アルゴリズムが見つかりました。また、非常に使いやすいように見えるJava用のjBCrypt APIも見つかりました(ちなみに、Androidの統合を確認しました...)
それらのどれをお勧めしますか?
ハッシュ + ソルトを使用する場合、(ランダムな) ソルトはどこに保存すればよいですか? 次回ユーザーがログインするときにユーザー入力パスワードに追加する必要があるため(次にハッシュして)、DBに保存されているハッシュを確認します。
これは問題の 1 つであり、もう 1 つはデータの暗号化自体に伴います。
私の考えは、暗号化にユーザーパスワードを使用することでしたが、そのパスワードは短いため、ブルートフォース攻撃を防ぐために別のソルトが必要です...
これについて何か考えはありますか?秘密鍵 (ユーザーパスワード + ¿salt?) に基づいて一部のデータ (文字列) を暗号化する強力なアルゴリズムを知っていますか? データの復号化を回復するには、2 方向のアルゴリズムである必要があります。
そして最後の質問: パスワードをメモリに保存しても安全ですか (ユーザーがログインしてデータを復号化している間)? キーストアなど、多くのことを読みましたが、ここで最も安全なオプションについての手がかりはありません。
前もって感謝します