web-dev-qa-db-ja.com

異なるハッシュアルゴリズムの衝突率

一般的なハッシュアルゴリズム(md5、crc32、sha- *)の衝突率測定はありますか?

それが出力サイズのみに依存している場合、測定するのは非常に簡単ですが、それは分布とアルゴリズムの内部にも依存していると思います(そして、ある種の正式な証明が必要だと思います)。

19
ts01

MD5のコリジョンを作成しようとすると、シングルコア(Core2、2.4 GHz)を使用して、PCで(平均して)14秒ごとにコリジョンを作成できます。これは、MD5の内部構造の弱点を悪用します。ランダムなデータのみを試し、衝突が発生するのを待つ場合は、かなりの時間待機します。最初の衝突は約2の後に予想されます64 ハッシュされたメッセージ(1000のPCを提供し、約20年間のフルタイムの計算で衝突が発生するはずです)。

現在壊れていない暗号化ハッシュ関数の場合、既知の内部的な弱点はない(つまり、「壊れていない」という意味)ので、ランダムなメッセージを試すことは、衝突を作成するための最もよく知られている方法です。この方法で衝突が発生する可能性は、少なくとも2つハッシュするまでは無視できます。n/2 メッセージ、nビット出力のハッシュ関数用。つまり、出力が256ビット以上の適切なハッシュ関数を使用すると、実際の状況では衝突率はゼロになります(何も得られず、これで話は終わりです)。

Wikipedia は、件名にいくつかのポインタがあります。 応用暗号化のハンドブック の第9章(369ページ)も参照してください。

23
Thomas Pornin