Как работает md5


Закат эпохи алгоритма MD5? / Хабр

Вспомним про хеш

Хеш-функция — функция, осуществляющая преобразование массива входных данных произвольной длины в выходную битовую строку установленной длины, выполняемое определенным алгоритмом. Преобразование, производимое хеш-функцией, называется хешированием. Результат преобразования называется хешем.

Хеш-функции применяются в следующих случаях:

  • При построении ассоциативных массивов.

  • При поиске дубликатов в последовательностях наборов данных.

  • При построении уникальных идентификаторов для наборов данных.

  • При вычислении контрольных сумм от данных для последующего обнаружения в них ошибок, возникающих при хранении и передаче данных.

  • При сохранении паролей в системах защиты в виде хеш-кода (для восстановления пароля по хеш-коду требуется функция, являющаяся обратной по отношению к использованной хеш-функции).

  • При выработке электронной подписи (на практике часто подписывается не само сообщение, а его хеш-образ).

Контрольная сумма

С точки зрения математики, контрольная сумма является результатом хеш-функции, используемой для вычисления контрольного кода — небольшого количества бит внутри большого блока данных, например, сетевого пакета или блока компьютерного файла, применяемого для обнаружения ошибок при передаче или хранении информации. Значение контрольной суммы добавляется в конец блока данных непосредственно перед началом передачи или записи данных на какой-либо носитель информации. Впоследствии оно проверяется для подтверждения целостности данных. Популярность использования контрольных сумм для проверки целостности данных обусловлена тем, что подобная проверка просто реализуема в двоичном цифровом оборудовании, легко анализируется и хорошо подходит для обнаружения общих ошибок, вызванных наличием шума в каналах передачи данных.

MD5 —  алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института в 1991 году. Предназначен для создания контрольных сумм или «отпечатков» сообщения произвольной длины и последующей проверки их подлинности. Алгоритм MD5 основан на алгоритме MD4.

Как работает протокол?

Утилита md5sum, предназначенная для хеширования данных заданного файла по алгоритму MD5, возвращает строку. Она состоит из 32 цифр в шестнадцатеричной системе счисления (016f8e458c8f89ef75fa7a78265a0025).

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

 В данном алгоритме предполагается наличие 5 шагов, а именно:

  1. Выравнивание потока

  2. Добавление длины сообщения

  3. Инициализация буфера

  4. Вычисление в цикле

  5. Результат вычислений

На первом шаге “Выравнивание потока” сначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер был сравним с 448 по модулю 512. Выравнивание происходит, даже если длина уже сравнима с 448.

На втором шаге в оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.

На третьем для вычислений используются четыре переменные размером 32 бита и задаются начальные значения в 16-ричном виде. В этих переменных будут храниться результаты промежуточных вычислений.

Во время 4-го шага “Вычисление в цикле” происходит 4 раунда, в которых сохраняются значения, оставшиеся после операций над предыдущими блоками. После всех операций суммируются результаты двух последних циклов. Раундов в MD5 стало 4 вместо 3 в MD4. Добавилась новая константа для того, чтобы свести к минимуму влияние входного сообщения. В каждом раунде на каждом шаге и каждый раз константа разная. Она суммируется с результатом и блоком данных. Результат каждого шага складывается с результатом предыдущего шага. Из-за этого происходит более быстрое изменение результата. Изменился порядок работы с входными словами в раундах 2 и 3.

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

Уязвимости MD5

Алгоритм MD5 уязвим к некоторым атакам. Например, возможно создание двух сообщений с одинаковой хеш-суммой.

На данный момент существуют несколько видов взлома хешей MD5 — подбора сообщения с заданным хешем:

При этом методы перебора по словарю и brute-force могут использоваться для взлома хеша других хеш-функций (с небольшими изменениями алгоритма). RainbowCrack требует предварительной подготовки радужных таблиц, которые создаются для заранее определённой хеш-функции. Поиск коллизий специфичен для каждого алгоритма. Рассмотрим каждый вид «взлома» по отдельности.

Атаки переборного типа

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

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

Как видно из определения, атаки по словарю являются атаками полного перебора. Единственное отличие состоит в том, что данные атаки обычно более эффективны так как становится не нужным перебирать все комбинации символов, чтобы добиться успеха. Злоумышленники используют обширные списки наиболее часто используемых паролей таких как, имена домашних животных, вымышленных персонажей или конкретно характерных слов из словаря – отсюда и название атаки. Однако если пароль действительно уникален (не является комбинацией слов), атака по словарю не сработает. В этом случае использование атаки полного перебора единственный вариант.

Для полного перебора или перебора по словарю можно использовать программы PasswordsPro, MD5BFCPF, John the Ripper. Для перебора по словарю существуют готовые словари.

RainbowCrack

Это ещё один метод взлома хеша. Он основан на генерировании большого количества хешей из набора символов, чтобы по получившейся базе вести поиск заданного хеша.

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

Цепочки хешей — метод для уменьшения требования к объёму памяти. Главная идея — определение функции редукции R, которая сопоставляет значениям хеша значения из таблицы. Стоит отметить, что R не является обращением хеш-функции.

Радужные таблицы являются развитием идеи таблицы хеш-цепочек. Функции редукции применяются по очереди, перемежаясь с функцией хеширования.

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

Существует множество систем взлома паролей и веб-сайтов, которые используют подобные таблицы. Основная идея данного метода — достижение компромисса между временем поиска по таблице и занимаемой памятью. Конечно, использование радужных таблиц не гарантирует 100% успеха взлома систем паролей. Но чем больше набор символов, используемый для создания радужной таблицы, и чем продолжительнее хеш-цепочки, тем больше будет шансов получить доступ к базе данных исходных паролей.

Коллизии MD5

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

где — начальное значение буфера, а и — различные сообщения.

MD5 был тщательно изучен криптографическим сообществом с момента его первоначального выпуска и до 2004 года демонстрировал лишь незначительные недостатки. Однако летом 2004 года криптографы Ван Сяоюнь и Фэн Дэнго продемонстрировали алгоритм способный генерировать MD5-коллизии с использованием стандартного вектора инициализации.

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

Безопасное использование MD5

MD5 – до сих пор является одним из самых распространенных способов защитить информацию в сфере прикладных исследований, а также в области разработки веб-приложений. Хеш необходимо обезопасить от всевозможных хакерских атак.

Информационная энтропия

Энтропия

Надежность и сложность пароля в сфере информационных технологий обычно измеряется в терминах теории информации. Чем выше информационная энтропия, тем надежнее пароль и, следовательно, тем труднее его взломать.

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

Добавление “соли” к паролю

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

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

Декодирование кода MD5

Иногда при работе с компьютером или поврежденными базами данных требуется декодировать зашифрованное с помощью MD5 значение хеша.

Удобнее всего использовать специализированные ресурсы, предоставляющие возможность сделать это online:

  • md5.web-max.ca данный сервис обладает простым и понятным интерфейсом. Для получения декодированного значения нужно ввести хеш и заполнить поле проверочной капчи;

  • md5decrypter.com аналогичный сервис;

  • msurf. ru данный ресурс имеет простой русскоязычный интерфейс. Его функционал позволяет не только расшифровывать значения хеш-кодов, но и создавать их.

Если присмотреться к значениям декодинга, то становится понятно, что процесс расшифровки почти не дает результатов. Эти ресурсы представляют собой одну или несколько объединенных между собой баз данных, в которые занесены расшифровки самых простых слов.

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

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

Заключение

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

К сожалению, выяснилось, что алгоритм MD5 не способен отвечать данным требованиям.  IETF (Internet Engineering Task Force) рекомендовала новым проектам протоколов не использовать MD5, так как исследовательские атаки предоставили достаточные основания для исключения использования алгоритма в приложениях, которым требуется устойчивость к различного рода коллизиям.

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

Спасибо за внимание!

Хэш-функция MD5 / Хабр

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

Что такое хэш-функция и чем её едят?

Хэш-функция предназначена для свертки входного массива любого размера в битовую строку, для MD5 длина выходной строки равна 128 битам. Для чего это нужно? К примеру у вас есть два массива, а вам необходимо быстро сравнить их на равенство, то хэш-функция может сделать это за вас, если у двух массивов хэши разные, то массивы гарантировано разные, а в случае равенства хэшей — массивы скорее всего равны.
Однако чаще всего хэш-функции используются для проверки уникальности пароля, файла, строки и тд. К примеру, скачивая файл из интернета, вы часто видите рядом с ним строку вида b10a8db164e0754105b7a99be72e3fe5 — это и есть хэш, прогнав этот файл через алгоритм MD5 вы получите такую строку, и, если хэши равны, можно с большой вероятностью утверждать что этот файл действительно подлинный (конечно с некоторыми оговорками, о которых расскажу далее).

Конкретнее о MD5

