web-dev-qa-db-ja.com

zxcvbnのパスワードの強度を知ることは、攻撃者をどの程度助けますか?

answer 質問 パスワードの長さを秘密に保つことはどれほど重要ですか? の場合、Mike Ounsworth コメントzxcvbn -計算されたパスワードのエントロピーにより、攻撃者がパスワードを推測しやすくなります。

実際には、パスワードごとに2つの「ハッシュ」を保持しています。bcryptハッシュとzxcvbnエントロピーです。 zxcvbnはbcryptよりも計算がはるかに高速であるため、zxcvbnスコアが正確に一致する場合、攻撃者は候補パスワードの100,000(またはwtv)ソルトアンドハッシュの反復を実行するだけで済みます。これは攻撃者にとって非常に大きな利点です。

Bcryptハッシュされたパスワードの場合、これは攻撃者にどの程度の利点がありますか?これは定量化できますか?

また、他のコメントでは、エントロピーの精度を下げると攻撃者の利点が減ると述べています。スコア(0、1、2、3、または4)のみを保存すると、効果的に効果がなくなりますか?

3
Joshua Dwire

私のコメントをさらに説明させていただきます:-)

残念ながらそれは単純な説明ではありません。


Bcryptハッシュされたパスワードの場合、これは攻撃者にどの程度の利点がありますか?これは定量化できますか?

特に攻撃者がジョブに特化したチップを作成することを許可されている場合は、アルゴリズムの実行時に推測することが難しいため、これを定量化することは困難です。

だから派手な数学はありません: しかし、私はまだ直感ベースの答えを与えることができます。

bcryptは、オフラインの辞書攻撃に対して堅牢な方法でパスワードをハッシュするように設計されています。つまり、とりわけ、slow。遅いとは、ブルートフォーシングを行う攻撃者が推測ごとにさらに多くの計算を行う必要があるため、毎秒多くの推測を行うことができないことを意味します。または、経済的に言えば、Niceスローハッシュ関数を使用するときにパスワードが急上昇するために攻撃者がプロセッサと電力に費やさなければならない金額です。

ポイントを説明するために、Colin Percivalの論文(下記の完全なリファレンス)から抜粋したこの表は、1年でハッシュを確実にクラックするために必要なハードウェアの推定コストを示しています(これは、必要な2002年のプロセッサーの数。電気、電源、冷却などのコストは完全に無視されます)。

Estimated cost of cracking various hash functions

スローが良いこと、そして良いハッシュ関数が遅いことを確立したので、zxcvbnについて話しましょう。

zxcvbnは、ページを遅らせることなくクライアント側で実行するjavascript dohickyであることを意図しているため、PBKDF2、bcrypt、およびscryptに比べて高速です。

実際にあなたの質問に答えるために、各行が次のようになっているパスワードデータベースを盗んだと想像してください(@ScottArciszewskiが彼のコメントで説明していると私は信じています---(here ):

username        bcrypt_hash                        bgcypt_salt                zxcvbn_score
happyfish23     IjZAgcfl7p92ldGxad68LJZdL17lhWy    N9qo8uLOickgx2ZMRZoMye     32.827

通常、ブルートフォース攻撃は、辞書からパスワードを取得してハッシュし、そのハッシュが盗まれたデータベースのパスワードと一致するかどうかを確認します。一致する場合は、パスワードを解読しています。それ以外の場合は、パスワードが見つかるまで試行し続けます。一致しません。 (これは、パスワードが推測されたときに一度に1つずつオンラインで実行するか、事前に計算されたRainbowテーブルとして実行できますが、いずれにしても、速度を低下させるには時間と費用がかかります。各alg + iteration_count salt組み合わせ)

上記のデータベースにアクセスできれば、zxcvbnスコアをフィルターとして使用できます。 zxcvbnのスコアが一致しない場合、これは適切なパスワードではなく、bcryptの計算に時間を浪費することはありません。そのため、zxcvbnが一致する場合のみbcryptを計算する必要があります。 zxcvbnは基本的に無料なので、bcryptと比較して、ブルートフォーサーが10推測/秒から数百万推測/秒になる可能性があることは不合理ではありませんこのトリックを使用します。


あなたの質問の後半については:

また、他のコメントでは、エントロピーの精度を下げると攻撃者の利点が減ると述べています。スコア(0、1、2、3、または4)のみを保存すると、効果的に効果がなくなりますか?

はい、これは実質的に利点を排除します。基本的に上記の説明から外れる理由。元のデータベースに5桁のzxcvbnスコアが格納されており、ブルートフォーシング辞書のパスワードがzxcvbnスコアに均一に分散されていると仮定します(ひどい仮定ですが、ロジックが簡単になります)。 zxcvbnスコアが100万分の1の時間に一致することを期待するだけなので、100,000回の推測ごとにbcryptを計算するだけで済みます。ただし、代わりにスコアの低精度バージョンを格納する場合、たとえば{0,1,2,3,4}、5番目の推測ごとにbcryptを計算する必要があります。あなたはまだ攻撃者に最大5倍の高速化を与えていますが、それは100,000倍の高速化よりもはるかに優れています。

参照:

パーシバル、コリン。 「シーケンシャルメモリハード関数によるより強力なキーの導出。」自費出版(2009):p。 14 (pdfへのリンク)

8
Mike Ounsworth