MD5 — это 128-битный алгоритм хеширования, созданный учёным Рональдом Л. Ривестом (Ronald L. Rivest) в начале 90-х годов прошлого века. Аббревиатура MD5 расшифровывается как Message Digest 5-ой версии.
Принципы шифрования MD5 основаны на хешировании, предполагающем формирование «отпечатков» или «сумм» в целях дальнейшей их проверки на подлинность. С помощью данного метода можно убедиться в целостности сохранности информации, а также хранения хешей паролей.
История MD5
История алгоритма построения дайджеста сообщения (MD5) начинается в 1991 году, когда профессор Массачусетского технологического института (Massachusetts Institute of Technology, MIT) Рональд Л. Ривест отчитался о создании нового алгоритма, пришедшего на замену устаревшего MD4. Что касается MD4, то в нём действительно был обнаружен ряд недостатков, о чём позже написал немецкий криптолог Ханс Доббертин (Hans Dobbertin).
Ривест привёл описание нового алгоритма MD5 в документе RFC 1321.
Работа над алгоритмом была продолжена исследователями Бертом ден Буром (Bert den Boer) и Антоном Босселарсом (Antoon Bosselaers), которые в 1993 году доказали вероятность возникновения в MD5 псевдоколлизий, когда различные инициализирующие вектора могут иметь соответствие с одинаковыми дайджестами сообщений.
Далее, в 1996 году Хансом Доббертином было заявлено об обнаружении в MD5 коллизии. В то время стало известно о более предпочтительных алгоритмах хеширования, таких как криптографические хеш-функции RIPEMD-160 — разработанная Хансом Доббертином, Антоном Босселарсом и Бартом Пренелем (Bart Preneel), Whirlpool — разработанная Винсентом Рэйменом (Vincent Rijmen) и Пауло Баррето (Paulo S. L. M. Barreto) и алгоритм криптографического хеширования SHA-1.
Ввиду относительно небольшого размера хеша (128 бит) в MD5, заговорили о вероятности атак типа «день рождения». Проект MD5CRK, запущенный Жан-Люком Куком (Jean-Luc Cooke) в 2004 году имел цель изучить уязвимость алгоритма с помощью birthday-атак. Но, по прошествии пяти месяцев, 17 августа 2004 года, проект свернули в связи с обнаружением уязвимости в алгоритме, группой китайских криптографов во главе с Лай Сюэцзя (Lai Xuejia).
В марте 2005 года математиками и криптографами Бенне де Вегером (Benne de Weger), Арьеном Ленстра (Arjen Klaas Lenstra) и Ван Сяоюнем (王小云) были созданы два документа X.509, имеющие одинаковый хеш и разные открытые ключи.
Год спустя, в марте 2006 года был опубликован алгоритм, составленный чешским криптографом Властимилом Клима (Vlastimil Klima), позволяющий определить коллизии на простом компьютере в течение всего одной минуты. Данный алгоритм стал известен в качестве метода «туннелирования».
В результате анализа результатов работы, в 2008 году подразделение Национального управления кибербезопасности Министерства внутренней безопасности США (US-CERT) порекомендовало всем, кто был задействован в разработках программного обеспечения, веб-сайтов, а также пользователям сети, отказаться от использования алгоритма MD5, независимо от целей его применения. Причиной подобной рекомендации стала ненадёжность, которую он продемонстрировал в процессе его изучения.
В декабре 2010 года китайские криптологи Тао Се (Tao Xie) и Фэн Дэнго (Feng Dengguo) обнаружили коллизию сообщений длиной в 512 бит (один блок). Прежде коллизии находились лишь в сообщениях, длина которых составляла два блока и более. Позже подобных результатов добился Марк Стивенс (Marc Stevens), опубликовавший блоки с одинаковым хешем MD5. Он также разработал алгоритм для получения коллизий данного типа.
Итоговым документом, поставившим точку в истории развития алгоритма MD5, стал запрос на комментарии — RFC 6151 (RFC — официальный документ, разработанный Инженерным советом интернета (IETF), в котором описываются спецификации для конкретной технологии), фактически признавший MD5 небезопасным алгоритмом хеширования. Документ рекомендует от него отказаться, выбрав в качестве альтернативы семейство криптографических алгоритмов SHA-2.
Рассмотренный алгоритм MD5 по праву считается одним из первых стандартов алгоритма, применяемого в целях проверки целостности файлов и для хранения паролей в базах данных веб-приложений.
Но, по факту, относительно простая функциональность, короткая выходная длина и несложность проводимых операций, являясь преимуществами алгоритма определяют и его недостатки — MD5 относится к алгоритмам, подверженным взлому и имеющим низкую степень защиты от атак типа «день рождения».