Хеширование и расшифровка MD5 хеш-кода

Что такое MD5?

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

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

Область применения хеш-кодов:

  • Создание электронных подписей;
  • Хранение паролей в базах данных систем безопасности;
  • В рамках современной криптографии для создания уникальных ключей онлайн;
  • Проверка подлинности и целостности элементов файловой системы ПК.

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

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

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

Хеширование и расшифровка MD5 хеш-кода

Проблемы надежности MD5

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

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

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

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

Область применения алгоритма хеширования:

  • Проверка целостности файлов, полученных через интернет – многие инсталляционные пакеты программ снабжены хеш-кодом. Во время активации приложения его значение сравнивается со значением, расположенным в базе данных разработчика;
  • Поиск в файловой системе продублированных файлов – каждый из файлов снабжен вашим хеш-кодом. Специальное приложение сканирует файловую систему компьютера, сравнивая между собой хеши всех элементов. При обнаружении совпадения утилита оповещает об этом посетителя или удаляет дубликат. Одной из подобных программ будет Duplifinder:
Хеширование и расшифровка MD5 хеш-кода
  • Для хеширования паролей – в семействе операционных систем UNIX каждый посетитель системы имеет в себя уникальный пароль, для защиты которого используется хеширование на основе MD5. Некоторые системы на основе Linux также пользуются данным способом шифрования паролей.

Обзор средств для декодирования хеш-кода MD5

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

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

  • md5.web-max.ca – данный сервис обладает простым и понятным интерфейсом. Для получения декодированного значения необходимо ввести хеш и заполнить поле ввода проверочной капчи:
Хеширование и расшифровка MD5 хеш-кода
  • md5decrypter.com – аналогичный сервис;
  • msurf.ru – данный ресурс имеет в себя простой русскоязычный интерфейс. Его функционал может не только расшифровывать значения хеш-кодов, но и создавать их:

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

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

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

Основы безопасности при использовании MD5

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

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

Во многих языках программирования для этого используются специальные классы и возможности. Не являются исключением из правил и серверные языки программирования.

Создать хеш-код MD5 в php можно легко при помощи нескольких возможностей:

  • md5() – в виде одного из настроек принимает значение «соли»;
  • crypt() – в отличие от предыдущей эта функцию в полном объеме автоматизирует весь процесс, в том числе и генерирование значения соли.

Ее синтаксис:

string crypt( string $str [, string $salt ])

Пример использования:

$hash = crypt('password')

При использовании возможности md5() в PHP для задания значения соли используют способы генерации случайных чисел. Например, rand():

<?php$pass = 'admin';function salt() { $s = ''; $length = rand(7,12); // длина соли for($i=0; $i<$length; $i++) { $s.= chr(rand(33,126));//случайный символ из таблицы ASCII } return $s;}echo md5(md5($pass).salt());?>

Кроме применения «соли» было разработано ещё пару способов защиты хеша MD5:

  • MD5(Unix) – заданное первоначальное значение проходит цикл хеширования около 1000 раз;
  • MD5(HMAC) – данный способ основан на использовании в хешировании специального ключа;
  • MD5(Base64) – полученный хеш ещё раз кодируются при помощи алгоритма Base64.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *