web-dev-qa-db-ja.com

2016年12月14日に発表されたYahooのハッキングで盗まれたパスワードを解読するのにどのくらい時間がかかりますか?

どうやらYahooは再びハッキングされた 最大10億のユーザーアカウントで 侵害された。この記事によると、YahooはパスワードのハッシュにMD5を使用しています。

ハッカーもパスワードを解読できる可能性がありますか? 1つのパスワードを解読するのにどのくらい時間がかかりますか? 10億をクラックする時間は10億* tですか?

77
soadyp

はい、おそらく彼らは短時間で多くのパスワードを解読することができたでしょう。

公式Yahooステートメント から:

影響を受ける可能性のあるアカウントの場合、盗まれたユーザーアカウント情報には、名前、メールアドレス、電話番号、生年月日、ハッシュパスワード(MD5を使用)、 、場合によっては、暗号化または非暗号化セキュリティの質問と回答。

MD5は 論争可能choice です。その速度はMD5ハッシュされたパスワードを解読するためです 本当に速い 。また、Yahooは確かに私たちに知らせたはずなので、それらはおそらく塩漬けされていません。 (塩は、割れているときにレインボーテーブルの使用を防ぐのに役立ちました。)

単純なMD5ハッシュの欠点は、2015年に3,600万のアカウントをリークしたAshley Madison違反と比較するとわかります。その場合、彼らはbcryptと2を使用しました12 キー拡張は、YahooのプレーンなMD5とは対照的に行われます。そのため、その当時 研究者は4,000個のパスワードしか解読できませんでした が最初の試みでした。

記事から:

ピアースの場合、bcryptは彼の4つのGPUクラッキングリグの速度を毎秒156推測程度に制限しました。 [...]非常に低速で計算量の多いbcryptとは異なり、MD5、SHA1、および他の多くのハッシュアルゴリズムは、軽量ハードウェアに最小限の負担をかけるように設計されています。たとえばルーターのメーカーにとっては良いことであり、クラッカーにとってはさらに良いことです。 たとえば、Hash Ashley MadisonがMD5を使用していた場合、たとえば、Pierceのサーバーは1100万を完了した可能性があります1 1秒あたりの推測、ソルトされていれば3.7年間で3600万個すべてのパスワードハッシュをテストでき、ソルトされていなければわずか3秒(多くのサイトではまだハッシュされません) )。

したがって、Yahooのパスワードの大部分をクラックするのはほんの数秒です(一部の強力なパスワードはそのまま残ります)。正確な答えは、利用可能な計算能力とYahooの顧客のパスワードのセキュリティ意識に依存します。


1@grcが指摘しているように、1秒あたり1,100万回のハッシュはかなり遅いようです。 @Morgorothのリンク 8x Nvidia GTX 1080 Hashcatベンチマーク (MD5合計で200.3 GH /秒)は、より最新の測定に適したリソースです。

67
Arminius

(要約は最後の段落にあります。)

1つのパスワードを解読するのにどのくらい時間がかかりますか? 10億をクラックする時間は、ちょうど_1e9 * t_ですか?

私がこのハッシュアルゴリズムを持っていると想像してください:

_function hash(password):
    hash = 0
    foreach character in password:
        hash = hash + toNumber(character)
    return hash
_

hash("ab")を呼び出すと、最初の文字の数値が1、2番目の文字が2になる可能性があるため3を返し、それらを合計して3になります。

ここで、583、140、8582などの数値でいっぱいのデータベースがある場合、解読にどのくらいの時間がかかりますか?

この例では、hash("ab")hash("ba")と同様に3になり、これは衝突(2つの入力が同じ出力にマッピングされる)と呼ばれます。 md5では、これはそれほど簡単には起こりません。順序が重要であり、出力を指定して入力に関する情報を取得することはできません。長さすら違います。

したがって、正しい出力が得られる可能性が見つかるまで、すべての可能性を試すことに頼る必要があります。誰かが強力でランダムな20文字のパスワードを持っている場合、数世紀かかる可能性があります。しかし、ほとんどの人は「horselover49」、「letmein」、「penis」(後者は短すぎるかもしれませんが)のようなパスワードを使用しますが、これらは解読がはるかに簡単です。

Md5の使用について誰もが不満を言うのは、高速だからです。しかし、ハッシュアルゴリズムは高速化です。 MD5は他の目的で壊れている可能性がありますが、パスワードハッシュ用ではありません。 anyハッシュアルゴリズムの単一パスを使用しないでください。md5、sha1、sha512などです。

Bcrypt/scrypt/pbkdf2/etcなどのより優れたアルゴリズム。 (特に)ハッシュアルゴリズムを100万回使用します。今度は、すべての推測に対してアルゴリズムを1回実行する代わりに、推測ごとに100万回アルゴリズムを実行する必要があります。これにはかなり時間がかかり、より少ないパスワードを試すことができるため、脆弱なパスワードをより適切に保護できます。

つまり、MD5を使用した他の違反と同様に、同じことが起こります。多くのパスワードが解読されます。しかし、それらはallにクラックされることはなく、確実に線形時間ではありません。強力なものほど指数関数的に時間がかかります。

21
Luc

システムから使用可能なパスワードを取得し始める時間は、特定のユーザーのパスワードを見つける時間よりもはるかに短いことを覚えておいてください。パスワードを選択してハッシュし、パスワードがその値にハッシュするすべてのユーザーを検索します(以前にユーザーをパスワードハッシュでキー設定されたハッシュテーブルに保存した場合は、非常に高速です)。繰り返します。この大規模なユーザーの山では、ほとんどすべてのパスワードで誰かがそれを使用する可能性が高く、一般的なパスワードやずさんなパスワードで多くの人がそれらを使用します。

5
keshlam

追加情報なしではわかりません。

まず、「MD5を使った」と言われています。パスワードを取得してMD5でハッシュするのは非常に高速です。言われたように、280億のパスワード推測を行い、1秒あたりのMD5ハッシュコードを計算できるマシンがあります。それは悪いだろう。ただし、MD5ではハッシュのマルチプライラウンドを使用した可能性があります。彼らはパスワードをハッシュし、その後さらに100万回の結果をハッシュした可能性があります。現在、推測できるパスワードの数と計算されるハッシュは、1秒あたり28,000のみです。

次に、パスワードが「ソルト」されているかどうかを知る必要があります。 「ソルト」パスワードとは、ユーザーごとに異なる「ソルト」がパスワードに追加されることを意味します。たとえば、パスワード1234を間違えて使用し、同じパスワードを間違えて使用した場合、「実際の」パスワードはk39fja0eflaei-1234とoe0vnda9afnlad-1234になります。したがって、私のパスワードが解読されても、パスワードの解読には役立ちません。すべてのパスワードを個別に解読する必要があります。

無塩のパスワードを使用する場合、28,000のパスワードの推測は、そのパスワードを使用した10億人のユーザーのうちanyであれば成功します。したがって、数十億回の推測で、より簡単なパスワードはすべて解読されます。ソルトパスワードを使用すると、数十億回の推測で簡単なパスワードを取得できます。しかし、プレーンなMD5を使用している場合、1秒間に280億回のパスワード推測により、ソルトを使用した場合でも非常に速くクラックされます。

3
gnasher729