Допустим, у нас есть миллиард уникальных изображений, один мегабайт каждый. Мы вычисляем хэш SHA-256 для содержимого каждого файла. Возможность столкновения зависит от:
- количество файлов
размер одного файла
Как далеко мы можем пойти, игнорируя эту возможность, предполагая, что она равна нулю?
Ответы:
Обычный ответ звучит так: какова вероятность того, что астероид-изгой упадет на Землю в следующую секунду, уничтожив цивилизацию, как мы знаем, и убив несколько миллиардов человек? Можно утверждать, что любое несчастливое событие с вероятностью ниже, чем на самом деле, не очень важно.
Если у нас есть «идеальная» хэш - функция с выходными размером п , и мы имеем р сообщения в хэш (индивидуальная длина сообщения не имеет значения), то вероятность столкновения составляет около р 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 кажется довольно надежным.
источник
Возможность коллизии зависит не от размера файлов, а только от их количества.
Это пример дня рождения парадокса . Страница Википедии дает оценку вероятности столкновения. Если вы запустите числа, вы увидите, что все жесткие диски, когда-либо созданные на Земле, не могут содержать достаточно файлов размером 1 МБ, чтобы получить вероятность столкновения даже 0,01% для SHA-256.
В принципе, вы можете просто игнорировать возможность.
источник
Прежде всего, это не ноль, а очень близко к нулю .
Ключевой вопрос: что произойдет, если столкновение действительно произойдет? ? Если ответ «атомная электростанция взорвется», то вы, вероятно, не должны игнорировать возможность столкновения. В большинстве случаев последствия не такие страшные, поэтому вы можете игнорировать возможность столкновения.
Также не забывайте, что ваше программное обеспечение (или его небольшая часть) может быть развернуто и одновременно использовано на миллиарде компьютеров (некоторые крошечные встроенные микрокомпьютеры, которые в настоящее время включены почти везде). В таком случае вам нужно умножить полученную оценку на максимально возможное количество копий.
источник