Можно ли вообще игнорировать возможность столкновений SHA?

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

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

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

Ответ 1

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

Если у нас есть "идеальная" хеш-функция с размером вывода 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 кажется довольно надежным.

Ответ 2

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

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

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

Ответ 3

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

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

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