web-dev-qa-db-ja.com

同じソルトでMD5パスワードを解読する

ハッシュがMD5とソルト(知っている)であることがわかっている場合、パスワードを10文字まで解読するのにどのくらい時間がかかりますか?

4
user49637

計算は非常に単純ですが、いくつかの隠された仮定があります。

このサイトで 、いくつかのGPUベースのクラッキングシステムのベンチマークを見つけることができます。それらの1つは、8つ以上のAMD R9290X GPUを備え、毎秒938億のMD5を計算できます。

26があります10 = 141167095653376 10文字の可能なシーケンス。 1秒あたり938億で、それらはすべて約1500秒で、つまり25分でハッシュできます。平均して、正しいパスワードを見つけるのにかかる時間は半分になります(運が良いこともあれば、できないこともあります)。

ただし、詳細に注意してください。

  • MD5 はハッシュ関数です。標準的な定義では、パスワードやソルトについては言及されていません。 「パスワードがMD5とソルトでハッシュされている」場合、実際には、MD5を内部要素の1つとして使用する不特定のアルゴリズムを使用しています。アルゴリズムの計算コストを「1つのMD5だけ」に削減できるかどうかは、そのアルゴリズムによって異なります。一部のMD5ベースのパスワードハッシュ関数は、実際には複数のMD5呼び出しを意味します(その意味では、HMAC/MD5を使用したPBKDF2は「MD5に基づく」アルゴリズムであり、billionsを伴う可能性があります)各パスワードの呼び出しの数)。

  • 上記の計算では、10lowercase文字を想定しています。パスワードに小文字と大文字の両方を含めることができ、それらの扱いが異なる場合、組み合わせの数は52に増えます。10 = 144555105949057024、対応するブルートフォース時間が17.8日の場合。 印刷可能な文字(95 ASCII記号、制御文字を除いてスペースを含む)を使用する場合、組み合わせの数は再び95まで増加します10 = 59873693923837890625、ブルートフォース時間が約20年の場合(これも完全な宇宙探査用です。攻撃時間は平均でその値の半分になります) )。

  • 逆に、通常の人間のユーザーがパスワードを生成することになっている場合、ユーザーは「ランダムな」パスワードではなく「機知に富んだ」パスワードを考え出します。 10文字の可能なパスワードのなかには、他のものより広く存在する可能性が高いものがあります。攻撃者はより可能性の高いものから始めてパスワードを試し、これにより攻撃時間が大幅に短縮されます。

  • ここで例として使用されているシステムはアマチュア用語でかなり大きい(8つの大きなGPU ...)が、勤勉な攻撃者はより多くの電力を蓄積する可能性がある。彼はそれを(商用クラウドシステムから)レンタルすることもできます。最初に攻撃者の予算を定義しなければ、質問に対する絶対的な答えはありません。

7
Thomas Pornin