Обычный ответ звучит так: какова вероятность того, что астероид-изгой упадет на Землю в следующую секунду, уничтожив цивилизацию, как мы знаем, и убив несколько миллиардов человек? Можно утверждать, что любое несчастливое событие с вероятностью ниже, чем на самом деле, не очень важно.
Если у нас есть «идеальная» хэш - функция с выходными размером п , и мы имеем р сообщения в хэш (индивидуальная длина сообщения не имеет значения), то вероятность столкновения составляет около р 2 /2 п + 1 (это приближение , которое действителен для «малого» р , то есть существенно меньше, чем 2 н / 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 кажется довольно надежным.