При использовании $n$-битный хеш, вероятность того, что случайный изменение проходит незамеченным вот-вот $2^{-n}$ (для хэшей, которые даже слегка соответствуют своим целям дизайна).
Если кто-то использует эту технику один раз в секунду в течение 100 лет со 128-битным хэшем, таким как MD5, эта вероятность равна $36524\times86400\times2^{-128}\приблизительно2^{31,6-128}=2^{-96,4}$.
Мы знаем о 44 кратеры на Земле, вызванное столкновением с небесным телом, достаточно большим, чтобы нанести серьезный удар по нашей современной цивилизации, которое произошло в течение последних 2,3 млрд лет. Таким образом, вероятность разрушившего цивилизацию события в течение этих 100 лет составляет по крайней мере $44\times100/(2,3\times10^9)\приблизительно2^{-19}$ (и я настроен здесь оптимистично: рукотворное ядерное уничтожение, пожалуй, более вероятно). Таким образом, нет смысла беспокоиться о вероятности только $2^{-96.4}$.
Но в криптографии мы считаем противники которые активно пытаются победить нас. Если мы используем 128-битный хэш (например, MD5) и создаем много файлов (например, $2^{31.6}$ как указано выше, чьи хэши подходят для USB-накопителя емкостью 64 ГБ), и иметь сильных противников с такими же ресурсами, которые тратятся впустую при майнинге биткойнов¹, тогда вероятность того, что они найдут файл с таким же хэшем, как у одного из нас, становится значительной (хотя и не в этом суть). я бы побеспокоился).
Реальная и непосредственная опасность возникает, если мы предположим, что злоумышленникам удастся проникнуть в программное обеспечение, которое мы используем для сохранения наших (скажем, PDF) файлов, и мы достаточно глупы, чтобы использовать MD5 или SHA-1, чья устойчивость к коллизиям с выбранным префиксом нарушена. Теперь злоумышленники могут легко создавать файлы с теми же MD5 или SHA-1, что и у любого из наших файлов, которые выглядят именно так, как злоумышленники считают нужным при просмотре.
Для моей цели (просто проверка достоверности данных), что бы вы порекомендовали?
Игнорирование возможности враждебных модификаций не по теме в криптогруппе. Если мы это сделаем, CRC будет достаточно. 64-битная нормально. Единственное, чего следует опасаться, это того, что средства массовой информации могут использовать CRC для внутренних целей, и они будут вмешиваться. Из-за недостатка информации выбор случайного 64-битного примитивного CRC имеет смысл.
Вернемся к криптографии и ее состязательной модели: следует использовать непрерывные хэши, такие как семейства SHA-2 или SHA-3. Если не считать прорыва, которого мало кто ожидает, SHA-256 будет достаточно безопасным, по крайней мере, в течение десяти лет, SHA-512 навсегда (в человеческом масштабе), даже если мы предполагаем, что когда-либо получим Криптографически значимые квантовые компьютеры.
¹ Я говорю об общей электрической мощности и потраченных впустую интегральных схемах. Однако большая часть этого не будет предназначена для массового параллельного хэширования с помощью ASIC, как при майнинге биткойнов. Это было бы для быстрой памяти, организованной для поиска, поскольку вычисление хэшей MD5 имеет низкую стоимость по сравнению с сопоставлением их с $ 2 ^ {\ приблизительно 31,6} $ целевые хэши.