SHA512がMD5よりも優れたハッシュアルゴリズムである理由を説明したり、リソースへのリンクを提供できるかどうか疑問に思っていました。
ユースケースによって異なります。広範に「優越」を主張することはできません。 (つまり、一部のケースでは可能ですが、厳密に言うと、実際にはできません)。
しかし、MD5が壊れている領域があります。
現在、SHA-512は SHA-2 Family ハッシュアルゴリズムです。最近、SHA-1は「えー」と考えられているので、無視します。ただし、SHA-2に対する攻撃は比較的少ないです。ウィキペディアが話題にしている主要なものの1つは 縮小されたイメージ前の攻撃 です。つまり、SHA-512をひどく間違った方法で使用すると、私はそれを壊すことができます。明らかにそのように使用する可能性は低いですが、攻撃は良くなるだけであり、MD5が破壊されるのと同じ方法でSHA-512を破壊するためのより多くの研究への良い出発点となります。
ただし、利用可能なすべてのハッシュ関数の中で、SHA-2ファミリーは現在、最強であり、共通性、分析、およびセキュリティを考慮した最良の選択です。 (しかしではない必ずしも速度。組み込みシステムを使用している場合は、他の分析全体を実行する必要があります。)
MD5は、かなり長い間、暗号的に破壊されています。これは基本的に、通常ハッシュアルゴリズムによって保証される一部のプロパティが、もう保持されないことを意味します。たとえば、出力長に潜在的に必要な時間よりもはるかに短い時間でハッシュの衝突を見つけることができます。
SHA-512(ハッシュ関数のSHA-2ファミリーの1つ)は、現時点では十分に安全ですが、おそらく将来的にはそれほど長くはありません。そのため、NISTはSHA-3のコンテストを開始しました。
一般に、ハッシュアルゴリズムは一方向関数にする必要があります。それらはいくつかの入力をいくつかの出力にマップします。通常、出力は固定長であるため、元の入力の「ダイジェスト」を提供します。一般的なプロパティは、たとえば、入力の小さな変化が出力の大きな変化(改ざんの検出に役立つ)をもたらすこと、および関数を簡単に元に戻すことができないことです。後者のプロパティの場合、衝突攻撃の複雑さの理論上の上限を提供するため、出力の長さは非常に役立ちます。ただし、設計または実装の欠陥により、攻撃の複雑さが緩和されることがよくあります。それらがわかったら、ハッシュ関数をまだ使用しているかどうかを評価します。攻撃の複雑さが大幅に下がれば、実用的な攻撃は、特殊なコンピューティング機器を使用しなくてもさまざまな人に簡単に侵入します。
注:ここでは、1種類の攻撃についてのみ説明しました。ニュアンスがはるかに大きいが、把握するのがはるかに難しい場合の現実。ハッシュ関数はファイル/メッセージの整合性を検証するために非常に一般的に使用されているため、衝突の問題はおそらく理解して理解するのが最も簡単なものです。
ここでは触れられていない点がいくつかありますが、これは、ハッシュとは何か、それがどのように機能するか、Rainbowまたは現在知られているその他の方法を使用して攻撃に成功するまでにかかる時間についての理解が不足しているためだと思いますおとこ...
数学的に言えば、MD5は、ハッシュとスロットルの試みをソルト処理しても(1秒でも)「壊れている」わけではありません。セキュリティは、攻撃者が1フィートの頑丈な鋼鉄の壁に木製スプーン:
数千年かかり、それまでに関係者全員が死んでしまいます。心配することがもっと重要なことがあります。
20回目の試行でアカウントをロックすると、問題が解決します。壁に20ヒット=通過した確率は0.0000000001%。あなたが実際にイエスであるという文字通りの統計的可能性があります。
また、どのハッシュ関数も、ハッシュとは何かによって、「他の何かの(小さな)一意のID」であるため、衝突に対して脆弱になることに注意することも重要です。
ビットスペースを増やすと衝突率は下がりますが、IDのサイズと計算にかかる時間も増えます。
小さな思考実験をしましょう...
SHA-2が存在する場合、他の何かに対して4つの一意のIDが存在する可能性があります... 00、01、10、11。衝突が発生します。ここに問題がありますか?ハッシュは、識別しようとしているものの生成されたIDです。
MD5は、実際には、入力に基づいてランダムに数値を選択するのが本当に上手です。 SHAは、実際にはそれほど優れていません。SHAには、IDのための非常に多くのスペースがあります。
使用される方法は、衝突の可能性が低い理由の約0.1%です。本当の理由はより大きなビット空間です。
これが文字通りSHA-256とSHA-512の衝突に対する脆弱性が低い唯一の理由です。一意のIDに大きなスペースを使用するためです。
SHA-256およびSHA-512がハッシュを生成するために使用する実際の方法は、実際には優れていますが、それほど多くはありません。 IDのビット数が少ない場合、同じRainbow攻撃がそれらに作用し、ファイルとパスワードでさえSHA-256とSHA-512を使用して同一のIDを持つことができますが、より多くのビットを使用するため、可能性ははるかに低くなります。
実際の問題は、セキュリティを実装する方法です
自動化された攻撃が毎秒1,000回認証エンドポイントにヒットすることを許可すると、侵入されることになります。 3秒ごとに1回の試行に絞り込み、10回目の試行から24時間アカウントをロックしても、そうではありません。
パスワードをソルトなしで保存すると(ソルトはジェネレーターに追加されたシークレットであり、「31337」や「パスワード」などの不正なパスワードを特定するのが難しくなります)、多数のユーザーがいる場合、ハッキングされることになります。あなたがそれらを塩漬けすれば、たとえあなたがMD5を使用しても、あなたはそうではありません。
MD5は128ビット(HEXでは32バイト、バイナリでは16バイト)を使用し、SHA 512はスペースの4倍にすぎませんが、IDを2 ^ 384個増やすことで衝突率を事実上排除します。 ..毎回、SHA-512を使用してください。
しかし、MD5を使用した場合に実際に何が起こるかについて心配していて、実際の実際の違いを理解していない場合でも、おそらくハッキングされることになりますか?
MD5は衝突の可能性があり( http://www.mscs.dal.ca/~selinger/md5collision/ )、Web上で逆パスワード検索用の多数のMD5 Rainbowテーブルがあり、利用可能ですダウンロード用。
後方にマップするにはより大きな辞書が必要であり、衝突の可能性は低くなります。
それは単純です、MD5は壊れています;)( Wikipedia を参照)
Bruce Schneierは、「MD5が壊れたハッシュ関数であることをすでに知っている」、「MD5を使用する必要はもうない」という攻撃について書いています。