34

SHA512がMD5よりも優れたハッシュアルゴリズムである理由を説明する理由やリソースへのリンクができるかどうか疑問に思いました。

4

7 に答える 7

65

ユースケースによって異なります。「優越性」を広く主張することはできません。(つまり、場合によってはできますが、厳密に言うと、実際にはできません)。

ただし、MD5 が壊れている領域があります。

  1. 手始めに: MD5 は古く、一般的です。それに対してたくさんの虹のテーブルがあり、それらは簡単に見つけることができます. したがって、パスワードをハッシュしている場合 (salt なしで - 残念なことに!) - md5 を使用して - パスワードをハッシュしない方がよいかもしれません。パスワードは非常に簡単に見つけることができます。単純なソルトでハッシュしている場合でも。
  2. 次に、MD5 はもはや暗号ハッシュ関数として安全ではありません (実際、Forked One が指摘しているように、MD5 はもはや暗号ハッシュ関数とは見なされていません)。同じ値にハッシュされるさまざまなメッセージを生成できます。そのため、MD5 ハッシュを含む SSL 証明書を取得している場合は、同じハッシュを生成する、必要な内容を示す複製証明書を生成できます。これは、MD5 が「壊れている」と人々が言うときの一般的な意味です。
  3. 3 番目に、メッセージと同様に、同じ値にハッシュする別のファイル を生成することもできるため、MD5 をファイル チェックサムとして使用することは「壊れています」。

現在、SHA-512 はSHA-2 ファミリハッシュ アルゴリズムです。SHA-1 は、最近では「ええ」と見なされているようなものですが、無視します。ただし、SHA-2 に対する攻撃は比較的少ないです。ウィキペディアが言及している主要な攻撃は、SHA-512 をひどく間違った方法で使用した場合、私がそれを破ることができることを意味する縮小ラウンドのプリイメージ攻撃です。明らかに、そのように使用する可能性は低いですが、攻撃は改善されるだけであり、MD5 が壊れているのと同じ方法で SHA-512 を壊すためのより多くの研究への良い出発点です。

ただし、利用可能なすべてのハッシュ関数の中で、SHA-2 ファミリは現在最も強力であり、共通性、分析、およびセキュリティを考慮すると最良の選択です。(ただし、必ずしも速度ではありません。組み込みシステムを使用している場合は、まったく別の分析を実行する必要があります。)

于 2010-01-22T14:18:28.080 に答える
11

MD5 はかなり前から暗号的に破られていました。これは基本的に、ハッシュ アルゴリズムによって通常保証される一部のプロパティが保持されなくなることを意味します。たとえば、出力の長さに潜在的に必要な時間よりもはるかに短い時間でハッシュの衝突を見つけることができます。

SHA-512 (ハッシュ関数の SHA-2 ファミリの 1 つ) は、現時点では十分に安全ですが、近い将来にはそれほど長くは続かない可能性があります。そのため、NIST は SHA-3 のコンテストを開始しました。

一般的に、ハッシュアルゴリズムは一方向にする必要があります機能。一部の入力を一部の出力にマップします。通常、出力は固定長であるため、元の入力の「ダイジェスト」が提供されます。一般的な特性は、たとえば、入力の小さな変化が出力の大きな変化をもたらすこと (改ざんの検出に役立ちます) や、関数が簡単に元に戻せないことです。後者のプロパティの場合、出力の長さは衝突攻撃の複雑さの理論的な上限を提供するため、非常に役立ちます。ただし、設計または実装の欠陥により、攻撃の複雑さが軽減されることがよくあります。それらがわかったら、ハッシュ関数をまだ使用しているかどうかを評価します。攻撃の複雑さが十分に低下すると、特殊なコンピューティング機器がなくても、実際の攻撃は簡単に人々の範囲に入ります。

注: ここでは、1 種類の攻撃についてのみ説明しています。現実ははるかに微妙ですが、把握するのもはるかに困難です。ハッシュ関数はファイル/メッセージの整合性を検証するために非常に一般的に使用されているため、衝突の問題はおそらく最も理解しやすく追跡しやすいものです。

于 2010-01-22T14:17:09.650 に答える
7

ここで取り上げられていない点がいくつかあります。それは、ハッシュとは何か、どのように機能するか、レインボーまたは現在知られている他の方法を使用してそれらを攻撃するのにどれくらいの時間がかかるかについての理解が不足しているためだと思います。男...

数学的に言えば、ハッシュをソルトして (1 秒でも) 試行を抑制しても、MD5 は「壊れる」ことはありません。木製スプーン:

何千年もかかり、それまでに関係者全員が死んでいます。もっと重要な心配事があります。

20 回目の試行までにアカウントをロックすると、問題は解決しました。あなたの壁に 20 ヒット = 0.0000000001% の確率で壁を通過します。あなたが実際にイエスである可能性は、文字通りより統計的に優れています。

あなたはそれについて間違って考えています。

また、ハッシュとは「他の何かの (小さな) 一意の ID」という性質により、絶対にすべてのハッシュ関数が衝突に対して脆弱になることに注意することも重要です。

ビット スペースを増やすと、衝突率が低下しますが、ID のサイズと計算にかかる時間も増加します。

ちょっとした思考実験をしてみましょう...

SHA-2 が存在する場合、00、01、10、および 11 の合計 4 つの一意の ID が可能です。明らかに、衝突が発生します。ここで問題が見えますか?ハッシュは、識別しようとしているものの生成された ID にすぎません。

MD5 は実際には、入力に基づいてランダムに数値を選択するのが非常に得意です。実際、SHA はそれほど得意ではありません。SHA には、ID 用のスペースが大幅に増えています。

使用される方法は、衝突の可能性が低い理由の約 0.1% です。本当の理由は、より大きなビット空間です。

これが文字通り、SHA-256 と SHA-512 が衝突に対して脆弱ではない唯一の理由です。一意の ID に大きなスペースを使用するためです。

SHA-256 と SHA-512 がハッシュを生成するために使用する実際の方法は、実際にはより優れていますが、それほどではありません。ID のビット数が少ない場合、同じレインボー攻撃が機能します。ファイルやパスワードでさえ、SHA-256 と SHA-512 を使用して同一の ID を持つことができます。より多くのビットを使用するため、可能性ははるかに低くなります。

本当の問題は、セキュリティをどのように実装するかです

自動化された攻撃が認証エンドポイントに 1 秒間に 1,000 回ヒットすることを許可すると、侵入されます。3 秒ごとに 1 回の試行に調整し、10 回目の試行から 24 時間アカウントをロックした場合は、そうではありません。

パスワードをソルトなしで保存すると (ソルトはジェネレーターに追加された秘密であり、"31337" や "password" などの悪意のあるパスワードを特定するのが難しくなります)、多くのユーザーがいると、ハッキングされます。それらをソルトすると、MD5 を使用しても、そうではありません。

MD5 が 128 ビット (HEX で 32 バイト、バイナリで 16 バイト) を使用し、SHA 512 はスペースの 4 倍にすぎないことを考慮すると、2^384 の可能な ID を提供することで実質的に衝突率を排除します... SHA-512 を使用すると、すべての時間。

しかし、MD5 を使用した場合に実際に何が起こるかを心配していて、実際の実際の違いを理解していない場合でも、おそらくハッキングされる可能性があります。

于 2016-06-28T18:38:30.310 に答える
2

これを読んで

ただし、MD5 は耐衝突性ではないことが示されています。

衝突についての詳細はこちら

于 2010-01-22T14:16:40.997 に答える
1

MD5 には衝突の可能性があり ( http://www.mscs.dal.ca/~selinger/md5collision/ )、パスワードの逆引き検索用の MD5 レインボー テーブルが Web 上に多数あり、ダウンロードできます。

于 2010-01-22T14:17:56.517 に答える
0

逆方向にマップするには、はるかに大きな辞書が必要であり、衝突の可能性が低くなります。

于 2010-01-22T14:11:25.320 に答える
0

簡単です。MD5 は壊れています ;) (ウィキペディアを参照してください)

Bruce Schneier は攻撃について、「[私たちは] MD5 が壊れたハッシュ関数であることをすでに知っていた」、「もう誰も MD5 を使用すべきではない」と書いています。

于 2010-01-22T14:17:41.373 に答える