5

ユーザーがファイルをアップロードできる Web サイトがあります。これらはサーバーに保存され、そのメタデータはデータベースに記録されます。簡単な整合性チェックを実装しています。つまり、「このファイルの内容は、アップロードされたときとバイト単位で同じですか?」などです。

例: のコンテンツのuserfile.jpg場合、MD5 ハッシュは39f9031a154dc7ba105eb4f76f1a0fd4で、SHA-1 ハッシュは878d8d667721e356bf6646bd2ec21fff50cdd4a9です。このファイルのコンテンツが変更されたが、前後で同じ MD5 ハッシュを持つ場合、SHA-1 ハッシュも同じままである可​​能性は高いですか? (ハッシュを使用すると、ハッシュの衝突が発生することがあります。これは、2 つの異なるハッシュ アルゴリズムを同時に使用すると発生する可能性がありますか?)

それとも、ファイルの 2 つの異なるハッシュを計算しても意味がありませんか (整合性を検証するために他のメカニズムを試す必要があります)。


編集:偶発的な破損についてはあまり心配していませんが、ユーザーが気付かずにファイルを変更するのを防ぐことになっています(誕生日の攻撃と友人)。

私はおそらく 1 つのハッシュ、SHA-512 を使用します - チェックがパフォーマンスのボトルネックになることはそれほど多くありませんが、「Bruce Schneier が言うように、高速で安全でないシステムはすでに十分に存在します。」コメント」。

4

6 に答える 6

7

MD5 はおそらく安全ですが、既知の欠陥があるハッシュを使い続ける理由はありません。実際、既知の主要なパフォーマンスのボトルネックがない限り、SHA256 または SHA512 を使用してはならない理由はありません。

編集: 明確にするために、2 つのアルゴリズムを使用する理由はありません。必要なものに合うものを使用してください。誰かが MD5 衝突を起こしているのではないかと心配している場合 (たとえば、これはセキュリティ上の脅威ですか?)、SHA256 などのそれほど弱くないアルゴリズムを使用してください。

編集 2: 明らかにまだ一般的な誤解に対処するには: ハッシュでランダムな衝突を見つけることは、1/2^n の確率ではありません。1/2^(n/2)に近いです。したがって、128 ビットのハッシュは、おそらく 2^64 回の試行で衝突する可能性があります。詳細はバースデーアタックを参照。

于 2009-02-11T18:01:24.227 に答える
4

ほとんどの場合、MD5 ハッシュ自体をチェックするだけで十分です。必要に応じて、さらに SHA1 をチェックしても害はありません。MD5 チェックだけでは見逃してしまう可能性は非常に低いことに注意してください。

スケーラビリティの観点から、チェックを追加すると、サーバーに不要な負荷がかかることに注意してください。

于 2009-02-11T17:59:49.613 に答える
1

一般に、MD5 ハッシュが一致しない場合、SHA1 (または他の同様のハッシュ) も一致しません。それが起こらない可能性がないと言うつもりはありません (両方のアルゴリズムで衝突があることは誰もが知っているため) が、あなたの状況ではおそらく決して起こらないと思います.

私の考えでは、おそらく 1 つのハッシュを提供するだけで十分です。複数のハッシュは検証するのが難しくなります (プラットフォームで利用可能なユーティリティによっては、1 つを検証するだけでも十分に悪いことです)。また、完全な衝突につながるような驚くべきファイルの破損が見られるとは思えません。

注:検証が苦痛であるということは無視してください。質問を読み直して、これを修正しました。元の意味は、ユーザーがファイルをダウンロードするためのハッシュ検証であると考えました。もちろん、それが意図されたものであれば、が言ったことはまだ当てはまると思います.

于 2009-02-11T18:01:59.373 に答える
1

大まかな見積もりとして、MD5 誤検知の可能性は 1/(2^128)、SHA-1 誤検知の可能性は 1/(2^160) であるため、両方のアルゴリズムの誤検知の可能性は 1 の間です。 /(2^128) と 1/(2^288) ですが、どちらのアルゴリズムも統計的に徹底的にテストされているため、1/(2^288) に近いことはほぼ確実です。

少なくとも、2 つの異なるハッシュを使用すると、アルゴリズムの 1 つで意図的な攻撃から十分に保護されます。

編集: いくつかの調査の後、私はこのウィキペディアに出くわしました. MD5 の誕生日攻撃は 1 分未満で実行できることに注意してください。SHA-1 の誕生日攻撃には、現時点で2^69 の操作が必要です。

于 2009-02-11T18:07:05.383 に答える
1

2 つのハッシュは異なる方法で計算されるため、同じ MD5 ハッシュを持つ 2 つのファイルが同じ SHA-1 ハッシュを持つ可能性は、2 つのランダム ファイルよりも高くありません。いずれかのハッシュとのランダムな衝突の可能性が (大まかに) 2^128 の場合、両方のランダムな衝突の可能性は 2^256 になります。

実際には、極端に低い状態から極端に低い状態に移行します。

これは、誰かがあなたの 128 ビット キーをランダムに推測するのを避けるために、128 ビットから 256 ビットの暗号化に移行するのと同じことです。

于 2009-02-11T18:08:23.867 に答える