17

Кажется, что MD5 имеет хорошо документированные уязвимости, и все же он широко используется. У кого-нибудь есть причины, по которым он остается жизнеспособным вариантом, когда другие альтернативы (например, SHA-2) кажутся более надежными?

5 ответов5

16

Это быстро генерируется, и часто тот факт, что столкновения теоретически возможны, не является большой проблемой. т.е. проверка того, был ли изменен кэшированный файл, чтобы избежать загрузки новой копии.

Быстрый тест, проведенный в 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 для той же информации.

10

Хеш MD5 достаточно хорош для большинства простых задач. Напомним, что до сих пор невероятно сложно создавать значимые коллизии при одном и том же количестве байтов.

Например, скажем, вы загрузите новую Ubuntu 9.10 на следующей неделе с доверенного зеркала. Вы хотите убедиться, что файл был загружен правильно и полностью. Просто запустите MD5 и хэшируйте ISO. Сравните хеш с опубликованным хешем. Если хэши совпадают, вы можете быть уверены, что ISO был скопирован правильно и полностью.

4
  1. Это коротко - легче читать.
  2. Это широко распространено - отличная совместимость с другими системами
  3. Это обычно - все просто привыкли к этому.

и безопасность может быть улучшена с засолкой.

3

MD5 широко используется в качестве хэш-функции контрольной суммы, потому что она быстра и имеет чрезвычайно низкий коэффициент столкновений. Контрольная сумма MD5 состоит из 32 шестнадцатеричных цифр, которые вместе дают шансы столкновения 1 в ~ 3.42e34. Вы можете теоретически хэшировать все файлы на всех компьютерах в стране размером с США и не создавать коллизии (*).

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


(*) для большинства целей контрольной суммы столкновение имеет смысл только в том случае, если оно происходит между двумя объектами одинакового происхождения и одинакового размера. Несмотря на высокую вероятность уникальности MD5, в конечном итоге могут возникнуть коллизии между двумя совершенно разными файлами. Скажем, файл базы данных 1,5 Мб и файл GIF 35 КБ. Для большинства целей это бессмысленное столкновение. Тем более, что MD5 - это всего лишь один элемент индексации файлов. Размер файла является еще одним важным.

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .