Кажется, что MD5 имеет хорошо документированные уязвимости, и все же он широко используется. У кого-нибудь есть причины, по которым он остается жизнеспособным вариантом, когда другие альтернативы (например, SHA-2) кажутся более надежными?
5 ответов
Это быстро генерируется, и часто тот факт, что столкновения теоретически возможны, не является большой проблемой. т.е. проверка того, был ли изменен кэшированный файл, чтобы избежать загрузки новой копии.
Быстрый тест, проведенный в 1996 году, показывает следующее:
Digest Performance in MegaBytes per Second
Pentium P5 Power Mac SPARC 4 DEC Alpha
90 MHz 80 MHz 110 MHz 200 MHz
MD5 13.1 3.1 5.1 8.5
SHA1 2.5 1.2 2.0 3.3
Для современного использования - на встроенных чипах MD5 может быть в 2-3 раза быстрее, чем SHA1 для той же информации.
Хеш MD5 достаточно хорош для большинства простых задач. Напомним, что до сих пор невероятно сложно создавать значимые коллизии при одном и том же количестве байтов.
Например, скажем, вы загрузите новую Ubuntu 9.10 на следующей неделе с доверенного зеркала. Вы хотите убедиться, что файл был загружен правильно и полностью. Просто запустите MD5 и хэшируйте ISO. Сравните хеш с опубликованным хешем. Если хэши совпадают, вы можете быть уверены, что ISO был скопирован правильно и полностью.
- Это коротко - легче читать.
- Это широко распространено - отличная совместимость с другими системами
- Это обычно - все просто привыкли к этому.
и безопасность может быть улучшена с засолкой.
MD5 широко используется в качестве хэш-функции контрольной суммы, потому что она быстра и имеет чрезвычайно низкий коэффициент столкновений. Контрольная сумма MD5 состоит из 32 шестнадцатеричных цифр, которые вместе дают шансы столкновения 1 в ~ 3.42e34. Вы можете теоретически хэшировать все файлы на всех компьютерах в стране размером с США и не создавать коллизии (*).
Для криптографии MD5 является допустимой альтернативой, если безопасность является лишь умеренной проблемой. Это очень жизнеспособный вариант для хеширования паролей базы данных или других полей, требующих в основном своей внутренней безопасности для своей скорости, но также и потому, что MD5 действительно предлагает разумный уровень безопасности, где сильное шифрование не является проблемой.
(*) для большинства целей контрольной суммы столкновение имеет смысл только в том случае, если оно происходит между двумя объектами одинакового происхождения и одинакового размера. Несмотря на высокую вероятность уникальности MD5, в конечном итоге могут возникнуть коллизии между двумя совершенно разными файлами. Скажем, файл базы данных 1,5 Мб и файл GIF 35 КБ. Для большинства целей это бессмысленное столкновение. Тем более, что MD5 - это всего лишь один элемент индексации файлов. Размер файла является еще одним важным.
MD5 широко используется, потому что он широко использовался, и разрывы еще не настолько значительны, чтобы быть очевидной проблемой в существующих системах.