7

AES 256 を使用してファイルを暗号化および復号化することを目的とした Android アプリケーションを作成しています。ユーザーが入力したパスワードから AES キーを取得するために、AES-CBC モードと PBKDF2 を使用しています。また、すべてのファイルの暗号化キーに対して安全な疑似ランダム ソルトを生成しています。暗号化されたファイルと一緒に IV とソルトを保存しているので、それらを再読み込みし、後でキーを再生成してファイルを復号化できます。

私の質問:暗号化されたファイルと一緒にソルトを保存すると、セキュリティとソルト自体の意味が壊れますか? ソルトと IV を知っている攻撃者は、暗号化されたファイルに対してオフラインでブルート フォース攻撃を行い、暗号化キーを見つけることはできませんか?

4

2 に答える 2

10

ソルトの主な目的は秘密にすることではありませんが、レインボーテーブル(つまり、既存の1つのテーブル、または使用する新しいテーブル)を使用するなど、攻撃者がパスワードをブルートフォースしようとするときにショートカットを使用できないようにすることです。複数の暗号化されたファイル)、または一度に複数の収集されたファイル(異なるソルトを持つ必要があります)をブルートフォースします。

パスワードに十分なエントロピーがあり、鍵導出関数の反復回数が十分に多い限り、暗号文とともにソルトを保存することは問題ありません。ソルトだけでは、誰もファイルを復号化できません。

また、ソルトを秘密にしておきたい場合(通常、ソルトではなく「ペッパー」と呼ばれます)、正当に復号化を行っている人に適切なソルトを取得するためのメカニズムを考える必要があります。

于 2012-06-09T16:19:52.137 に答える
2

ソルトは、パスワードのハッシュなどの一方向機能に使用されます。

ランダム IV は、後で復号化できるデータの暗号化などの双方向機能に使用されます。

どちらもランダムなバイトであり、関数によって適用された後に同じ情報が同じ結果を生成しないようにするために使用されます。したがって、2 人のユーザーが同じパスワードを選択してデータを保存し、同じ情報を保存すると、暗号化されたバイトは異なります。

暗号化されたファイルと一緒に保存できます。

また、PBKDF2 で複数の反復を使用しないと、かなり役に立ちません。ウィキペディアによると、iOS 3 は 2,000 回の繰り返しを使用し、iOS 4 は 10,000 回を使用します。

于 2012-06-09T14:02:33.707 に答える