web-dev-qa-db-ja.com

数学的には、bcryptパスワードハッシュを解読するのにどのくらい時間がかかりますか?

したがって、私は現在、ランダムに生成されたソルト(pip bcryptモジュールで見られる)で12ラウンドのパスワードをハッシュするためにbcryptを使用しています。

私は周りを見回していましたが、強力なGPU(または他の解読方法)がbcryptハッシュを解読するのにかかる時間を推定する詳細で明確な数学的方法が見つかりません。

私は this Gist を見つけましたが、これは8倍のNvidia GTX 1080 Hashcatベンチマークを示していますが、bcryptに提供された数値を使用してハッシュアルゴリズムの実装に適用できないようです。

11
madcrazydrumma

さて、あなたがリンクした記事から、8x Nvidiaセットアップが毎秒約100 000 bcryptハッシュ(H/s)を計算できることがわかります。ベンチマークに使用されるコスト係数は、コメントが信じられる場合、5-非常に低いです。 bcryptの場合、ラウンド数はコスト係数の2乗に等しくなります。つまり、あなたが12の場合、ハッシュは2になります12/ 25 = 27 = 128倍遅くなります。だから10から5 H/s 10歳になりました H/s。

知っておくべきことは、nビットのエントロピーでハッシュをクラックするには、平均して2を試す必要があるということだけです。n-1 回。たとえば、8つのランダムな小文字からなるパスワードを使用してください。 n = logのエントロピーを持っています2(268)= 38ビット。それをクラックするには、2が必要です。38-1/ 1000秒= 4年。

ベンチマークは2016年のものであることに注意してください。時間が経つにつれ、ハードウェアは速くなります。最新の状態を維持するには、コスト要因を定期的に再評価する必要があります。

14
Anders

これは、パスワードに関する一般的な誤解です。パスワードの定義によって異なります。最初に、「8文字の英数字」など、パスワードの意味を定義する必要があります。それを定義したら、計算できます。

「英数字」は、26の大文字、26の小文字、10の数字、または62の可能な組み合わせです。

8文字のパスワードのすべての組み合わせを試すには、次のようになります。62 * 62 * 62 * 62 * 62 * 62 * 62 * 62

それは218,000,000,000,000です。

これを13094(1秒あたりのハッシュ数)で除算すると、16674820955秒、つまり528年になります。

すべての組み合わせを試すのは非現実的であるため、代わりに辞書の単語や「マルコフ連鎖」を選択してパスワードの種類をテストするなど、他の戦略につながります。これが完全に主観的であるため、これがどれほど速いかを数学的に計算することはできません。それは運、ターゲットが選択したパスワード、およびテストするために選択したパスワードによって異なります。多くの場合、数時間のクラックでパスワードがクラックされる可能性は10%程度ですが、これも主観的な経験です。誰のパスワードをクラックしているか、どのようにクラックしているかによって、経験は異なります。

とにかく、要点はこの質問には答えがないということです。それは物事がどのように機能するかについての誤解です。そしてそれがあなたが答えをグーグルできない理由です。

0