Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

MD5 был разработан Ривест в 1991 году , чтобы заменить более раннюю хэш - функции MD4 , [4] и был определен в 1992 году в RFC 1321 .

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

Слабые стороны MD5 использовались в полевых условиях, наиболее печально известная вредоносная программа Flame в 2012 году. Институт программной инженерии CMU считает MD5 по существу «криптографически взломанным и непригодным для дальнейшего использования». [5]

По состоянию на 2019 год MD5 продолжает широко использоваться, несмотря на его хорошо задокументированные недостатки и устаревание экспертами по безопасности. [6]

История и криптоанализ [ править ]

MD5 - это один из серии алгоритмов дайджеста сообщений , разработанных профессором Рональдом Ривестом из Массачусетского технологического института (Rivest, 1992). Когда аналитические исследования показали, что предшественник MD5, MD4, вероятно, был небезопасен, Ривест разработал MD5 в 1991 году как безопасную замену. ( Ганс Доббертин действительно позже обнаружил слабые места в MD4.)

В 1993 году Ден Бур и Босселэрс дали ранний, хотя и ограниченный, результат обнаружения « псевдоколлизии » функции сжатия MD5 ; то есть два разных вектора инициализации, которые производят идентичный дайджест.

В 1996 г. Доббертин объявил о коллизии функции сжатия MD5 (Доббертин, 1996). Хотя это не была атака на полную хеш-функцию MD5, криптографы могли рекомендовать переход на замену, например SHA-1 или RIPEMD-160 .

Размер хеш-значения (128 бит) достаточно мал, чтобы представить себе атаку по случаю дня рождения . MD5CRK был распределенным проектом, начатым в марте 2004 года с целью продемонстрировать, что MD5 практически небезопасен, путем обнаружения коллизии с помощью атаки дня рождения.

MD5CRK завершился вскоре после 17 августа 2004 года, когда о конфликтах для полного MD5 объявили Сяоюнь Ван , Дэнго Фэн, Сюэцзя Лай и Хунбо Ю. [7] [8] Их аналитическая атака на кластер IBM p690, как сообщается, заняла всего один час . [9]

1 марта 2005 г. Арьен Ленстра , Сяоюнь Ван и Бенн де Вегер продемонстрировали создание двух сертификатов X.509 с разными открытыми ключами и одним и тем же значением хеш-функции MD5, что явилось очевидным практическим конфликтом. [10] Конструкция включала закрытые ключи для обоих открытых ключей. Несколькими днями позже Властимил Клима описал улучшенный алгоритм, способный создавать коллизии MD5 за несколько часов на одном ноутбуке. [11] 18 марта 2006 года Клима опубликовал алгоритм, который может обнаруживать столкновение в течение одной минуты на одном ноутбуке, используя метод, который он называет туннелированием. [12]

Были опубликованы различные ошибки RFC, связанные с MD5 . В 2009 году киберкомандование США использовало хеш-значение MD5 в заявлении о миссии как часть своей официальной эмблемы. [13]

24 декабря 2010 года Тао Се и Дэнгуо Фэн объявили о первом опубликованном конфликте MD5 одиночных блоков (512 бит). [14] (Предыдущие обнаружения столкновений основывались на многоблочных атаках.) По «соображениям безопасности» Се и Фэн не раскрыли новый метод атаки. Они бросили вызов криптографическому сообществу, предложив вознаграждение в размере 10 000 долларов США первому обнаружившему другую 64-байтовую коллизию до 1 января 2013 года. Марк Стивенс ответил на этот вызов и опубликовал конфликтующие одноблочные сообщения, а также алгоритм построения и источники. [15]

В 2011 году был утвержден информационный RFC 6151 [16] для обновления соображений безопасности в MD5 [17] и HMAC-MD5. [18]

Безопасность [ править ]

