web-dev-qa-db-ja.com

「実際の塩」は「初期化ベクトル」と同じですか?

実際の塩と偽の塩 についての質問では、答えは、実際の塩が「暗号化アルゴリズムを混乱させる」方法を説明しています。初期化ベクトルがどのように機能するかを大まかに知っています。これは同じ概念ですか、それともまったく違うものですか?

38
Bryan Agee

salt初期化ベクトルは、以下ではほとんど同じです意味:これらは公開データであり、インスタンスごとに新しく生成する必要があります(各ハッシュされたパスワード、各暗号化されたメッセージ)。ソルトとは、弱点を開かずに同じパスワードを数回使用できることです。または、必要に応じて、同じパスワードが複数のインスタンスで使用された可能性がある場合に、攻撃者がパスワード攻撃コストを共有するのを防ぎます-これがすべてです 事前計算された(Rainbow)テーブル についてです。たとえば、CBCを使用した対称暗号化におけるIVのポイントは、複数の異なるメッセージを暗号化するために同じキーを使用することを許容することです。

「初期化ベクトル」という名前は、特定の内部状態に対する反復的なプロセスを示します。IVは、状態が初期化された状態です。たとえば、 MD5 ハッシュ関数は、圧縮関数の反復アクションとして定義され、現在の状態(128ビット)および次のメッセージブロック(512ビット)、および次の状態値を出力します。最初に、状態は「IV」と呼ばれる従来の値に初期化されます。その意味で、パスワード処理で使用されるほとんどの「塩」は「初期化ベクトル」ではありません。しかし、これは表現を少し過剰に解釈したものです。

それでも、物事に名前を付けることは主に伝統の問題です。 「塩」は一種のIVです。

  • パスワードの処理に関与しています。
  • 処理インスタンスごとに異なる必要があります(従来の固定値にすることはできません)。
  • 一意性のみが必要(「繰り返されない」)、可能な塩の空間からの均一な選択ではない(ただし、均一なランダム選択が適切で安価な方法です)塩が十分に長いと仮定すると、圧倒的な確率で一意性を得ることができます)。

詳細(salt/IVが正確に挿入される方法とアルゴリズムのどの時点で)は、ニシンです。

46
Thomas Pornin

上記の答えは、「塩」がパスワードのコンテキストで説明されている場合に正解です。ただし、「塩」という用語は、ランダムだが非秘密の値の他の用途にも使用されます。

ランダム性抽出に関連する塩の非常に厳密な処理については、 暗号化抽出と鍵導出:HKDFスキーム を参照してください。一般的なランダム抽出を取得するためにソルトの使用が必須である理由についてはいくつかの理論がありますが、これはパスワードの場合にはそれほど重要ではありません。

3
Nakedible