2009-07-13 6 views
3

重複するコンテンツを防止したいと思います。私はコンテンツのコピーを保持したくないので、私はmd5シグネチャだけを保持することに決めました。md5を使用して重複するコンテンツを防止できますか?

私はMD5の衝突が起こるのかということ読んで、さまざまなコンテンツが同じMD5シグネチャに与えることができます。

md5で十分ですか?

は、私が一緒にMD5とSH1を使用する必要がありますか?

+0

どのくらいのコンテンツについて話していますか? – ceejayoz

+0

SHA2ダイジェストのサイズは、偶発的な衝突が不合理に起こりにくいほど大きいので、問題ではありません。 –

+0

明白なフォローアップの質問:意図的な衝突か偶発的な衝突か? –

答えて

5

人は意図的に人為的な状況下でMD5の衝突を生成することができましたが、重複したコンテンツ(悪意のあるユーザーがいない場合)を防ぐためには十分です。

あなたがSHA-1(またはSHA-2)を使用することができれば、あなたは分数ではあるが測定可能なほど衝突から安全になるはずです。

+0

悪意のある人の前でさえ、これはうまくいかないはずですか? Legitmateのコンテンツが最初に投稿されました - > maluserは意図的な衝突を作成します - > maluserはコンテンツを投稿する能力を拒否されました –

+0

(コメントシーケンスはsamozの回答にあります:http://stackoverflow.com/questions/1121701/can-i-preventing-duplicate- content-using-md5#1121713はSpencerのコメントに対処しています) – RichieHindle

+0

MD5は、CPUのコストが低いためこのような状況には適しています。衝突による偽陽性が心配されている場合は、まずMD5を実行し、ヒットしたらSHA-2を使用して衝突ではなく実際のものを確認します(偽陽性)。これは、私たちがやったことですが、必要なときにだけMD5の低CPUコスト99.99999999999%とSHA2の高精度を得ることです。 – srt8driver

3

MD5はうまくいくはずですが、衝突は非常に稀ですが、本当に心配している場合はsha-1も使用できます。

シグネチャは実際にはそれほど大きくないと思いますが、余分な処理サイクルとディスクスペースがある場合は、両方を実行できます。しかし、スペースや速度が限られていれば、私はちょうど1つに行くだろう。

+0

意図的に衝突するのが簡単なのでMD5はうまくありません。 –

+0

だから?正当なコンテンツが最初に投稿されます - > maluserは意図的な衝突を作成します - > maluserはコンテンツを投稿する能力を拒否されます。 –

+0

もう一度正当なコンテンツを投稿してみてください。 –

0

MD5が壊れていて、SHA1が近くにあります。 SHA2を使用してください。 OPからの更新に基づき

編集

、意図的な衝突がここに重大な懸念であることを思えません。意図しないものに対しては、少なくとも64ビットの出力を持つまともなハッシュは問題ありません。

私はまだMD5とSHA1さえ回避しますが、それについて独断的な理由はありません。ツールがここに収まる場合は、是非それを使用してください。

+1

SHA-1がMD5のように壊れているという証拠にリンクできますか? –

+2

この場合、SHA1は過剰殺人だと思います。彼は何かを(パスワードのように)確保しようとはしませんが、重複を防ぎます。 MD5はこの目的のために問題ありません。 –

+0

それに近いですが、まだ壊れていません。 http://an.wikipedia.org/wiki/SHA_hash_functions#SHA-1 –

0

タイムスタンプ+ md5は一緒に安全です。

+3

本当に内容に依存します。例えば2つのイメージはバイト重複の場合はバイトであるが、作成/変更されたタイムスタンプは異なるため、イメージにタイムスタンプを使用することは望ましくありません。 – pdwetz

1

md5で十分です。はい、衝突があるかもしれませんが、起こっている可能性は非常に小さいので、文字通り数十億のコンテンツを追跡していなければ心配しません。

1

あなたは偶然の衝突の本当に恐れている場合は、単にMD5とSHA1ハッシュの両方を行い、それらを比較。両者が一致する場合、それは同じ内容です。いずれかが異なる場合、それは異なる内容です。ハッシュ衝突がある場合

2

なぜ単にバイトのコンテンツバイトを比較していませんか?ハッシュの衝突は非常に稀で、バイトチェックのためにバイトを行うことは非常にまれです。この方法では、アイテムが実際に複製された場合にのみ重複が検出されます。

1

複合アルゴリズムは難読化に役立ちますが、ハッシュアルゴリズムのセキュリティは向上しません。

MD5は、あまりにも、とにかく私見を使用するように壊れています。 MD5ハッシュを鍛造することは、MD5衝突を発生させるコンテンツを偽造できることを実証した研究者によって証明され、所有していないドメイン名のRapidSSLから証明書を購入するための偽造CSRを生み出す扉を開いた。 Security Now! episode 179 explains the process。私にとって

、SHAベースのハッシュは強く、選択は簡単ですので、ほとんどの開発プラットフォームは、それをサポートしています。残りの決定要因はブロックサイズです。

+1

私は、SHA-1が弱点の兆候を示していることを付け加えます。したがって、SHA-2が一般的に推奨されています。 –

関連する問題