Безопасность хеш-функции MD5 серьезно нарушена. Существует коллизионная атака, которая может обнаруживать коллизии в течение нескольких секунд на компьютере с процессором Pentium 4 2,6 ГГц (сложность 2 24,1 ). [19] Кроме того, существует также атака коллизии с выбранным префиксом, которая может вызвать коллизию для двух входов с указанными префиксами в течение нескольких секунд с использованием стандартного вычислительного оборудования (сложность 239 ). [20] Способности обнаруживать коллизии в значительной степени способствовало использование готовых графических процессоров.. На графическом процессоре NVIDIA GeForce 8400GS можно вычислить 16–18 миллионов хэшей в секунду. NVIDIA GeForce 8800 Ultra может вычислять более 200 миллионов хэшей в секунду. [21]

Эти хэш-атаки и коллизионные атаки были продемонстрированы публично в различных ситуациях, включая коллизию файлов документов [22] [23] и цифровых сертификатов . [24] По состоянию на 2015 год было продемонстрировано, что MD5 по-прежнему достаточно широко используется, особенно в компаниях, занимающихся исследованиями безопасности и антивирусными компаниями. [25]

По данным на 2019 год, четверть широко используемых систем управления контентом по-прежнему используют MD5 для хеширования паролей . [6]

Обзор проблем безопасности [ править ]

В 1996 году в конструкции MD5 был обнаружен изъян. Хотя в то время это не считалось фатальной слабостью, криптографы начали рекомендовать использование других алгоритмов, таких как SHA-1 , который с тех пор также оказался уязвимым. [26] В 2004 году было показано, что MD5 не устойчив к столкновениям . [27] Таким образом, MD5 не подходит для таких приложений, как сертификаты SSL или цифровые подписи, которые полагаются на это свойство для цифровой безопасности. Также в 2004 году исследователи обнаружили более серьезные недостатки в MD5 и описали возможную коллизионную атаку - метод создания пары входных данных, для которых MD5 производит идентичные контрольные суммы .[7] [28] Дальнейшие успехи были достигнуты в взломе MD5 в 2005, 2006 и 2007 годах. [29] В декабре 2008 года группа исследователей использовала эту технику для подделки действительности сертификата SSL. [24] [30]

По состоянию на 2010 год CMU Software Engineering Institute считает MD5 «криптографически взломанным и непригодным для дальнейшего использования» [31], и большинство правительственных приложений США теперь требуют семейства хэш-функций SHA-2 . [32] В 2012 году вредоносная программа Flame использовала слабые места в MD5 для подделки цифровой подписи Microsoft . [33]

Коллизионные уязвимости [ править ]

В 1996 году были обнаружены коллизии в функции сжатия MD5, и Ханс Доббертин написал в техническом бюллетене RSA Laboratories : «Представленная атака еще не угрожает практическому применению MD5, но она довольно близка ... в будущем MD5 должен больше не будет реализовываться ... там, где требуется хэш-функция, устойчивая к коллизиям ". [34]

В 2005 году исследователи смогли создать пары PostScript документов [35] и X.509 сертификатов [36] с той же хэш. Позже в том же году дизайнер MD5 Рон Ривест написал, что «md5 и sha1 явно сломаны (с точки зрения устойчивости к столкновениям)». [37]

30 декабря 2008 года группа исследователей объявила на 25-м конгрессе Chaos Communication Congress, как они использовали коллизии MD5 для создания промежуточного сертификата центра сертификации, который оказался легитимным при проверке его хешем MD5. [24] Исследователи использовали кластер Sony PlayStation 3 в EPFL в Лозанне , Швейцария [38], чтобы заменить обычный SSL-сертификат, выданный RapidSSL, на рабочий сертификат CA для этого эмитента, который затем можно было бы использовать для создания других сертификатов. это могло бы показаться законным и выданным RapidSSL. VeriSign, эмитенты сертификатов RapidSSL, заявили, что прекратили выпуск новых сертификатов с использованием MD5 в качестве алгоритма контрольной суммы для RapidSSL, как только было объявлено об уязвимости. [39] Хотя Verisign отказался отозвать существующие сертификаты, подписанные с использованием MD5, их ответ был сочтен адекватным авторами эксплойта ( Александр Сотиров , Марк Стивенс , Якоб Аппельбаум , Арьен Ленстра , Дэвид Мольнар, Даг Арне Освик и Бенн де Вегер) . [24] Брюс Шнайер писал об атаке, что «мы уже знали, что MD5 - это неработающая хеш-функция» и что «никто больше не должен использовать MD5». [40]Исследователи SSL написали: «Мы ожидаем, что центры сертификации перестанут использовать MD5 при выдаче новых сертификатов. Мы также надеемся, что использование MD5 в других приложениях также будет пересмотрено». [24]

