86

パスワードハッシュのための理想的なbcryptワークファクターは何でしょうか.

係数 10 を使用すると、ラップトップでパスワードをハッシュするのに約 0.1 秒かかります。非常に忙しいサイトになってしまうと、人々のパスワードをチェックするだけでかなりの作業になります。

おそらく、作業係数 7 を使用して、合計パスワード ハッシュ作業をラップトップ ログインあたり約 0.01 秒に減らす方がよいでしょうか?

ブルート フォースの安全性と運用コストのトレードオフをどのように決定しますか?

4

3 に答える 3

109

値は password: に保存されることに注意してください$2a$(2 chars work)$(22 chars salt)(31 chars hash)。固定値ではありません。

負荷が高すぎるとわかった場合は、次にログインしたときに、より高速な計算に暗号化するようにしてください。同様に、時間の経過とともにサーバーが改善され、負荷が問題にならない場合は、ログイン時のハッシュの強度をアップグレードできます.

秘訣は、ムーアの法則に従って、ほぼ同じ時間を将来にわたって永遠にかけ続けることです。数値は log2 であるため、コンピューターの速度が 2 倍になるたびに、既定の数値に 1 を追加します。

ユーザーのパスワードを総当たり攻撃するのにかかる時間を決定します。たとえば、一般的な辞書の単語の場合、アカウントの作成時に、パスワードが脆弱であることをすでに警告している可能性があります。たとえば、それが 1000 の一般的な単語の 1 つであり、攻撃者がそれぞれをテストするのに 0.1 秒かかる場合、攻撃者は 100 秒を購入します (まあ、一部の単語はより一般的です...)。ユーザーが「一般的な辞書の単語」+ 2 つの数字を選択した場合、それは 2 時間以上になります。パスワード データベースが危険にさらされ、攻撃者が 1 日に数百のパスワードしか取得できない場合、パスワードを安全に変更するために、ほとんどのユーザーの時間または日を費やしたことになります。それは彼らに時間を買うことの問題です。

http://www.postgresql.org/docs/8.3/static/pgcrypto.htmlには、パスワードを解読するための考慮事項がいくつかあります。もちろん、そこに記載されているパスワードはランダムな文字です。辞書の単語... 実際には、パスワードが 12345 の男を救うことはできません。

于 2011-01-22T08:04:06.897 に答える