MD5が最も脆弱なハッシュアルゴリズムであり、特に衝突に対して脆弱であることを知っています。しかし、衝突の脆弱性はそれほど危険ではなく、誰かがそれを利点として使用するかもしれませんが、それは全くの運があります。
OK、MD5を使用してパスワードを保存するとします。ここにいくつかの衝突する文字列があります: https://crypto.stackexchange.com/questions/1434/are-there-two-known-strings-which-have-the-same-md5-hash-value =しかし、ユーザーがこの種の文字列をパスワードとして使用する可能性はほとんどありません。それが運にかかっている理由です。
そして今、ユーザーがこれらの文字列の1つを使用したとしましょう。攻撃者がこの衝突の脆弱性を使用するには、元のパスワードを知っていて、衝突する別の文字列があることを知っている必要があります。しかし、攻撃者が元のパスワードを既に知っている場合は、なぜ衝突に悩むのでしょうか。攻撃者がこれを利点として使用する方法はありますか?
MD5が最も脆弱なハッシュアルゴリズムであることを知っています
技術的には(ここでは技術的です)、MD5よりも悪いアルゴリズムがあります。
特に衝突に対して脆弱
はい、人々は異なる平文で希望のハッシュを作成できます。これはランダムに発生する可能性は低いですが、悪意で発生する可能性があります。
しかし、衝突の脆弱性はそれほど危険ではなく、誰かがそれを利点として使用するかもしれませんが、それは全くの運があります。
全く運ではありません。目的のMD5を生成するプレーンテキストを見つける手法があります。これは別の質問に適したテーマです。
OK、MD5を使用してパスワードを保存するとします。
痛い。 MD5を使用すべきでない主な理由は、MD5が汎用(高速)ハッシュであるためです。
次のような(遅い)パスワードハッシュを使用する必要があります
これらのオプションのほとんどは、デフォルトでランダムなソルトを生成しますが、これが当てはまるかどうかを確認する必要があります!
ハッシュする前に、パスワードの前にPepper(約72ビットのエントロピー)を含めることをお勧めします。 Pepperはすべてのユーザーで同じにすることができますが、SQLインジェクションを介してコンポーネントが見つからないように、データベース外のファイルに保存する必要があります。
ターゲットハードウェアで、適切なDoS保護を備えた作業係数が約100ミリ秒を必要とすることを確認します(攻撃者がブルートフォースに高速ハードウェアを使用することを知っている)
もちろんハッシュの量は弱いpassword
sを保護しませんので、パスワード強度の要件を含めてください。
衝突の脆弱性...攻撃者がこれを利点として使用する方法はありますか?
パスワードハッシュストレージのコンテキストでは、これはおそらく攻撃者を助けません。
ハッシュアルゴリズムが最近攻撃される主な理由は、パスワードとは関係ありません。パスワードハッシュに関しては、MD5はまだかなり安全だと思います。塩を使用してRainbowテーブルを倒し、アルゴリズムを何度も繰り返してブルートフォースの推測を遅くします(ただし、 代わりに標準アルゴリズムを使用する必要があります )。問題は、それぞれデジタル署名またはX.509証明書にあります。
10年間、md5を使用するシグニチャに「選択されたプレフィックス攻撃」が存在します。 2006年または2007年に、工科大学アイントホーフェンのArjen Lenstraの周りのチームが、商用CAが発行したものと同じMD5ハッシュを持つ不正な証明書を作成しました。攻撃にはかなりの計算能力が必要で、セットアップは非常に洗練されていましたが、結果としてMD5が侵害されました。 here および here を参照してください。
同じテクニックが有名なFLAME攻撃でも採用されました。
あなたが正しく気づいたように、パスワードハッシュに関しては、プレーンテキストを知らずに衝突を生成する必要があるため、状況は完全に異なります。デジタル署名に関しては、平文は通常知られています、そしてもちろんこれは上で引用された仕事が示すように追加の攻撃ベクトルを開きます。