В 2012 году, по данным Microsoft , авторы вредоносной программы Flame использовали коллизию MD5 для подделки сертификата подписи кода Windows. [33]

MD5 использует конструкцию Меркла – Дамгарда , поэтому, если могут быть созданы два префикса с одним и тем же хешем, общий суффикс может быть добавлен к обоим, чтобы конфликт с большей вероятностью был принят приложением, использующим его, как действительные данные. Кроме того, современные методы обнаружения конфликтов позволяют указать произвольный префикс : злоумышленник может создать два конфликтующих файла, оба из которых начинаются с одинакового содержимого. Все, что нужно злоумышленнику для создания двух конфликтующих файлов, - это файл шаблона со 128-байтовым блоком данных, выровненным по 64-байтовой границе, который можно свободно изменять с помощью алгоритма поиска конфликтов. Пример столкновения MD5 с двумя сообщениями, различающимися 6 битами:

d131dd02c5e6eec4 693d9a0698aff95c 2fcab5 8 712467eab 4004583eb8fb7f8955ad340609f4b302 83e4888325 7 1415a 085125e8f7cdc99f d91dbd f 280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e2 b 487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080 a 80d1e c69821bcb6a88393 96f965 2 b6ff72a70
d131dd02c5e6eec4 693d9a0698aff95c 2fcab5 0 712467eab 4004583eb8fb7f8955ad340609f4b302 83e4888325 f 1415a 085125e8f7cdc99f d91dbd 7 280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e2 3 487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080 2 80d1e c69821bcb6a88393 96f965 a b6ff72a70

Оба производят хеш MD5 79054025255fb1a26e4bc422aef54eb4. [41] Разница между двумя выборками состоит в том, что начальный бит в каждом полубайте был перевернут. Например, 20-й байт (смещение 0x13) в верхнем образце 0x87 равен 10000111 в двоичном формате. Ведущий бит в байте (также ведущий бит в первом полубайте) инвертируется, чтобы получить 00000111, то есть 0x07, как показано в нижнем примере.

Позже выяснилось, что можно создавать коллизии между двумя файлами с отдельно выбранными префиксами. Этот метод был использован при создании поддельного сертификата CA в 2008 году. Новый вариант параллельного поиска коллизий с использованием MPI был предложен Антоном Кузнецовым в 2014 году, который позволил найти коллизию за 11 часов на вычислительном кластере. [42]

Уязвимость прообраза [ править ]

В апреле 2009 года была опубликована атака на MD5, которая ломает сопротивление прообразу MD5 . Эта атака носит чисто теоретический характер, с вычислительной сложностью 2 123,4 для полного прообраза. [43] [44]

Приложения [ править ]

Дайджесты MD5 широко используются в мире программного обеспечения, чтобы обеспечить некоторую уверенность в том, что переданный файл прибыл в целости и сохранности. Например, файловые серверы часто предоставляют предварительно вычисленную контрольную сумму MD5 (известную как md5sum ) для файлов, чтобы пользователь мог сравнить с ней контрольную сумму загруженного файла. Большинство операционных систем на основе UNIX включают в свои пакеты распространения утилиты суммирования MD5; Пользователи Windows могут использовать включенную функцию PowerShell «Get-FileHash», установить утилиту Microsoft [45] [46] или использовать сторонние приложения. ПЗУ Android также используют этот тип контрольной суммы.

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

Исторически MD5 использовался для хранения одностороннего хэша пароля , часто с растягиванием ключа . [47] [48] NIST не включает MD5 в список рекомендуемых хэшей для хранения паролей. [49]

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

