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