27

Насколько точен этот процесс при использовании md5sum для проверки целостности файла?

Означает ли подтвержденный MD5, что КАЖДЫЙ бит точно такой же, или есть пороговое значение, которое необходимо преодолеть, прежде чем двоичное изменение будет отражено в MD5?

Любая документация о том, как генерируется md5, также приветствуется.

3 ответа3

65

MD5 сломан для этой цели против интеллектуального противника. Можно злонамеренно создать два разных блока данных, которые производят один и тот же хэш MD5.

Однако вполне целесообразно (хотя есть почти наверняка лучшие способы) использовать MD5 для защиты от непреднамеренного повреждения данных при передаче или хранении. Хотя вполне возможно, что такое событие может привести к тому, что хеш-код MD5 будет одинаковым, вероятность настолько мала, что это почти невозможно представить, о чем стоит беспокоиться. Отказы, вызванные фоновым излучением, туннелированием, статическими помехами и десятками других источников, будут на несколько порядков более вероятными.

Даже если у вас есть квадриллион единиц данных, вероятность того, что несовпадающий MD5 вызовет хэш MD5, принадлежащий одному из этих квадриллионов, намного меньше единицы в квадриллионе.

26

MD5 - это хеш. Он в основном отображает все содержимое файла в небольшую строку длиной 16 байтов IIRC.

Очевидно, будет несколько файлов, которые хэшируют к одной и той же сумме MD5. Следовательно, совпадающая сумма MD5 не является гарантией точного совпадения между файлами.

Там нет порога как такового, потому что работает хэши. Таким образом, сумма MD5 может обнаружить даже одно-битное изменение. Однако большое количество изменений в одном бите может привести к тому, что хеш MD5 будет одинаковым. Поэтому вполне разумно использовать MD5 для проверки целостности файла на случайное повреждение, но нет, если злонамеренные намерения возможны, так как кто-то может изменить файл, убедившись, что хеш-код MD5 такой же.

17

MD5-хэш состоит из 128 бит. Один перевернутый бит в источнике переворачивает (в среднем) 64 бита в хэше.

Вероятность случайного столкновения двух хешей составляет 1/2 ^ 128, что составляет 1 на 340 унцециллион 282 дециллиона 366 ниллион 920 октиллион 938 септиллион 463 квинтиллион 373 квадриллион 604 триллион 607 триллион 431 миллиард 768 миллионов 211 тысяч 456.

Однако, если вы сохраняете все хеши, то благодаря парадоксу вероятность рождения немного выше. Чтобы иметь 50% вероятности столкновения хешей, вам нужно 2 ^ 64 хешей. Это означает, что для получения коллизии в среднем вам потребуется хэшировать 6 миллиардов файлов в секунду в течение 100 лет.

Источник: porneL, https://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .