Могут ли два разных файла прошивки иметь такую ​​же сумму md5?

Может ли два разных двоичных файла иметь одну и ту же сумму md5? Один двоичный файл прошивки имеет другой номер версии и помечен как исправленный, исправлена ​​небольшая ошибка. Но оба файла имеют одинаковую сумму md5, я бы предположил, что пересмотренный файл не может иметь ту же сумму md5 - может быть, это ошибка?

1
задан 10 October 2016 в 07:14

5 ответов

Конечно. Известность уязвимости MD5 хорошо известна (см. Crypto.SE, Wikipedia). Хотя это все еще маловероятное событие, это можно сделать. Однако, в вашем случае, я бы заподозрил ошибку в копировании файлов.

18
ответ дан 23 May 2018 в 05:22
  • 1
    В моем случае не было md5, указанного для файлов FW, я сам проверил его. Я думаю, что есть ошибка, файлы такие же, хотя и отмечены как разные версии. – minto 9 October 2016 в 14:46
  • 2
    @minto, предполагая, что вы не ошиблись при загрузке файлов, это должно быть ошибкой на сервере (или они молча заменили также версию прошивки с ошибкой) – muru 9 October 2016 в 14:48
  • 3
    @mint вы можете проверить, совпадают ли эти два файла с diff file1 file2. Если команда молчат, то они одинаковы. – Rmano 9 October 2016 в 17:23
  • 4
    «Я бы заподозрил ошибку в копировании файлов» . Шансы на случай, когда это происходит случайно, - это в основном 0. Если два файла имеют один и тот же md5, то они являются одним и тем же файлом, или один из них намеренно (злонамеренно) изменен, чтобы иметь тот же MD5, что и другой. – BlueRaja - Danny Pflughoeft 10 October 2016 в 00:18
  • 5
    @ BlueRaja-DannyPflughoeft Я не согласен. Я загрузил файлы и случайно сохранил один и тот же файл в разных именах файлов (при попытке загрузить их снова, потому что исходная загрузка по какой-то причине не работала). Человеческая ошибка также вполне возможна на стороне сервера. – muru 10 October 2016 в 07:13

Как правило, два файла могут иметь один и тот же хеш md5, только если их содержимое точно такое же. Даже один бит вариации будет генерировать совершенно другое значение хэша.

Однако существует одна предостерегаемость: сумма md5 составляет 128 бит (16 байт). Так как число различных возможных содержимого файла бесконечно, а число различных возможных сумм md5 конечно, в большинстве случаев вероятность (хотя и небольшая вероятность) столкновения хэшей. Другими словами, два разных файла могут выдавать одну и ту же сумму при хэшировании с помощью md5.

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

Примеры более высоких хэш-бит включают семейство хешей SHA-2, особенно sha256, sha384 или sha512 (что является лучшим.) Число после sha указывает количество бит, которые генерирует соответствующий алгоритм хеширования.

10
ответ дан 23 May 2018 в 05:22
  • 1
    Если один файл прошивки был пересмотрен, и произошли некоторые изменения, то сумма md5 не может быть одинаковой в любом случае. Я использовал diff -q <file1> <file2> для сравнения файлов, и он показывает, что файлы идентичны. – minto 9 October 2016 в 14:22
  • 2
    «Два файла могут иметь один и тот же хэш-файл md5, только если их содержимое является точно таким же, даже один бит вариации будет генерировать совершенно другое значение хэша. " - Это не верно. Из-за принципа Pigeonhole на самом деле существует бесконечное количество файлов, имеющих один и тот же хэш. – Jörg W Mittag 9 October 2016 в 14:36
  • 3
    @ JörgWMittag Проверьте пункт оговорки сразу после: – heemayl 9 October 2016 в 14:37
  • 4
    heemayl, @ JörgWMittag прав. Я предложил редактирование, которое улучшает этот очень хороший ответ, чтобы быть точным и больше не поддаваться нитпикам. ;) (Я надеюсь.) :) – Wildcard 9 October 2016 в 18:43
  • 5
    Для двоичных (нетекстовых) файлов используйте cmp, а не diff. – waltinator 9 October 2016 в 21:06

Как говорили другие, столкновение MD5 гипотетически возможно, но крайне неправдоподобно (1 из 2 ^ 128 - это только 1 из 340,282,366,920,997,463,768,211,456), и у вас, скорее всего, есть ошибка копирования файлов.

Я бы рекомендовал выполнить побайтное сравнение двух файлов, используя один из многих методов, описанных здесь: https://superuser.com/questions/125376/how-do-i-compare-binary-files- in-linux.

Или просто diff file1 file2 - и если вы не получите сообщение «Двоичные файлы file1 и file2 differ», файлы будут одинаковыми.

3
ответ дан 23 May 2018 в 05:22
  • 1
    В значительной степени тот же ответ, что и муру. – TheWanderer 9 October 2016 в 23:46
  • 2
    @Zacharee - в моем первом предложении я признал те ответы, которые были до этого. Во-вторых, я направил читателя на решение. – Dewi Morgan 10 October 2016 в 00:00
  • 3
    если ваш ответ действительно не добавит гораздо больше, чем ссылку, было бы лучше, чем комментарий – TheWanderer 10 October 2016 в 00:57

Все приведенные выше ответы игнорируют наиболее важные детали:

Контрольная сумма MD5 определена как 128 бит. Это означает, что существует только 2 ^ 128 различных значений MD5. Сколько различных изображений прошивки возможно? Ну, это зависит от того, насколько они велики, и зависит от того, какой процент случайных байтовых последовательностей можно считать действительной прошивкой. Скорее всего, есть более чем 2 ^ 128 возможных изображений прошивки.

Гораздо больше, что означает, что должны быть дубликаты.

Но вероятность того, что любой лот образ прошивки, соответствующий заданной контрольной сумме MD5, является только 1 из 2 ^ 128, что является очень маленьким числом.

задано small.

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

Это случайно [!d11 ]. должен - другой вопрос. Если вы работаете в NSA, тогда 128 бит не будет достаточным количеством бит, чтобы удовлетворить ваших боссов, а MD5 обнаружил уязвимости, которые делают его более слабым, чем 128 бит.

Но если вы были работая в NSA, тогда вы, наверное, уже знали это.

1
ответ дан 23 May 2018 в 05:22

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

0
ответ дан 23 May 2018 в 05:22

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

Похожие вопросы: