4

.NET で Rijndael/AES 暗号化プロバイダーを使用して暗号化機能を実装しました。アルゴリズムの私の「理解」は、キーと IV が危険にさらされない限り、データは安全であることを示唆しています。ただし、パスワードのソルティングがベストプラクティスであるサイトをいくつか読んだことがあります。私にとっての混乱は、ハッシュ関数ベースの暗号化でのみソルティングが必要であると思われるところにあります。 Rijndael または AES を使用する場合のベスト プラクティスは何ですか? また、どの値をソルトする必要がありますか (クリア テキスト、キー、IV)?

4

5 に答える 5

5

同じキーと同じ IV を使用して異なるデータセットを暗号化すると、同じクリア テキストは常に同じ暗号化テキストになります。複数のユーザーが同じパスワードを持っている場合、それらのユーザーも同じ暗号化されたパスワードを持ち、暗号化されたデータからパスワードが同じであることは明らかです。

すべての暗号化の前に平文にソルトを追加すると、(通常) ケースごとに異なるソルトが使用されるため、同じパスワードでも異なる暗号化文字列になります。

したがって、すべてのパスワード暗号化に同じキーと IV を使用する場合、シナリオはハッシュ関数を使用する場合と同じであり、salt を使用すると同じ利点があります。暗号化ごとに異なるキーまたは IV を使用すると、同じパスワードでも異なる暗号化テキストが生成され、これらの問題は発生しません。この場合、塩漬けは何も改善しません。

于 2011-01-04T17:29:02.187 に答える
4

IV塩です。ネットワークを介して暗号文を送信するとき、または暗号文をディスクに保存するときに、暗号文の前にIVを追加することは完全に安全です。IVが、メッセージごとに暗号的に強力な疑似乱数ジェネレーターによって生成されることを確認してください。

強力な暗号化では、唯一の秘密はです。IVは秘密ではなく、暗号文でもありません。

ただし、複数の暗号化に同じキー同じIVを使用している場合(「セッションIV」)、キーを保護するのと同じようにIVを保護する必要があります。

于 2011-01-04T17:00:00.323 に答える
3

塩はハッシュに対してのみ意味があります。事前に計算された辞書を防ぎます。

暗号化にsaltを使用することに価値はありません。

于 2011-01-04T16:59:07.053 に答える
2

キーがパスワードから導出される場合、キー導出アルゴリズムにはソルトを含める必要があります。主流のアルゴリズム(PBKDF2など)はそうします。

暗号化部分の場合、確立された動作モードにはすべて、ある意味でそれ自体がソルトに似ているIVが含まれます。暗号化する前にデータをさらにランダム化する必要はありません。

于 2011-01-04T23:59:29.487 に答える
1

IV は一般に公開されても安全であり、通常は暗号化操作ごとに新しい IV を生成する必要があります。毎回同じものを使用すると、同じ暗号化された値に対して同じ暗号文を生成することになります。これは、WEP 暗号化がクラックされた方法の一部です。(http://en.wikipedia.org/wiki/Initialization_vector)

暗号化しようとしている値をハッシュしても、あまり役に立ちません。IV は既にランダム化係数を暗号文に導入しており、復号化された値からソルトを解析する必要はありません。

SLaks が述べたように、ソルティングはハッシュにのみ役立ちます。これをさらに進めるために、別のハッシュと比較しようとしているハッシュに対して、両方の時間でハッシュ関数に入れられた値が同じ値であるかどうかを確認すると便利です。ソルトは、人々がいくつかの入力のハッシュ値を通過して事前に計算した辞書攻撃 (別名レインボー テーブル) を防ぎます。ソルトは、ソルト値ごとに計算テーブルを生成する必要があることを意味します。

ソルト値でできることは他にもありますが、これは一例です。

于 2011-01-04T17:10:24.223 に答える