Алгоритм MD4 Message-Digest — это криптографическая хеш-функция, разработанная Рональдом Ривестом в 1990 году. [3] Длина дайджеста составляет 128 бит. Алгоритм оказал влияние на более поздние разработки, такие как алгоритмы MD5 , SHA-1 и RIPEMD . Аббревиатура «MD» означает «Message Digest».
Безопасность MD4 была серьезно скомпрометирована. Первая полная атака коллизий против MD4 была опубликована в 1995 году, и с тех пор было опубликовано несколько новых атак. По состоянию на 2007 год атака может генерировать коллизии менее чем за две операции хеширования MD4. [2] Также существует теоретическая атака прообраза .
Вариант MD4 используется в схеме URI ed2k для предоставления уникального идентификатора файла в популярных сетях eDonkey2000 / eMule P2P. MD4 также использовался протоколом rsync (до версии 3.0.0).
MD4 используется для вычисления дайджестов ключей, полученных из паролей NTLM, в Microsoft Windows NT, XP, Vista, 7, 8, 10 и 11. [4]
Слабости MD4 были продемонстрированы Деном Буром и Босселаерсом в статье, опубликованной в 1991 году. [5] Первая полнораундовая атака коллизий MD4 была обнаружена Гансом Доббертином в 1995 году, и на то время ее реализация занимала всего несколько секунд. [6] В августе 2004 года Ван и др. обнаружили очень эффективную атаку коллизий, наряду с атаками на более поздние конструкции хэш-функций в семействе MD4/MD5/SHA-1/RIPEMD. Этот результат был позже улучшен Сасаки и др., и генерация коллизии теперь так же дешева, как и ее проверка (несколько микросекунд). [2]
В 2008 году стойкость прообраза MD4 была также сломана Гаэтаном Лёрентом с помощью атаки 2 102. [7] В 2010 году Го и др. опубликовали атаку 2 99,7 . [8]
В 2011 году в документе RFC 6150 было заявлено, что документ RFC 1320 (MD4) является историческим (устаревшим).
128-битные (16-байтовые) хэши MD4 (также называемые дайджестами сообщений ) обычно представляются как 32-значные шестнадцатеричные числа. Ниже показан 43-байтовый ввод ASCII и соответствующий хэш MD4:
MD4("Быстрая коричневая лиса перепрыгивает через ленивую собаку ")= 1bee69a46ba811185c194762abaeae90
Даже небольшое изменение в сообщении (с огромной вероятностью) приведет к совершенно другому хешу, например, к изменению d
на c
:
MD4("Быстрая коричневая лиса перепрыгивает через ленивого козла ")= б86е130це7028да59е672д56ад0113дф
Хэш строки нулевой длины:
MD4("") = 31d6cfe0d16ae931b73c59d7e0c089c0
Следующие тестовые векторы определены в RFC 1320 (алгоритм MD4 Message-Digest):
MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0MD4 ("а") = bde52cb31de33e46245e05fbdbd6fb24MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729dMD4 («дайджест сообщения») = d9130a8164549fe818874806e1c7014bMD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536
Позволять:
k1 = 839c7a4d7a92cb 5 678a5d5 b 9eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed d 45e51fe39708bf9427e 9c3e8b9 k2 = 839c7a4d7a92cb d 678a5d5 2 9eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed c 45e51fe39708bf9427e 9c3e8b9
MD4(k1) = MD4(k2) = 4d7e6a1defa93d2dde05b45d864c429b
Обратите внимание, что две шестнадцатеричные цифры k1 и k2 определяют один байт входной строки, длина которой составляет 64 байта.
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )Выведение ключа из пароля описано в [RFC1320] и [FIPS46-2].
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь )