web-dev-qa-db-ja.com

SHA1衝突の確率

同じ長さの100個の異なる文字列のセットがある場合、文字列のSHA1ダイジェスト衝突が発生する可能性が低い確率をどのように定量化できますか?

66
eastafri

alt text

SHA-1によって生成される160ビットのハッシュ値は、すべてのブロックのフィンガープリントが一意であることを保証するのに十分な大きさですか?一様分布のランダムハッシュ値、n個の異なるデータブロックのコレクション、bビットを生成するハッシュ関数を想定すると、1つ以上の衝突が発生する確率pは、ブロックのペアの数に確率特定のペアが衝突します。

(ソース: http://bitcache.org/faq/hash-collision-probabilities

143
Peter

さて、衝突の確率は次のようになります。

1 - ((2^160 - 1) / 2^160) * ((2^160 - 2) / 2^160) * ... * ((2^160 - 99) / 2^160)

10のスペースで2つのアイテムが衝突する確率を考えます。最初のアイテムは、100%の確率で一意です。 2番目は確率9/10で一意です。したがって、両方が一意である確率は_100% * 90%_であり、衝突の確率は次のとおりです。

1 - (100% * 90%), or 1 - ((10 - 0) / 10) * ((10 - 1) / 10), or 1 - ((10 - 1) / 10)

ありそうもない。リモートで使用するには、さらに多くの文字列が必要になります。

Wikipediaのこのページ ;の表をご覧ください。 128ビットと256ビットの行間を補間するだけです。

5
Anthony Mills

誕生日の問題 -この記事では、確率の推定を非常に簡単にするニース近似を提供しています。実際の確率は非常に非常に低くなります-例については この質問 を参照してください。

3
sharptooth