MD5 - MD5

MD5
Общий
ДизайнеровРональд Ривест
Впервые опубликованоАпрель 1992 г.
СерииMD2, MD4, MD5, MD6
Деталь шифра
Размеры дайджеста128 бит
Размеры блоков512 бит
СтруктураСтроительство Меркле-Дамгарда
Раундов4[1]
Лучшая публика криптоанализ
Атака Се Тао, Фанбао Лю и Дэнго Фэна в 2013 году нарушила MD5 сопротивление столкновению через 218 время. На обычном компьютере эта атака выполняется менее чем за секунду.[2]MD5 склонен к атаки удлинения длины.

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

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

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

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

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

История и криптоанализ

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

В 1993 году Den Boer и Bosselaers дали ранний, хотя и ограниченный, результат поиска "псевдоколлизия "MD5 функция сжатия; то есть два разных векторы инициализации которые производят идентичный дайджест.

В 1996 г. Доббертин объявил о коллизии функции сжатия MD5 (Доббертин, 1996). Хотя это не была атака на полную хэш-функцию MD5, криптографы достаточно близко рекомендовали перейти на замену, например SHA-1 или же РИПЭМД-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]

Различные связанные с MD5 RFC опечатки были опубликованы. В 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 ГГц (сложность 224.1).[19] Кроме того, есть еще коллизионная атака с выбранным префиксом который может вызвать конфликт для двух входов с указанными префиксами в течение нескольких секунд, используя стандартное вычислительное оборудование (сложность 239).[20]Способности находить коллизии в значительной степени способствовало использование готовых GPU. На графическом процессоре 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 г. Пламя Вредоносная программа использовала слабые места в MD5 для подделки Microsoft цифровой подписи.[33]

Коллизионные уязвимости

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

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

30 декабря 2008 г. группа исследователей объявила на 25-м заседании Конгресс Хаоса Коммуникации как они использовали коллизии 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, авторы Пламя вредоносное ПО использовало конфликт MD5 для подделки сертификата подписи кода Windows.[33]

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

d131dd02c5e6eec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f8955ad340609f4b302 83e488832571415a 085125e8f7cdc99f d91dbdж280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e2б487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080а80d1e c69821bcb6a88393 96f9652b6ff72a70
d131dd02c5e6eec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f8955ad340609f4b302 83e4888325ж1415a 085125e8f7cdc99f d91dbd7280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e23487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080280d1e c69821bcb6a88393 96f965аb6ff72a70

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

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

Прообраз уязвимости

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

Приложения

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

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

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

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

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

Алгоритм

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

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

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

обозначить XOR, И, ИЛИ ЖЕ и НЕТ операции соответственно.

Псевдокод

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

