2

PHP で bcrypt を使用して、パスワードのハッシュ化とソルト化を検討しています。brcypt の「仕事」/「ラウンド」の使用が攻撃を防ぐ理由を誰かが説明してくれますか?

「 PHP でパスワードのハッシュに bcrypt を使用する方法は?」 は既に読みましたが、誰かがデータベースを手に入れてオフラインでクラックできるとしたら、何が特別なのか理解に苦しむことになります。

データベースをレインボーテーブルから保護するために、ソルトとハッシュを一緒に使用することになる可能性はありますか? それとも、bcrypt はこのような攻撃を防ぐために何か特別なことをしますか?

4

2 に答える 2

4

簡単に言えばbcrypt、ファミリのような他のハッシュ アルゴリズムよりも「優れている」shaということです。これは、意図的に低速であり、反復回数を多くすることで意図的に低速にすることができるためです。さらに、事前に計算されたハッシュ値 (レインボー テーブル) の使用から保護するソルトの使用が必要です。ソルト値は、bcrypt の各出力とともに生成/保存して、異なるユーザーの値間の比較を禁止する必要があります (同じパスワードを使用する場合)。

攻撃者がパスワードのハッシュとソルトを取得したとしても、 をbcrypt何度も繰り返し使用している限り、一致するパスワードをすばやく見つけることはできません。これは一方向関数であるため、試行されるパスワードごとに 1 回 bcrypt 計算を実行する必要があります。もちろん、これは悪いパスワードに対する保護にはほとんどなりません。

于 2012-06-20T23:08:25.687 に答える
1

一言で言えば、bcrypt やその他のパスワード ストレッチング アルゴリズムはすべて、作業増幅に関するものです。攻撃者は、パスワードをクラックするために、必要以上に多くの作業を行う必要があります (通常、有効なログイン リクエストまたは間違ったパスワードしか得られないため、はるかに低いレートで)。したがって、パスワード ハッシュ時間にミリ秒を追加するたびに、攻撃者は 100 万倍または 10 億倍の支払いをしなければなりません。Bcrypt やその他のアルゴリズムは、意図的に処理を遅くするだけで、攻撃者はパスワードのクラックに多くの時間を費やすことになります。

于 2012-06-22T07:10:00.653 に答える