Насколько надежны суммы SHA1 и MD5 для очень больших файлов?

Я постоянно передаю образы дисков и образы виртуальных машин (обычно от 800 ГБ до почти 1 ТБ на файл) на облачный сервер через rclone с использованием SSH, и мне интересно, насколько надежны sha1sum и md5sum, когда дело доходит до проверки целостности очень больших файлов.

Я нашел это: Как я могу проверить, что файл 1 TB передан правильно?

Однако это имеет отношение к производительности, а не к надежности сгенерированных хэшей.

Может ли быть вероятность того, что другой файл будет использовать те же хеши, сгенерированные с учетом того, что существует так много разных файлов?

Итак, насколько надежны суммы MD5 и SHA-1 для очень больших файлов? Благодарю.

Я также выяснил это в отношении столкновения: https://stackoverflow.com/questions/4032209/is-md5-still-good-enough-to-uniquely-identify-files

https://www.theregister.co.uk/2017/02/23/google_first_sha1_collision/

1 ответ

Решение

MD5 и SHA-1 прекрасно подходят для обнаружения случайных повреждений / изменений в файлах. Вероятность того, что случайно измененный файл будет иметь тот же дайджест MD5, равен 1 на 2 128 = 340 282 366 920 938 463 463 374 607 431 768 211 456. Вероятность случайного столкновения SHA-1 еще меньше, один на 2^160. Если мы говорим о поиске случайных совпадений среди коллекции файлов (известной как проблема дня рождения), вам потребуется около 2^64 = 18 миллиардов миллиардов, прежде чем коллизия MD5 станет вероятной. Обратите внимание, что размер файлов не имеет значения; имеет значение количество задействованных файлов.

Но ни MD5, ни SHA-1 недостаточно для защиты от злонамеренной замены файлов или для предоставления надежного уникального идентификатора для файлов. Например, если вы используете любой из них, кто-то может дать вам один файл, подсчитать хеш-дайджест, а затем обмануть вас, подменив его другим файлом с таким же хешем. Или отправьте два файла с одинаковым хешем, что может запутать вашу систему.

Кстати, случайное / злонамеренное различие немного потеряно. Предположим, кто-то нашел два PDF-файла, которые Google создал с тем же хешем SHA-1, подумал: "Это круто! Я должен сохранить их на потом", а затем попытался использовать вашу систему для их хранения и распространения... таким образом нарушая сортировку системы случайно. Если что-то подобное возможно, лучше использовать SHA-256.

РЕДАКТИРОВАТЬ: BitErrant похож на то, что я описал в предыдущем абзаце: это эксплойт против BitTorrent, использующий тот факт, что BitTorrent использует контрольные суммы SHA-1 в качестве идентификаторов для фрагментов файлов.

Другие вопросы по тегам