Алгоритм [ править ]

Рисунок 1. Одна операция MD5. MD5 состоит из 64 таких операций, сгруппированных в четыре раунда по 16 операций. F - нелинейная функция; в каждом раунде используется одна функция. M i обозначает 32-битный блок ввода сообщения, а K i обозначает 32-битную константу, различную для каждой операции. <<< s обозначает левый поворот бит на s мест; s варьируется для каждой операции. обозначает сложение по модулю 2 32 .

MD5 преобразует сообщение переменной длины в выходной файл фиксированной длины, равный 128 битам. Входное сообщение разбивается на блоки по 512 бит (шестнадцать 32-битных слов); сообщение заполняется так, чтобы его длина делилась на 512. Заполнение работает следующим образом: сначала к концу сообщения добавляется один бит, 1. За ним следует столько нулей, сколько требуется, чтобы довести длину сообщения до 64 битов меньше, чем кратное 512. Остальные биты заполняются 64 битами, представляющими длину исходного сообщения по модулю 2 64 .

Основной алгоритм MD5 работает на 128-битном состоянии, в разделенном на четыре 32-битовые слова, обозначаются , В , С и D . Они инициализируются определенными фиксированными константами. Затем основной алгоритм использует каждый 512-битный блок сообщения по очереди для изменения состояния. Обработка блока сообщения состоит из четырех аналогичных этапов, называемых раундами ; каждый раунд состоит из 16 аналогичных операций, основанных на нелинейной функции F , модульном сложении и левом вращении. На рисунке 1 показана одна операция в раунде. Возможны четыре функции; в каждом раунде используется другой:

обозначают операции XOR , AND , OR и NOT соответственно.

Псевдокод [ править ]

По этому алгоритму рассчитывается хеш MD5. [50] Все значения указаны с прямым порядком байтов .

// : Все переменные беззнаковые 32-битные и переносятся по модулю 2 ^ 32 при вычислении var  int s [64], K [64] var  int i// s указывает величину сдвига за раундs [0..15]: = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}s [16..31]: = {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}s [32..47]: = {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}s [48..63]: = {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}// Используйте двоичную целую часть синусов целых чисел (радианы) в качестве констант: для i от 0 до 63 do K [i]: = floor (2 32 × abs (sin (i + 1))) end for // ( Или просто используйте следующую предварительно вычисленную таблицу):K [0 .. 3]: = {0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee}K [4 .. 7]: = {0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501}K [8..11]: = {0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be}K [12..15]: = {0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821}K [16..19]: = {0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa}K [20..23]: = {0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8}K [24..27]: = {0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed}K [28..31]: = {0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a}K [32..35]: = {0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c}K [36..39]: = {0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70}K [40..43]: = {0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05}K [44..47]: = {0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665}K [48..51]: = {0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039}K [52..55]: = {0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1}K [56..59]: = {0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1}K [60..63]: = {0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391}// Инициализируем переменные: var  int a0: = 0x67452301 // A var  int b0: = 0xefcdab89 // B var  int c0: = 0x98badcfe // C var  int d0: = 0x10325476 // D// Предварительная обработка: добавление одного 1 бит Append «1» бит в сообщение  // Примечание: входные байты считаются битовыми строками, // где первый бит - самый старший бит байта. [51]// Предварительная обработка: заполнение нулями добавляет бит «0» до тех пор, пока длина сообщения в битах 448 (mod 512), добавляет исходную длину в битах mod 2 64  к сообщению// обработать сообщение в последовательных 512-битовых порциях: для каждого  512-битный фрагмент из мягких сообщений делает разбить фрагмент на шестнадцать 32-битных слов M [j], 0 ≤ j ≤ 15 // Инициализируем хеш-значение для этого блока:  var  int A: = a0 var  int B: = b0 var  int C: = c0 var  int D: = d0  // Основной цикл:  для i от 0 до 63 выполните  var  int F, g если 0 ≤ i ≤ 15, то F: = (B и C) или (( не B) и D) г: = я иначе, если 16 ≤ i ≤ 31, то F: = (D и B) или (( не D) и C) g: = (5 × i + 1) mod 16 иначе, если 32 ≤ i ≤ 47, то F: = B xor C xor D g: = (3 × i + 5) mod 16 иначе, если 48 ≤ i ≤ 63, то F: = C xor (B или ( не D)) g: = (7 × i) mod 16  // Остерегайтесь следующих определений a, b, c, d F: = F + A + K [i] + M [g] // M [g] должен быть 32-битный блок А: = D D: = C C: = B B: = B + leftrotate (F, s [i]) end for  // Добавляем хэш этого фрагмента к текущему результату: а0: = а0 + А b0: = b0 + B c0: = c0 + C d0: = d0 + Dконец дляvar  char digest [16]: = a0 append b0 append c0 append d0 // (вывод в прямом порядке)// определение функции левого поворота leftrotate (x, c) return (x << c) binary or (x >> (32-c));

Вместо формулировки из оригинального показанного RFC 1321 для повышения эффективности может использоваться следующая формула (полезно, если используется язык ассемблера - в противном случае компилятор обычно оптимизирует приведенный выше код. Поскольку каждое вычисление зависит от другого в этих формулировках, это часто медленнее, чем описанный выше метод, в котором nand / и можно распараллелить):

(0 ≤ i ≤ 15): F: = D xor (B и (C xor D))(16 ≤ i ≤ 31): F: = C xor (D и (B xor C))

Хеши MD5 [ править ]

128-битные (16-байтовые) хэши MD5 (также называемые дайджестами сообщений ) обычно представлены как последовательность из 32 шестнадцатеричных цифр. Следующее демонстрирует 43-байтовый ввод ASCII и соответствующий хэш MD5:

MD5 (« Быстрая коричневая лисица перепрыгивает через ленивого пса ») =9e107d9d372bb6826bd81d3542a419d6

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

MD5 (« Быстрая коричневая лиса перепрыгивает через ленивую собаку . ») =e4d909c290d0fb1ca068ffaddf22cbd0

Хеш строки нулевой длины:

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

Алгоритм MD5 предназначен для сообщений, состоящих из любого количества бит; он не ограничен числами , кратными восьми битам ( октетам , байтам ). Некоторые реализации MD5, такие как md5sum, могут быть ограничены октетами или могут не поддерживать потоковую передачу сообщений изначально неопределенной длины.

Реализации [ править ]

Ниже приведен список библиотек криптографии, поддерживающих MD5:

  • Ботан
  • Надувной Замок
  • cryptlib
  • Крипто ++
  • Libgcrypt
  • Крапива
  • OpenSSL
  • wolfSSL

См. Также [ править ]

  • Сравнение криптографических хеш-функций
  • Сводка по безопасности хеш-функции
  • HashClash
  • MD5Crypt
  • md5deep
  • md5sum
  • MD6
  • SHA-1

Ссылки [ править ]

  1. ^ Ривест, Р. (апрель 1992 г.). «Шаг 4. Обработка сообщения блоками по 16 слов» . Алгоритм дайджеста сообщений MD5 . IETF . п. 5. сек. 3.4. DOI : 10,17487 / RFC1321 . RFC 1321 . Проверено 10 октября 2018 года .
  2. ^ Се Тао; Фанбао Лю и Дэнго Фэн (2013). «Быстрая коллизионная атака на MD5» (PDF) . Cite journal requires |journal= (help)
  3. ^ Kleppmann, Мартин (2 апреля 2017). Разработка приложений, интенсивно использующих данные: большие идеи, лежащие в основе надежных, масштабируемых и обслуживаемых систем (1-е изд.). O'Reilly Media. п. 203. ISBN 978-1449373320.
  4. ^ Ciampa, Марк (2009). CompTIA Security + 2008 в деталях . Австралия; Соединенные Штаты: Технология курсов / Cengage Learning. п. 290 . ISBN 978-1-59863-913-1.
  5. Перейти ↑ Chad R, Dougherty (31 декабря 2008 г.). «Примечание об уязвимости VU # 836068 MD5, уязвимое для коллизионных атак» . База данных заметок об уязвимостях . CERT Институт программной инженерии Университета Карнеги-Меллона . Проверено 3 февраля +2017 .
  6. ^ а б Чимпану, Каталин. «Четверть основных CMS используют устаревший MD5 в качестве схемы хеширования паролей по умолчанию» . ZDNet . Дата обращения 17 июня 2019 .
  7. ^ а б Дж. Блэк, М. Кокрэн, Т. Хайленд: Исследование атак MD5: идеи и улучшения. Архивировано 1 января 2015 г. на Wayback Machine , 3 марта 2006 г. Проверено 27 июля 2008 г.
  8. ^ Хоукс, Филип; Паддон, Майкл; Роуз, Грегори Г. (13 октября 2004 г.). "Размышления о столкновении Ванга и др. MD5" . Криптология ePrint Archive . Архивировано из оригинала на 5 ноября 2018 года . Проверено 10 октября 2018 года .
  9. Епископ Фокс (26 сентября 2013 г.). «Быстрые генераторы коллизий MD5 и MD4» . Проверено 10 февраля 2014 . Более быстрая реализация методов в статье Как взломать MD5 и другие хэш-функции , Сяоюнь Ван и др. Старое (2006 г.) среднее время работы на суперкомпьютере IBM P690: 1 час. Новое среднее время работы на ПК P4 1.6ghz: 45 минут.
  10. ^ Ленстра, Арьен ; Ван, Сяоюнь ; Вегер, Бенне де (1 марта 2005 г.). «Конфликтующие сертификаты X.509» . Криптология ePrint Archive . Проверено 10 октября 2018 года .
  11. ^ Klíma, Властимил (5 марта 2005). «Поиск столкновений MD5 - игрушка для ноутбука» . Криптология ePrint Archive . Проверено 10 октября 2018 года .
  12. ^ Властимил Клима: Туннели в хэш-функциях: коллизии MD5 в течение минуты , Отчет об архиве Cryptology ePrint 2006/105, 18 марта 2006 г., пересмотренный 17 апреля 2006 г. Проверено 27 июля 2008 г.
  13. ^ «Код взломан! Тайна логотипа киберкоманды разгадана» . USCYBERCOM . Проводные новости . 8 июля 2010 . Проверено 29 июля 2011 года .
  14. ^ Тао Се; Дэнго Фэн (2010). «Построение коллизий MD5 с помощью всего лишь одного блока сообщения» (PDF) . Проверено 28 июля 2011 года .
  15. ^ «Марк Стивенс - Исследования - Атака на столкновение с одним блоком на MD5» . Marc-stevens.nl. 2012 . Проверено 10 апреля 2014 года .
  16. ^ «RFC 6151 - Обновленные соображения безопасности для дайджеста сообщения MD5 и алгоритмов HMAC-MD5» . Инженерная группа Интернета. Март 2011 . Проверено 11 ноября 2013 года .
  17. ^ "RFC 1321 - алгоритм дайджеста сообщений MD5" . Инженерная группа Интернета. Апрель 1992 . Проверено 5 октября 2013 года .
  18. ^ «RFC 2104 - HMAC: хеширование с ключом для аутентификации сообщений» . Инженерная группа Интернета. Февраль 1997 . Проверено 5 октября 2013 года .
  19. ^ MMJ Stevens (июнь 2007 г.). «О коллизиях для MD5» (PDF) . [...] мы можем найти коллизии для MD5 примерно за 2 сжатия 24,1 для рекомендованных IHV, что занимает прибл. 6 секунд на Pentium 4 2,6 ГГц. Cite journal requires |journal= (help)
  20. ^ Марк Стивенс; Арьен Ленстра; Бенн де Вегер (16 июня 2009 г.). «Конфликты с выбранным префиксом для MD5 и приложений» (PDF) . Архивировано из оригинального (PDF) 9 ноября 2011 года . Проверено 31 марта 2010 года . Cite journal requires |journal= (help)
  21. ^ «Новый взломщик GPU MD5 взламывает более 200 миллионов хэшей в секунду».
  22. ^ Магнус Даум, Стефан Лакс . «Хеш-коллизии (атака отравленным сообщением)» . Eurocrypt 2005 основная сессия . Архивировано из оригинального 27 марта 2010 года.
  23. ^ Макс Гебхардт; Георг Иллиес; Вернер Шиндлер (4 января 2017 г.). «Примечание о практическом значении коллизий единичных хэшей для специальных форматов файлов» (PDF) . Cite journal requires |journal= (help)
  24. ^ a b c d e Сотиров Александр; Марк Стивенс; Яков Аппельбаум; Арьен Ленстра; Дэвид Мольнар; Даг Арне Освик; Бенне де Вегер (30 декабря 2008 г.). «MD5 сегодня считается вредным» . Проверено 30 декабря 2008 года . Объявлено на 25-м Конгрессе по коммуникации Хаоса .
  25. ^ «Ядовитый MD5 - Волки среди овец | Бесшумный блог Techblog» . Дата обращения 10 июня 2015 .
  26. Ганс Доббертин (лето 1996 г.). «Состояние MD5 после недавней атаки» . CryptoBytes . Проверено 22 октября 2013 года .
  27. ^ Xiaoyun Wang & Hongbo Ю. (2005). «Как взломать MD5 и другие хеш-функции» (PDF) . Достижения в криптологии - конспекты лекций по информатике . С. 19–35. Архивировано из оригинального (PDF) 21 мая 2009 года . Проверено 21 декабря 2009 года .
  28. ^ Xiaoyun Wang, Dengguo, к., М., М, HAVAL-128 и RIPEMD , Криптология Eprint Архив Отчет 2004/199, 16 августа 2004, переработанное 17 августа 2004 годаизвлекаемых 27 июля 2008 года.
  29. ^ Марк Стивенс, Арьен Ленстра, Бенн де Вегер: Уязвимость приложений для обеспечения целостности программного обеспечения и подписи кода для конфликтов с выбранным префиксом для MD5 , 30 ноября 2007 г. Проверено 27 июля 2008 г.
  30. Stray, Джонатан (30 декабря 2008 г.). «Недостаток веб-браузера может поставить под угрозу безопасность электронной коммерции» . CNET.com . Проверено 24 февраля 2009 года .
  31. ^ "Примечание об уязвимости CERT VU # 836068" . Kb.cert.org . Проверено 9 августа 2010 года .
  32. ^ "NIST.gov - Отдел компьютерной безопасности - Центр ресурсов компьютерной безопасности" . Csrc.nist.gov. Архивировано из оригинала 9 июня 2011 года . Проверено 9 августа 2010 года .
  33. ^ a b «Объяснение коллизионной атаки вредоносного ПО Flame» . Архивировано из оригинала 8 июня 2012 года . Проверено 7 июня 2012 года .
  34. ^ Доббертин, Ганс (лето 1996). «Состояние MD5 после недавней атаки» (PDF) . RSA Laboratories CryptoBytes . 2 (2): 1 . Проверено 10 августа 2010 года . Представленная атака пока не угрожает практическим применениям MD5, но приближается к ней. .... [ sic ] в будущем MD5 больше не должен реализовываться ... [ sic ] там, где требуется хэш-функция, устойчивая к коллизиям. [ постоянная мертвая ссылка ]
  35. ^ «Шнайер о безопасности: больше конфликтов MD5» . Schneier.com . Проверено 9 августа 2010 года .
  36. ^ "Конфликтующие сертификаты X.509" . Win.tue.nl . Проверено 9 августа 2010 года .
  37. ^ "[Python-Dev] hashlib - быстрее md5 / sha, добавлена ​​поддержка sha256 / 512" . Mail.python.org . Проверено 9 августа 2010 года .
  38. ^ «Исследователи используют кластер PlayStation, чтобы выковать сетевой ключ от скелета» . Проводной . 31 декабря 2008 . Источник +31 Декабря 2008 .
  39. Каллан, Тим (31 декабря 2008 г.). «Утренняя атака MD5 - решена» . Verisign. Архивировано из оригинала 16 января 2009 года . Источник +31 Декабря 2008 .
  40. Брюс Шнайер (31 декабря 2008 г.). «Подделка SSL-сертификатов» . Шнайер о безопасности . Проверено 10 апреля 2014 года .
  41. ^ Эрик Рескорла (17 августа 2004). «Настоящая коллизия MD5» . Образованные догадки (блог) . Архивировано из оригинального 15 августа 2014 года . Проверено 13 апреля 2015 года .
  42. ^ Антон А. Кузнецов. «Алгоритм для атаки одиночного блока MD5 с использованием высокопроизводительного вычислительного кластера» (PDF) . МАКР . Дата обращения 3 ноября 2014 .
  43. ^ Ю Сасаки; Казумаро Аоки (16 апреля 2009 г.). «Поиск прообразов в полном MD5 быстрее, чем исчерпывающий поиск». Достижения в криптологии - EUROCRYPT 2009 . Конспект лекций по информатике. 5479 . Springer Berlin Heidelberg . С. 134–152. DOI : 10.1007 / 978-3-642-01001-9_8 . ISBN 978-3-642-01000-2.
  44. ^ Мин Мао и Шаохуэй Чен и Цзинь Сюй (2009). «Построение исходной структуры для атаки прообраза MD5». 2009 Международная конференция по вычислительному интеллекту и безопасности . Международная конференция по вычислительному интеллекту и безопасности . 1 . Компьютерное общество IEEE . С. 442–445. DOI : 10,1109 / CIS.2009.214 . ISBN 978-0-7695-3931-7. S2CID  16512325 .
  45. ^ «Доступность и описание утилиты проверки целостности контрольной суммы файлов» . Служба поддержки Microsoft. 17 июня 2013 . Проверено 10 апреля 2014 года .
  46. ^ «Как вычислить криптографические хеш-значения MD5 или SHA-1 для файла» . Служба поддержки Microsoft. 23 января 2007 . Проверено 10 апреля 2014 года .
  47. ^ «Справочник FreeBSD, Безопасность - DES, Blowfish, MD5 и Crypt» . Проверено 19 октября 2014 года .
  48. ^ "Сводка - раздел 4 страниц руководства: Форматы файлов" . Docs.oracle.com. 1 января 2013 . Проверено 10 апреля 2014 года .
  49. ^ NIST SP 800-132 Раздел 5.1
  50. ^ https://referencesource.microsoft.com/#System.Workflow.Runtime/MD5HashHelper.cs,5a97802b6014fccc, ссылки
  51. ^ RFC 1321 , раздел 2, «Терминология и обозначения», стр. 2.

Дальнейшее чтение [ править ]

  • Берсон, Томас А. (1992). «Дифференциальный криптоанализ Mod 2 32 с приложениями к MD5». ЕВРОКРИПТ . С. 71–80. ISBN 3-540-56413-6.
  • Берт ден Бур; Антун Босселаерс (1993). Коллизии для функции сжатия MD5 . Берлин; Лондон: Спрингер. С. 293–304. ISBN 978-3-540-57600-6.
  • Ганс Доббертин, Криптоанализ компрессии MD5. Объявление в Интернете, май 1996 г. "CiteSeerX" . Citeseer.ist.psu.edu . Проверено 9 августа 2010 года .
  • Доббертин, Ганс (1996). «Состояние MD5 после недавней атаки» . CryptoBytes . 2 (2).
  • Сяоюнь Ван; Хунбо Ю (2005). «Как взломать MD5 и другие хеш-функции» (PDF) . ЕВРОКРИПТ . ISBN 3-540-25910-4. Архивировано из оригинального (PDF) 21 мая 2009 года . Проверено 6 марта 2008 года .

Внешние ссылки [ править ]

  • Рекомендация W3C по MD5
  • Онлайн-генератор хешей MD5