img

MD5, SHA-1 и SHA-2. Какой алгоритм хэширования самый безопасный и как их проверить

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

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

icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
  • она должна быть очень быстрой;
  • она должна иметь возможность возвращать огромный диапазон хэш-значений;
  • она должна генерировать уникальный хэш для каждого входного значения (без коллизий);
  • она должна генерировать различные хэш-значения для одинаковых входных значений;
  • сгенерированные ей хэш-значения не должны иметь ярко выраженной закономерности в своем распределении.

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

Хэш-функции

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

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

1. "The quick brown fox."
2. "The quick brown fax."    

А теперь сравним хэш-значения MD5, сгенерированные для каждого предложения:

1. 2e87284d245c2aae1c74fa4c50a74c77
2. c17b6e9b160cda0cf583e89ec7b7fc22    

Для двух похожих предложений были сгенерированы два мало похожих хэша. Такое свойство является полезным как для проверки, так и для криптографии. Это и есть закон распределения: хэш-значения всех входных данных должны быть равномерно распределены без возможности прогнозирования по всему диапазону возможных хэш-значений.


Популярные хэш-функции

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

MD5

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

SHA-1

SHA расшифровывается как Secure Hash Algorithm. SHA-1 – это первая версия алгоритма, за которой в дальнейшем последовала SHA-2.

В то время как MD5 генерирует 128-битный хэш, SHA-1 создает 160-битный (20 байт). Если представить это число в шестнадцатеричном формате, то это целое число длиной в 40 символов. Подобно MD5, этот алгоритм был разработан для криптографических приложений, но вскоре в нем также были найдены уязвимости. На сегодняшний день он считается более устойчивым к атакам в сравнении с MD5.

SHA-2

Вторая версия алгоритма, SHA-2, имеет множество разновидностей. Пожалуй, наиболее часто используемая – SHA-256, которую Национальный институт стандартов и технологий (NIST) рекомендует использовать вместо MD5 и SHA-1.

Алгоритм SHA-256 возвращает 256-битное хэш-значение, что представляет собой шестнадцатеричное значение из 64 символов. Хоть это и не самый идеальный вариант, то текущие исследования показывают, что этот алгоритм значительно превосходит в безопасности MD5 и SHA-1.

Если рассматривать этот алгоритм с точки зрения производительности, то вычисление хэша с его помощью происходит на 20-30% медленнее, чем с использованием MD5 или SHA-1.

SHA-3

Этот алгоритм хэширования был разработан в конце 2015 года и до сих пор еще не получил широкого применения. Этот алгоритм не имеет отношения к тому, что использовался его предшественником, SHA-2.

Алгоритм SHA3-256 – это алгоритм с эквивалентной применимостью более раннего алгоритма SHA-256, причем вычисления первого алгоритма занимают немного больше времени, чем вычисления второго.


Использование хэш-значений для проверки

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

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

Например, можно сгенерировать контрольную сумму MD5 для tar-файла в Unix, используя следующие команды:

tar cf - files | tee tarfile.tar | md5sum -

Чтобы получить хэш MD5 для файла в Windows, используйте команду PowerShell Get-FileHash:

Get-FileHash tarfile.tar -Algorithm MD5

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

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -c    

где 2e87284d245c2aae1c74fa4c50a74c77 - сгенерированная контрольная сумма, которая была размещена. При успешном выполнении вышеуказанной команды появится статус OK, как показано ниже:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -ctarfile.tar: OK
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Онлайн-курс по кибербезопасности
Полный курс по кибербезопасности от Мерион Нетворкс - учим с нуля специалистов по информационной безопасности. Пора стать безопасником!
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Онлайн-курс по сетевой безопасности
Изучи основы сетевой безопасности и прокачай скилл системного администратора и сетевого инженера
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Еще по теме:
img
Рассказываем, как появился nginx, его отличия от apache, для чего нужен nginx и какие у него преимущества
img
В этом руководстве вы узнаете, как установить и настроить Fail2ban на своем сервере.
img
В этой статье обсудим гипервизоры — важные компоненты процесса виртуализации серверов, как они работают и какие бывают типы.
img
В этой статье мы рассмотрим, как работают различные системные вызовы, разберемся в их функциях, а также постараемся сделать работу вашей системы более безопасной и предсказуемой.
img
Статья объясняет, что такое SWAP-память, как она работает, ее преимущества и недостатки, а также как управлять объемом SWAP-пространства на разных ОС.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59