Безопасность md5
MD5 считают довольно защищенным шифром, но для примитивных слов или набора символов это уже далеко не так.
На данный момент существуют несколько видов «взлома» хэшей MD5 — подбора сообщения с заданным хэшем:
Перебор по словарю
Brute-force
RainbowCrack
Коллизия хеш-функции
Атаки переборного типа
Для полного перебора можно использовать некоторые из множества существующих программ: PasswordsPro, MD5BFCPF, John the Ripper. Для перебора по словарю существуют готовые словари. Самым большим недостатком и сложностью данной атаки является непосредственно высокая вычислительная сложность.
Коллизии md5
Коллизия хэш-функции — это получение одинакового значения функции для разных сообщений и идентичного начального буфера. В отличие от коллизий, псевдоколлизии определяются как равные значения хэша для разных значений начального буфера, причём сами сообщения могут совпадать или отличаться. В MD5 вопрос коллизий не решается.
Ранее считалось, что MD5 позволяет получать относительно надёжный идентификатор для блока данных. На данный момент данная хеш-функция не рекомендуется к использованию, так как существуют способы нахождения коллизий с приемлемой вычислительной сложностью
Также относительно недавно он широко применялся в защите персональных данных и др., но сейчас же в чистом виде он почти не используется, т.к. велика вероятность взлома полученного хэша путем подбора.
Но с применением солей такой подход становится ресурсоёмким.
SHA
В 1995 г. Появился, также произошедший от MD4 вид хэширования – SHA-1 (Secure Hash Algorithm-1), разработанный NSA(Агентство национальной безопасности) совместно с NIST(Национальный институт стандартов и технологий США).
Принципы, положенные в основу SHA-1, аналогичны тем, которые использовались Рональдом Ривестом при проектировании MD4.
Сравнение md5 и sha-1
Рассматривая схожести MD5 и SHA1 можно смело сказать, что и MD5, и SHA-1 являются, по сути, улучшенными продолжениями MD4.
Они имеют следующие сходства:
Четыре этапа.
Каждое действие прибавляется к ранее полученному результату.
Размер блока обработки равный 512 бит.
Оба алгоритма выполняют сложение по модулю 232, они рассчитаны на 32-битную архитектуру.
Но по мере развития хэширования и в целом криптографии, то следовательно они имели различия, которые делали их отличными от других:
В MD5 в каждом действии используется уникальная прибавляемая константа. В SHA-1 константы используются повторно для каждой из четырех групп.
SHA-1 использует циклический код исправления ошибок.
В MD5 длина дайджеста составляет 128 бит, в SHA-1 — 160 бит.
SHA-1 содержит больше раундов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25 % медленнее, чем MD5 на той же аппаратуре.
Примеры sha-1 хэша:
SHA-1 ("Hello, world!")= 943a702d06f34599aee1f8da8ef9f7296031d699
Пример «нулевой» (пустой) строки:
SHA-1 ("") = da39a3ee5e6b4b0d3255bfef95601890afd80709
В августе 2002-го г. Был представлен SHA-2 (Secure Hash Algorithm Version 2 — безопасный алгоритм хеширования, версия 2). Можно заметить, что SHA-2 стал семейством криптографических алгоритмов — однонаправленных хеш-функций. Также SHA -2 ста включать в себя алгоритмы SHA-224, SHA-256, SHA-384, SHA-512.
Примеры и сравнения всех видов SHA:
К примеру, захэшируем строку «Криптография»
SHA-1 = c61817189f9d2270207d6022a9c2e47b0d35167d
SHA -224 = ba7206f147fdbaeba42d971ec8f378240a524861d75008ec563ad737
SHA- 256 = 8d68be6bb25cb091c1774ca7058f6d8165f4cc430aaedf739d4c2036e7aa2f1b
SHA- 384 = 33658a940aa8fdbd217b8174d1416b4a403ad0a95811d0688ccf36acccb004e04e0159b5d134ba7e5d7351186ef95a5a
SHA – 512 = 3930140d8627e8a37c1c4d216dd323bb3308d5b0a1fd769d5738d01128b06ecb1a1f6829f6cab6548c48824414f9e6e42df37f45517272fd4522da5314228c0a
Существует один немаловажный факт, который дает преимущество SHA-2 над другими алгоритмами, - У данной хэш-функции пока что не было найдено коллизий. Это делает её более безопасной.
