web-dev-qa-db-fra.com

Probabilité de collisions SHA1

Étant donné un ensemble de 100 chaînes différentes de longueur égale, comment pouvez-vous quantifier la probabilité qu'une collision SHA1 digest pour les chaînes soit peu probable ...?

66
eastafri

alt text

Les valeurs de hachage de 160 bits générées par SHA-1 sont-elles suffisamment grandes pour garantir que l'empreinte digitale de chaque bloc est unique? En supposant des valeurs de hachage aléatoires avec une distribution uniforme, une collection de n blocs de données différents et une fonction de hachage qui génère b bits, la probabilité p qu'il y aura une ou plusieurs collisions est limitée par le nombre de paires de blocs multiplié par la probabilité que une paire donnée va entrer en collision.

(source: http://bitcache.org/faq/hash-collision-probabilities )

143
Peter

Eh bien, la probabilité d'une collision serait:

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

Pensez à la probabilité d'une collision de 2 éléments dans un espace de 10. Le premier élément est unique avec une probabilité de 100%. Le second est unique avec une probabilité de 9/10. Ainsi, la probabilité que les deux soient uniques est 100% * 90%, Et la probabilité d'une collision est:

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

C'est assez improbable. Il faudrait avoir beaucoup plus de chaînes pour que ce soit une possibilité à distance.

Jetez un oeil au tableau sur cette page sur Wikipedia ; juste interpoler entre les lignes pour 128 bits et 256 bits.

5
Anthony Mills

C'est problème d'anniversaire - l'article fournit de belles approximations qui permettent d'estimer assez facilement la probabilité. La probabilité réelle sera très très très faible - voir cette question pour un exemple.

3
sharptooth