Безопасно ли игнорировать возможность столкновений SHA на практике? - PullRequest
194 голосов
/ 25 октября 2010

Допустим, у нас есть миллиард уникальных изображений, по одному мегабайту каждое. Мы вычисляем хэш SHA-256 для содержимого каждого файла. Возможность столкновения зависит от:

  • количество файлов
  • размер отдельного файла

Как далеко мы можем пойти, игнорируя эту возможность, предполагая, что это ноль?

Ответы [ 3 ]

354 голосов
/ 25 октября 2010

Обычный ответ звучит так: какова вероятность того, что астероид-изгой упадет на Землю в следующую секунду, уничтожив цивилизацию, какой мы ее знаем, и убив несколько миллиардов человек?Можно утверждать, что любое неудачное событие с вероятностью ниже, чем на самом деле, не очень важно.

Если у нас есть «идеальная» хеш-функция с выходным размером n , и мы имеем p сообщений в хэш (длина отдельного сообщения не важна), тогда вероятность коллизии составляет около p 2 / 2 n + 1 (это приближение, которое справедливо для «малых» p , то есть существенно меньше, чем 2 n / 2 ).Например, для SHA-256 ( n = 256 ) и одного миллиарда сообщений ( p = 10 9 ) вероятность составляет около 4,3 *10 -60 .

Космическая скала массового убийцы случается в среднем каждые 30 миллионов лет.Это приводит к вероятности возникновения такого события в следующую секунду примерно до 10 -15 .Это 45 порядков вероятнее, чем столкновение SHA-256.Вкратце, если вы обнаружите, что коллизии SHA-256 страшные, тогда ваши приоритеты неверны.

В настройках безопасности, когда злоумышленник выбирает сообщения, которые будут хэшироваться, злоумышленник может использовать значительно больше, чеммиллиард сообщений;тем не менее, вы обнаружите, что вероятность успеха злоумышленника будет по-прежнему мала.В этом весь смысл использования хеш-функции с 256-битным выходом: чтобы можно было избежать рисков коллизий.

Конечно, все вышеперечисленное предполагает, что SHA-256 является "идеальной" хеш-функцией, что далеко не доказано.Тем не менее, SHA-256 кажется довольно надежным.

46 голосов
/ 25 октября 2010

Возможность коллизии не зависит от размера файлов, только от их количества.

Это пример парадокса дня рождения . На странице Википедии дается оценка вероятности столкновения. Если вы запустите числа, вы увидите, что все жесткие диски, когда-либо созданные на Земле, не могут вместить достаточно файлов размером 1 МБ, чтобы вероятность столкновения даже для 0.01 SHA была равной 0.01%.

По сути, вы можете просто игнорировать возможность.

17 голосов
/ 25 октября 2010

Прежде всего, это не ноль, но очень близко к нулю .

Ключевой вопрос: что происходит, если столкновение действительно происходит ?Если ответ «атомная электростанция взорвется», то вы, вероятно, не должны игнорировать вероятность столкновения.В большинстве случаев последствия не столь страшны, и поэтому вы можете игнорировать возможность столкновения.

Также не забывайте, что ваше программное обеспечение (или его малая часть) может быть развернуто и одновременно использовано в миллиардекомпьютеры (некоторые крошечные встроенные микрокомпьютеры, которые в настоящее время есть почти везде).В таком случае вам нужно умножить полученную оценку на максимально возможное количество копий.

...