web-dev-qa-db-ja.com

PBKDF2のソルトは、ユーザーが入力したパスワードのハッシュにすることができますか?

データキーを復号化するマスターキーとして使用されるクライアントアプリケーションのパスワードからキーを取得したいのですが。私が理解する限り、塩は私的な知識でなければなりません。パスワードからのハッシュ(SHA-1など)をPBKDF2のソルトパラメーターとして使用するだけで十分でしょうか?

繰り返しますが、私が理解している限り、攻撃者がこのアルゴリズムの知識を獲得する場合、ソルトは無価値であるはずです。しかし、生成されたが保存されているソルトを攻撃者が取得する方が簡単ではないでしょうか?キーは一度しか使用されないため、どこかに保管する必要があります。

6

ソルトは秘密ではありません。ハッシュ/ PBKDF2の結果を使用するインスタンスごとに一意にするためのものです。知る限りでは、saltの定義そのものがランダムであることを必要とします計算されたハッシュごとに。パスワードから派生したものである場合、同じパスワードを持つ2人のユーザーが同じベリファイア->不正になる可能性があります。

14
Jacco

ソルトがパスワードから導出される場合、完全なパスワードから格納されたハッシュ関数は確定的です。同じパスワードを使用する2人のユーザーは、同じハッシュになります。 @Jaccoはそれを言っていますが、その意味は言わずに残しました。パスワードから派生したソルトを使用する場合、もうソルトはなく、派手な無塩ハッシュ関数です。また、ソルトが提供する保護が失われます。つまり、攻撃者が事前計算されたテーブル(Rainbowテーブル)を使用したり、ハッシュされたパスワード(またはパスワードから派生したキーを持つ暗号化されたblob)のデータベース全体に対して並列攻撃を使用したりできなくなります。

6
Thomas Pornin

あなたは塩を保存すると言います。つまり、攻撃者がデータベースにアクセスした場合、攻撃者は何にアクセスしたいですか?パスワード/パスワードの単純なハッシュ、またはランダムに役に立たない生成されたソルト?

攻撃者が生成されたソルトにアクセスするのは簡単ではありません(ハッシュされたパスワードを保存した場所に保存した場合)。難易度は同じです。

しかし、パスワード/パスワードのハッシュを使用すると、攻撃者はマスターキーにアクセスし、このユーザーの他のアカウントで使用できる(Rainbowテーブル/ブルートフォースを使用して)元のパスワードを見つけることができます。

塩を保存する場合は、ランダムに生成します。

1
Cyril N.