1

AES/CBC/PKCS5Padding メソッドを使用してデバイス上のユーザーのデータを暗号化するアプリを構築していますが、セキュリティは非常に重要です。誰かがデータベースを手に入れた場合に備えて、総当たり攻撃を防ぎたいです。

テーブルの各行には、タイトルが関連付けられています。シードとして何を使用すればよいかわかりません。次のいずれかを実行できます。

  1. ソースに自分のシードをハードコーディングしますが、誰かが私のアプリを逆コンパイルすると、これを読み取ることができると思います

  2. ユーザーが入力したタイトルをシードとして使用

  3. 自分のシードと入力したタイトルを連結して使用する

他の方法がない限り、上記のすべてのシナリオで、誰かが種を見つけている様子を視覚化できます。これは、暗号化されたデータをブルート フォースできるようにするのに役立ちますか? もちろん、上記のすべてのシナリオで、キーの一部としてユーザーのパスワードも含めます。

潜在的なハッカーにとってより困難にするにはどうすればよいですか?

編集(再編集)

以下の返信と私の調査と思考プロセスに基づいています。以下ができると思います。

  1. ユーザーにパスワードを入力させますが、データベースには保存しません
  2. 機密データを保存する前に、それを識別するためにラベルを入力する必要があります。これをクリア テキストとしてデータベースに保存し、salt として使用します。
  3. ユーザーのパスワードと PBKDF2 のラベルを使用してキーを生成しますが、保存はしません
  4. #3 で生成されたキーを使用して機密データを暗号化します
  5. 復号化するには、ユーザーのパスワードと行ラベルに基づいてキーを再度生成し、それを使用して機密データを復号化します

これは正しいと思いますか?ハッカーが 2 つの列 (ラベルのクリア テキストと暗号化されたデータ) を含むデータベースを入手した場合、何かを推測できますか?

編集 2

具体的にAndroidアプリを構築することを計画しています.次のリンクは私が必要としていたものでした.

https://nelenkov.blogspot.in/2012/04/using-password-based-encryption-on.html?m=1

https://android-developers.googleblog.com/2013/02/using-cryptography-to-store-credentials.html?m=1

4

2 に答える 2