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

1278
Loo Soo Yong

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

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

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

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

Итак, насколько надежны суммы 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
Они, если вы не очень неудачливы или [приложите много усилий (для SHA1)] (http://shattered.io/). С MD5 усилие значительно ниже. Если вы беспокоитесь, используйте варианты SHA2 или SHA3. Jakuje 7 лет назад 0
см. также [принцип голубя] (https://en.wikipedia.org/wiki/Pigeonhole_principle) и [проблема дня рождения] (https://en.wikipedia.org/wiki/Birthday_problem). в целях проверки переноса любой алгоритм будет работать в качестве первого шага - * pigeonhole * говорит нам, что несовпадающая сумма определенно не тот же файл, но ** не ** доказывает, что * совпадающая * сумма * определенно совпадает * , quixotic 7 лет назад 1

1 ответ на вопрос

3
Gordon Davisson

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 в качестве идентификаторов для фрагментов файлов.