Не буду углубляться в историю создания, об этом можно почитать в википедии, однако отмечу что алгоритм был создан профессором Р. Риверстом в 1991 году на основе алгоритма md4. Описан этот алгоритм в RFC 1321
Алгоритм состоит из пяти шагов:
1)Append Padding Bits
В исходную строку дописывают единичный байт 0х80, а затем дописывают нулевые биты, до тех пор, пока длина сообщения не будет сравнима с 448 по модулю 512. То есть дописываем нули до тех пор, пока длина нового сообщения не будет равна [длина] = (512*N+448),
где N — любое натуральное число, такое, что это выражение будет наиболее близко к длине блока.
2)Append Length
Далее в сообщение дописывается 64-битное представление длины исходного сообщения.
3)Initialize MD Buffer
На этом шаге инициализируется буффер
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Как можно заметить буффер состоит из четырех констант, предназначенный для сбора хэша.
4)Process Message in 16-Word Blocks
На четвертом шаге в первую очередь определяется 4 вспомогательные логические функции, которые преобразуют входные 32-битные слова, в, как ни странно, в 32-битные выходные.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Также на этом шаге реализуется так называемый «белый шум» — усиление алгоритма, состоящее 64 элементного массива, содержащего псевдослучайные числа, зависимые от синуса числа i:
T[i]=4,294,967,296*abs(sin(i))
Далее начинается «магия». Копируем каждый 16-битный блок в массив X[16] и производим манипуляции:
AA = A
BB = B
CC = C
DD = D
Затем происходят «чудесные» преобразования-раунды, которых всего будет 4. Каждый раунд состоит из 16 элементарных преобразований, которые в общем виде можно представить в виде [abcd k s i], которое, в свою очередь, можно представить как A = B + ((A + F(B,C,D) + X[k] + T[i]) <<< s), где
A, B, C, D — регистры
F(B,C,D) — одна из логических функций
X[k] — k-тый элемент 16-битного блока.
T[i] — i-тый элемент таблицы «белого шума»
<<< s — операция циклического сдвига на s позиций влево.
Приводить все раунды не имеет смысла, все их можно посмотреть тут
Ну и в конце суммируем результаты вычислений:
A = A + AA
B = B + BB
C = C + CC
D = D + DD
5) Output
Выводя побайтово буффер ABCD начиная с A и заканчивая D получим наш хэш.

Надежность

Существует мнение что взломать хэш MD5 невозможно, однако это неправда, существует множество программ подбирающих исходное слово на основе хэша. Абсолютное большинство из них осуществляет перебор по словарю, однако существуют такие методы как RainbowCrack, он основан на генерировании множества хэшей из набора символов, чтобы по получившейся базе производить поиск хэша.
Также у MD5, как у любой хэш-функции, существует такое понятие как коллизии — это получение одинаковых хэшей для разных исходных строк. В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённый инициализирующий буффер (ABCD). Также в 2004 году китайские исследователи Ван Сяоюнь, Фен Дэнгуо, Лай Сюэцзя и Юй Хунбо объявили об обнаруженной ими уязвимости в алгоритме, позволяющей за небольшое время (1 час на кластере IBM p690) находить коллизии. Однако в 2006 году чешский исследователь Властимил Клима опубликовал алгоритм, позволяющий находить коллизии на обычном компьютере с любым начальным вектором (A,B,C,D) при помощи метода, названного им «туннелирование».

Прилагаю собственный пример реализации функции на C#:
md5.rar

Алгоритм MD5 | Знать работу и использование алгоритма MD5

Алгоритм дайджеста сообщения MD5 — это 5-я версия алгоритма дайджеста сообщения, разработанная Роном Ривестом для создания 128-битного дайджеста сообщения. MD5 намного быстрее, чем другие версии дайджеста сообщения, который берет обычный текст из 512-битных блоков, который далее делится на 16 блоков, каждый из 32-битных, и создает 128-битный дайджест сообщения, который представляет собой набор из четырех блоков. блоков, каждый из 32 бит. MD5 создает дайджест сообщения за пять шагов, т. е. заполнение, добавление длины, разделение ввода на 512-битные блоки, инициализацию цепочки переменных блоков процесса и 4 раунда, а также использование разных констант на каждой итерации.

Использование алгоритма MD5

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

  1. Невозможно сгенерировать два входа, которые не могут создать одну и ту же хеш-функцию.
  2. Невозможно сгенерировать сообщение с таким же хеш-значением.

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

Как работает алгоритм MD5?

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

Шаг 1: добавление битов заполнения
  • Добавление означает добавление дополнительных битов к исходному сообщению. Таким образом, в MD5 исходное сообщение дополняется таким образом, что его длина в битах соответствует 448 по модулю 512. Заполнение выполняется таким образом, чтобы общее количество битов было на 64 меньше, что является кратным длине 512 бит. 964. В этот момент результирующее сообщение имеет длину, кратную 512 битам.

    Шаг 3: Инициализировать буфер MD.

    Буфер из четырех слов (A, B, C, D) используется для вычисления значений дайджеста сообщения. Здесь A, B, C, D — 32-битные регистры, которые инициализируются следующим образом:

    Word A 01 23 45 67
    Слово Б 89 Аб CD Эф
    Слово C Фе DC Ба 98
    Слово D 76 54 32 10
    Шаг 4: Обработка сообщения в блоке из 16 слов

    MD5 использует вспомогательные функции, которые принимают входные данные в виде трех 32-битных чисел и производят 32-битные выходные данные. Эти функции используют логические операторы, такие как ИЛИ, XOR, NOR.

    F(X, Y, Z) XY v не (X)Z
    Г(Х, У, Z) XZ v Y нет (Z)
    Н(Х, Y, Z) X x или Y x или Z
    I(X, Y, Z) Y xor (X v не (Z))

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

     Выход-

    После выполнения всех раундов буфер A, B, C, D содержит вывод MD5, начиная с младшего бита A и заканчивая старшим битом D.

    Пример:

    Ввод: Это статья об алгоритме шифрования
    Вывод: e4d909c290dfb1ca068ffaddd22cbb0

    Преимущества и недостатки алгоритма MD5

    Ниже объяснены преимущества и недостатки:

    • Алгоритмы MD5 полезны, поскольку их легче сравнивать и хранить эти меньшие хэши, чем хранить большой текст переменной длины. Это широко используемый алгоритм односторонних хэшей, используемый для проверки без обязательного указания исходного значения. Системы Unix используют алгоритм MD5 для хранения паролей пользователя в 128-битном зашифрованном формате. Алгоритмы MD5 широко используются для проверки целостности файлов.
    • Кроме того, с помощью этого алгоритма очень легко сгенерировать дайджест исходного сообщения. Он может выполнять дайджест сообщения, имеющего любое количество битов; он не ограничен сообщением, кратным 8, в отличие от MD5sum, который ограничен октетами.
    • Но в течение многих лет MD5 был склонен к хеш-коллизиям, т. е. можно создать одну и ту же хеш-функцию для двух разных входных данных. MD5 не обеспечивает защиты от этих коллизий. Вместо MD5, SHA (алгоритм безопасного хеширования, который создает 160-битный дайджест сообщения и разработанный АНБ как часть алгоритма цифровой подписи) теперь приемлем в области криптографии для генерации хеш-функции, поскольку создать SHA непросто. -I столкновение и до сих пор еще не было произведено столкновение.
    • Более того, он намного медленнее, чем оптимизированный алгоритм SHA. SHA намного безопаснее, чем алгоритм MD5, и, кроме того, его можно реализовать в существующей технологии с большей скоростью, в отличие от MD5. В настоящее время на рынке появляются новые алгоритмы хеширования с учетом более высокой безопасности данных, такие как SHA256 (который генерирует 256-битную подпись текста).

    Заключение

    В настоящее время, когда все данные хранятся в облаке и в Интернете, крайне важно обеспечить безопасность данных в качестве первоочередной задачи. Для шифрования личных данных следует использовать наиболее безопасный алгоритм. Недавние исследования показывают, что алгоритму SHA следует придавать первостепенное значение по сравнению с MD5, поскольку MD5 более уязвим для атак столкновений. Однако исследователи предлагают новые алгоритмы, которые являются безопасными и наименее уязвимыми для таких атак, как SHA256.

    Рекомендуемые статьи

    Это руководство по алгоритму MD5. Здесь мы обсудили основную концепцию, использование, работу, преимущества и недостатки алгоритма MD5. Вы также можете просмотреть другие наши рекомендуемые статьи, чтобы узнать больше —

    1. Алгоритм шифрования
    2. Что такое расшифровка?
    3. Что такое криптография?
    4. Криптография против шифрования

    Вот все, что вы должны знать

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

    Прежде чем погрузиться с головой в основную тему, лучше сначала пройтись по базовой концепции хеширования.

    Что такое хеширование?

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

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

    Читайте также: Основные структуры данных и алгоритмы, которые должен знать каждый специалист по обработке и анализу данных

    Хеширование имеет два основных варианта использования:

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

    Весь процесс выглядит следующим образом:

    1. Пользователь регистрируется на сайте с новым паролем
    2. Он передает пароль через хеш-функцию и сохраняет дайджест на сервере
    3. Когда пользователь пытается войти в систему, он снова вводит пароль
    4. Повторно пропускает введенный пароль через хэш-функцию для создания дайджеста
    5. Если вновь созданный дайджест совпадает с дайджестом на сервере, логин верифицируется

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

    Весь процесс следует следующему порядку:

    1. Пользователь загружает файл в Интернет
    2. Он также загружает хеш-дайджест вместе с файлом
    3. Когда пользователь загружает файл, он пересчитывает хеш-дайджест
    4. Если дайджест совпадает с исходным хеш-значением, целостность файла сохраняется

    Теперь, когда у вас есть базовая основа для хэширования, вы можете взглянуть на основной предмет этого руководства — алгоритм MD5.

    Что такое алгоритм MD5?

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

    Рональд Ривест разработал этот алгоритм в 1991 году, чтобы предоставить средства для проверки цифровой подписи. В конце концов, он был интегрирован во множество других фреймворков для поддержки индексов безопасности.

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

    Теперь вы изучите этапы работы алгоритма MD5.

    шагов алгоритма MD5

    Алгоритм состоит из четырех основных разделов:

    Биты заполнения

    Когда вы получаете входную строку, вы должны убедиться, что размер на 64 бит меньше кратного 512. Когда дело доходит до заполнения битов, вы должны сначала добавить единицу (1), а затем нули, чтобы округлить лишнее. символы.

    Длина набивки

    Вам нужно добавить еще несколько символов, чтобы окончательная строка стала кратной 512. Для этого возьмите длину исходного ввода и выразите ее в виде 64 бит. После их объединения окончательная строка готова к хэшированию.

    Инициализировать буфер MD

    Вся строка преобразуется в несколько блоков по 512 бит каждый. Вам также необходимо инициализировать четыре разных буфера, а именно A, B, C и D. Каждый из этих буферов имеет длину 32 бита и инициализируется следующим образом:0003

    А = 01 23 45 67

    B = 89 ab cd ef

    C = fe dc ba 98

    Д = 76 54 32 10

    Обработка каждого блока

    Каждый 512-битный блок разбивается на 16 подблоков по 32 бита каждый. Существует четыре раунда операций, каждый из которых использует все подблоки, буферы и постоянное значение массива.

    Этот массив констант можно обозначить как T[1] -> T[64].

    Каждый из подблоков обозначается как M[0] -> M[15].

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

    • Он передает B, C и D в нелинейный процесс.
    • Результат суммируется со значением, присутствующим в A.
    • Добавляет значение подблока к результату выше.
    • Затем добавляется постоянное значение для этой конкретной итерации.
    • К строке применен циклический сдвиг.
    • В качестве последнего шага он добавляет значение B к строке и сохраняет его в буфере A.

    Описанные выше шаги выполняются для каждого буфера и каждого подблока. Когда последний буфер последнего блока будет заполнен, вы получите дайджест MD5.

    Описанный выше нелинейный процесс отличается для каждого раунда подблока.

    Раунд 1: (b И c) ИЛИ ((НЕ b) И (d))

    Раунд 2: (b И d) ИЛИ (c И (НЕ d))

    Раунд 3: b Исключающее ИЛИ c Исключающее ИЛИ d

    Раунд 4: c исключающее ИЛИ (b ИЛИ (НЕ d))

    На этом вы завершаете работу алгоритма MD5. Теперь вы увидите преимущества, получаемые при использовании этого конкретного алгоритма хеширования.

    Преимущества MD5

    • Простота сравнения. В отличие от последних семейств хеш-алгоритмов, 32-значный дайджест относительно легче сравнивать при проверке дайджеста.
    • Хранение паролей: пароли не нужно хранить в текстовом формате, что делает их доступными для хакеров и злоумышленников. При использовании дайджестов база данных также получает ускорение, поскольку размер всех хеш-значений будет одинаковым.
    • Низкий ресурс: Для интеграции нескольких служб в одну структуру без накладных расходов на ЦП требуется относительно небольшой объем памяти.
    • Проверка целостности: Вы можете отслеживать повреждение файлов, сравнивая хэш-значения до и после передачи. Как только хэши совпадают, проверки целостности файлов действительны, и это позволяет избежать повреждения данных.
    Создайте свой набор навыков сетевой безопасности и победите хакеров в их собственной игре с Certified Ethical Hacking Course. Ознакомьтесь с предварительным просмотром курса прямо сейчас!

    Как Simplilearn может вам помочь?

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

    Курс Simplilearn «Эксперт по кибербезопасности» будет полезен как новичкам, так и опытным профессионалам.


    Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: