2009-12-08 2 views
59

Учитывая набор из 100 различных строк равной длины, как вы можете количественно оценить вероятность того, что столкновение SHA1 для строк вряд ли возможно??Вероятность столкновений SHA1

+0

уточнить, как вы можете иметь 'разные, но равные длины' струны? – KevinDTimm

+5

@kevindtimm "a", "b", "c" равны длины, но разные строки –

+0

Я предполагаю, что строки имеют длину не менее 20 байтов. В противном случае, очевидно, шансы были бы выше столкновения. :) –

ответ

137

alt text

ли 160 бит хэш-значения генерируется по SHA-1 достаточно большой, чтобы обеспечить отпечатков пальцев каждого блока является уникальным? Предполагая, что случайные значения хэш-функции с распределением равномерной, коллекция п различных блоков данных и хеш- функция, которая генерирует б битов, то вероятность р, что будет один или более столкновений ограничена числом пар блоков умножается на на вероятность столкновения данной пары .

(источник: http://bitcache.org/faq/hash-collision-probabilities)

+9

В заключение, вероятность столкновения составляет порядка 10^-45. Это очень, очень маловероятно. –

+3

Но SHA-1 не является равномерным распределением, оно может быть больше, чем эта верхняя граница. Я сомневаюсь, что это уравнение неверно. Как минимум EQUAL. – Kamel

+1

Этот ответ не учитывает китайское открытие в 2005 году, где они могут создавать столкновения в итерациях 2^69, а не 2^80, спроецированные грубой силой https://www.schneier.com/blog/archives /2005/02/sha1_broken.html – Djarid

2

Это Birthday Problem - статья дает приятные аппроксимации, которые позволяют легко оценить вероятность. Фактическая вероятность будет очень очень низкой - см. Пример this question.

3

Хорошо, вероятность столкновения будет равна 1 - ((2^160 - 1)/2^160) * ((2^160 - 2)/2^160) * ... * ((2^160 - 99)/2^160).

Подумайте о вероятности столкновения 2 предметов в пространстве 10. Первый элемент уникален с вероятностью 100%. Вторая уникальна с вероятностью 9/10. Таким образом, вероятность того, что оба уникальны, составляет 100% * 90%, а вероятность столкновения равна 1 - (100% * 90%) или 1 - ((10 - 0)/10) * ((10 - 1)/10), или 1 - ((10 - 1)/10).

Это маловероятно. У вас должно быть много строк, чтобы это была отдаленная возможность.

Посмотрите на таблицу на this page on Wikipedia; просто интерполировать между строками для 128 бит и 256 бит.

Смежные вопросы