RFC 1320
RFC 1320 — это запрос на комментарии (Request for Comments), опубликованный в 1992 году, который описывает алгоритм хеширования MD4 (Message Digest 4). Данный алгоритм был разработан Рональдом Ривестом (Ronald Rivest) из Массачусетского технологического института (MIT) и предназначен для создания цифровых отпечатков (дайджестов) сообщений произвольной длины. RFC 1320 является частью серии документов, стандартизирующих криптографические хеш-функции, и в настоящее время считается устаревшим и небезопасным для большинства практических применений.
История
Алгоритм MD4 был разработан в 1990 году как более быстрая альтернатива существовавшим на тот момент хеш-функциям, таким как MD2. Основной целью было создание алгоритма, который мог бы эффективно работать на 32-битных процессорах и обеспечивать высокую производительность при обработке больших объёмов данных. Документ RFC 1320 был опубликован в апреле 1992 года и официально закрепил спецификацию MD4.
В 1991 году, ещё до официальной публикации RFC, были обнаружены первые уязвимости в алгоритме. В 1995 году криптоаналитик Ханс Доббертин (Hans Dobbertin) продемонстрировал атаку на коллизию для MD4, которая позволяла найти два различных сообщения с одинаковым хешем за время, значительно меньшее теоретической оценки. Это сделало алгоритм практически непригодным для использования в криптографических приложениях, требующих устойчивости к коллизиям. Впоследствии MD4 был заменён более надёжными алгоритмами, такими как MD5 (RFC 1321) и SHA-1.
Алгоритм
MD4 является хеш-функцией, которая преобразует входное сообщение произвольной длины в 128-битный (16-байтовый) дайджест. Алгоритм работает с блоками данных размером 512 бит (64 байта) и использует три раунда нелинейных преобразований.
Основные этапы обработки
- Дополнение сообщения: Исходное сообщение дополняется до длины, кратной 512 битам. Дополнение включает добавление одного бита «1», затем нулевых битов, и в конце — 64-битного представления исходной длины сообщения.
- Инициализация буфера: Для хранения промежуточных и конечного результата используется 128-битный буфер, состоящий из четырёх 32-битных регистров (A, B, C, D). Эти регистры инициализируются фиксированными шестнадцатеричными значениями:
- A = 0x67452301
- B = 0xEFCDAB89
- C = 0x98BADCFE
- D = 0x10325476
- Обработка блоков: Каждый 512-битный блок сообщения обрабатывается в три раунда. В каждом раунде используются различные нелинейные функции (F, G, H) и операции сдвига. Функции раундов:
- Первый раунд: F(X,Y,Z) = (X & Y) | ((~X) & Z)
- Второй раунд: G(X,Y,Z) = (X & Y) | (X & Z) | (Y & Z)
- Третий раунд: H(X,Y,Z) = X ^ Y ^ Z
В каждом раунде выполняется 16 операций, в ходе которых обновляются значения регистров A, B, C, D.
- Формирование дайджеста: После обработки всех блоков, значения регистров A, B, C, D конкатенируются (соединяются) в порядке от младшего байта к старшему, образуя 128-битный дайджест сообщения.
Криптостойкость и уязвимости
MD4 считается криптографически слабой хеш-функцией. Основные проблемы, выявленные в ходе криптоанализа:
- Коллизии: В 1995 году Ханс Доббертин показал, что коллизии для MD4 можно найти за время, эквивалентное вычислению 2^20 хешей (менее секунды на современном на тот момент оборудовании). Позднее были разработаны ещё более эффективные методы, позволяющие находить коллизии практически мгновенно.
- Атаки на прообраз: В 2007 году были предложены атаки, позволяющие находить прообраз (исходное сообщение по его хешу) для MD4 со сложностью около 2^102, что значительно меньше теоретической сложности 2^128.
- Использование в протоколах: Из-за слабости MD4 его использование в современных криптографических протоколах (например, в аутентификации NTLMv1 в Windows) привело к уязвимостям, позволяющим злоумышленникам восстанавливать пароли.
Применение
Несмотря на свою уязвимость, MD4 в некоторых случаях продолжал использоваться в устаревших системах и протоколах:
- Аутентификация NTLMv1: В протоколе аутентификации Windows NT LAN Manager (NTLM) версии 1 для хеширования паролей используется MD4.
- Протокол RSAREF: В некоторых ранних реализациях криптографических библиотек.
- Проверка целостности: В нечувствительных к безопасности приложениях, где скорость обработки была критичнее устойчивости к атакам.
- Электронная подпись: В некоторых ранних реализациях цифровых подписей, которые впоследствии были заменены на более безопасные.
В настоящее время MD4 не рекомендуется к использованию в новых разработках. Для обеспечения криптографической стойкости следует применять алгоритмы семейства SHA-2 (SHA-256, SHA-512) или SHA-3.
Сравнение с другими алгоритмами
| Характеристика | MD4 | MD5 | SHA-1 |
|---|---|---|---|
| Размер дайджеста | 128 бит | 128 бит | 160 бит |
| Количество раундов | 3 | 4 | 4 |
| Размер блока | 512 бит | 512 бит | 512 бит |
| Стойкость к коллизиям | Очень низкая | Низкая (практически взломан) | Низкая (теоретически взломан) |
| Год публикации RFC | 1992 (RFC 1320) | 1992 (RFC 1321) | 1995 (RFC 3174) |
| Статус | Устаревший, небезопасный | Устаревший, не рекомендуется | Устаревший, не рекомендуется |
Интересные факты
- Алгоритм MD4 был разработан Рональдом Ривестом, который также является соавтором алгоритмов шифрования RC2, RC4, RC5 и RC6.
- Название «MD4» расшифровывается как «Message Digest 4» (четвёртая версия дайджеста сообщений), хотя предшествующие версии (MD2, MD3) не получили широкого распространения.
- Уязвимость MD4 была использована в некоторых вредоносных программах для подделки цифровых подписей.
Источники
- RFC 1320: The MD4 Message-Digest Algorithm (1992)
- Dobbertin, H. (1995). "The Status of MD5 After a Recent Attack". CryptoBytes.
- Rivest, R. (1992). "The MD4 Message-Digest Algorithm". MIT Laboratory for Computer Science.
- Wang, X., et al. (2005). "How to Break MD5 and Other Hash Functions". EUROCRYPT 2005.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →