MD5 создает один и тот же хэш-код для двух одинаковых двоичных файлов, даже если добавить несколько строк кода второго?
Я создал небольшой автоматизированный антивирусный инструмент, он работает с хеш-кодом MD5. Он берет хэш двоичного файла и сравнивает его с существующими сигнатурами в базе данных.
Предположим, что если автор вредоносного ПО просто поменяет / добавит несколько строк кода вредоносного ПО, он сгенерирует тот же хеш-ключ или другой? Генерирует ли он тот же хэш-ключ, даже если улучшать / изменять код?
3 ответа
В идеале любое изменение в исходном бинарном файле должно генерировать другой хеш. Однако алгоритм MD5 не является устойчивым к столкновениям. Возможно (хотя и несколько маловероятно), что 2 разных двоичных файла генерируют один и тот же хэш.
Весь смысл контрольных сумм в том, что небольшое изменение должно привести к значительному изменению хеша.
При этом коллизии контрольной суммы - это факт жизни, и умные люди могут очень осторожно вносить изменения в код, так что контрольная сумма остается неизменной. Я бы сказал, что в целом это низкий риск, потому что для этого потребуются серьезные усилия.
Это обычно верно для хэш-функции, однако MD5 больше не считается безопасным, как вы можете прочитать здесь.
В марте 2005 года Сяоюнь Ван и Хунбо Ю из Шаньдунского университета в Китае опубликовали статью, в которой они описывают алгоритм, который может найти две разные последовательности по 128 байт с одинаковым хешем MD5.
Это также не является безопасным специально для ссылки на файлы PS.