// : Все переменные беззнаковые 32-битные и переносятся по модулю 2 ^ 32 при вычислении.вар int с [64], К [64]вар int я// 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} с [32..47]: = {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23} с [48..63]: = {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}// Используйте двоичную целую часть синусов целых чисел (радианы) в качестве констант:за я из 0 к 63 делать    K [i]: = этаж (232 × абс (грех (я + 1)))конец для// (Или просто используйте следующую предварительно вычисленную таблицу):K [0 .. 3]: = {0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee} K [4 .. 7]: = {0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501} K [8f448x898]: = 0xffff5bb1, 0x895cd7be} K [12..15]: = {0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821} K [16..19]: = {0xf61e2562, 0xc040b340, 0x265ea5ab6, 20x265ea5a6, 20x265ea5a6, 20x265ea5a6, 20x265ea5a6, 20x265ea5a6 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8} K [24..27]: = {0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed} K [28..31]: = {0ece2xa6 ... ]: = {0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c} K [36..39]: = {0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70} K [40..43]: = {0ca6d07e07, 0..43]: = {0ca6d07e07e07e07e4e8e07e04e07e04e8e07e07e07e07e07e5e07e08e07e5e07e08e08e08e8e08e08e08e07e08e08e08e08e07 44..47]: = {0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665} K [48..51]: = {0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039} K [52 .. 0x85845dd1} K [56..59]: = {0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1} K [60..63]: = {0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb 86d391}// Инициализировать переменные:вар int a0: = 0x67452301 // Авар int b0: = 0xefcdab89 // Bвар int c0: = 0x98badcfe // Cвар int d0: = 0x10325476 // D// Предварительная обработка: добавление одного битадобавить «1» бит к сообщение     // Примечание: входные байты рассматриваются как битовые строки, // где первый бит - это самый старший бит байта.[50]// Предварительная обработка: заполнение нулямидобавить «0» бит до того как длина сообщения в битах ≡ 448 (mod 512)добавить исходная длина в битах мод 264 к сообщение// Обработайте сообщение последовательными 512-битными блоками:для каждого 512 бит кусок из дополненное сообщение делать    разбить фрагмент на шестнадцать 32-битных слов M [j], 0 ≤ j ≤ 15    // Инициализировать хеш-значение для этого чанка:    вар int А: = а0 вар int B: = b0 вар int C: = c0 вар int D: = d0    // Основной цикл:    за я из 0 к 63 делать        вар int F, г если 0 ≤ я ≤ 15 тогда            F: = (B и C) или же ((нет Б) и D) g: = i иначе если 16 ≤ я ≤ 31 тогда            F: = (D и Б) или же ((нет D) и В) г: = (5 × я + 1) мод 16        иначе если 32 ≤ я ≤ 47 тогда            F: = B xor C xor D g: = (3 × i + 5) мод 16        иначе если 48 ≤ я ≤ 63 тогда            F: = C xor (B или же (нет D)) g: = (7 × i) мод 16        // Остерегайтесь следующих определений a, b, c, d        F: = F + A + K [i] + M [g]  // M [g] должен быть 32-битным блоком.        A: = D D: = C C: = B B: = B + повернуть влево(F, s [i]) конец для    // Добавьте к результату хеш этого чанка:    a0: = a0 + A b0: = b0 + B c0: = c0 + C d0: = d0 + Dконец длявар char дайджест [16]: = a0 добавить b0 добавить c0 добавить d0 // (Вывод в формате little-endian)// определение функции leftrotateповернуть влево (х, с) возвращаться (х << с) двоичный или (x >> (32-c));

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

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

MD5 хеши

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

MD5 ("Быстрая коричневая лиса прыгает через ленивую собаку ") = 9e107d9d372bb6826bd81d3542a419d6

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

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

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

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

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

Реализации

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

Смотрите также

Рекомендации

  1. ^ Ривест, Р. (Апрель 1992 г.). «Шаг 4. Обработка сообщения блоками по 16 слов». Алгоритм дайджеста сообщений MD5. IETF. п. 5. сек. 3.4. Дои:10.17487 / RFC1321. RFC 1321. Получено 10 октября 2018.
  2. ^ Се Тао; Фанбао Лю и Дэнго Фэн (2013). «Быстрая атака на столкновение с MD5» (PDF). Цитировать журнал требует | журнал = (помощь)
  3. ^ Клеппманн, Мартин (2 апреля 2017 г.). Разработка приложений с интенсивным использованием данных: основные идеи, лежащие в основе надежных, масштабируемых и обслуживаемых систем (1-е изд.). O'Reilly Media. п. 203. ISBN  978-1449373320.
  4. ^ Чампа, Марк (2009). CompTIA Security + 2008 в подробностях. Австралия; Соединенные Штаты: Технология курсов / Cengage Learning. п.290. ISBN  978-1-59863-913-1.
  5. ^ Чад Р., Догерти (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. Архивировано из оригинал 5 ноября 2018 г.. Получено 10 октября 2018.
  9. ^ Епископ Фокс (26 сентября 2013 г.). «Быстрые генераторы коллизий MD5 и MD4». Получено 10 февраля 2014. Более быстрое внедрение техник в Как сломать MD5 и другие хеш-функции Авторы Xiaoyun Wang и др. Старое (2006 г.) среднее время работы на суперкомпьютере IBM P690: 1 час. Новое среднее время работы на ПК P4 1.6ghz: 45 минут.
  10. ^ Ленстра, Арьен; Ван, Сяоюнь; Вегер, Бенне де (1 марта 2005 г.). «Конфликтующие сертификаты X.509». Архив криптологии ePrint. Получено 10 октября 2018.
  11. ^ Клима, Властимил (5 марта 2005 г.). «Поиск столкновений MD5 - игрушка для ноутбука». Архив криптологии ePrint. Получено 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 Message-Digest и HMAC-MD5». Инженерная группа Интернета. Март 2011 г.. Получено 11 ноября 2013.
  17. ^ «RFC 1321 - алгоритм дайджеста сообщения MD5». Инженерная группа Интернета. Апрель 1992 г.. Получено 5 октября 2013.
  18. ^ «RFC 2104 - HMAC: хеширование с ключом для аутентификации сообщений». Инженерная группа Интернета. Февраль 1997 г.. Получено 5 октября 2013.
  19. ^ M.M.J. Стивенс (июнь 2007 г.). «О коллизиях для MD5» (PDF). [...] мы можем найти коллизии для MD5 примерно за 224.1 компрессии для рекомендованных IHV, что занимает ок. 6 секунд на Pentium 4 2,6 ГГц. Цитировать журнал требует | журнал = (помощь)
  20. ^ Марк Стивенс; Арьен Ленстра; Бенн де Вегер (16 июня 2009 г.). "Конфликты с выбранным префиксом для MD5 и приложений" (PDF). Архивировано из оригинал (PDF) 9 ноября 2011 г.. Получено 31 марта 2010. Цитировать журнал требует | журнал = (помощь)
  21. ^ «Новый взломщик GPU MD5 взламывает более 200 миллионов хэшей в секунду».
  22. ^ Магнус Даум, Стефан Люкс. «Хеш-коллизии (атака отравленным сообщением)». Еврокрипт Задница 2005 года. Архивировано из оригинал 27 марта 2010 г.
  23. ^ Макс Гебхардт; Георг Иллиес; Вернер Шиндлер (4 января 2017 г.). «Примечание о практическом значении коллизий одиночных хэшей для специальных форматов файлов» (PDF). Цитировать журнал требует | журнал = (помощь)
  24. ^ а б c d е Сотиров Александр; Марк Стивенс; Яков Аппельбаум; Арьен Ленстра; Дэвид Мольнар; Даг Арне Освик; Бенне де Вегер (30 декабря 2008 г.). «MD5 сегодня считается вредным». Получено 30 декабря 2008. Объявлено на 25-м Конгресс Хаоса Коммуникации.
  25. ^ "Ядовитый MD5 - Волки среди овец | Silent Signal Techblog". Получено 10 июн 2015.
  26. ^ Ганс Доббертин (лето 1996 г.). «Состояние MD5 после недавней атаки». CryptoBytes. Получено 22 октября 2013.
  27. ^ Сяоюнь Ван и Хунбо Ю (2005). «Как взломать MD5 и другие хеш-функции» (PDF). Достижения в криптологии - конспекты лекций по информатике. С. 19–35. Архивировано из оригинал (PDF) 21 мая 2009 г.. Получено 21 декабря 2009.
  28. ^ Сяоюнь Ван, Дэнго, к., М., М., HAVAL-128 и RIPEMD, Отчет об архиве Cryptology ePrint 2004/199, 16 августа 2004 г., исправлено 17 августа 2004 г. Проверено 27 июля 2008 г.
  29. ^ Марк Стивенс, Арьен Ленстра, Бенн де Вегер: Уязвимость приложений целостности программного обеспечения и подписи кода к конфликтам с выбранным префиксом для MD5, 30 ноября 2007 г. Проверено 27 июля 2008 г.
  30. ^ Бродяга, Джонатан (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. ^ а б «Объяснение коллизионной атаки вредоносного ПО 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 Cluster, чтобы подделать сетевой отмычку». Проводной. 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. Дои:10.1007/978-3-642-01001-9_8. ISBN  978-3-642-01000-2.
  44. ^ Мин Мао и Шаохуэй Чен и Цзинь Сюй (2009). «Построение исходной структуры для атаки прообраза MD5». 2009 Международная конференция по вычислительному интеллекту и безопасности. Международная конференция по вычислительному интеллекту и безопасности. 1. IEEE Компьютерное общество. С. 442–445. Дои: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. ^ RFC 1321, раздел 2, «Терминология и обозначения», стр. 2.

дальнейшее чтение

внешняя ссылка