Обзор популярных алгоритмов хеширования

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

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

MD5

Один из самых популярных алгоритмов хеширования. Его не рекомендуют сегодня для использования, потому что в нём есть несколько известных уязвимостей. Ключевая особенность — преобразует входные данные произвольной длины в хеш-значение с фиксированной длиной 128 бит.

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

+-

Быстрое и простое хеширование данных

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

Может использоваться для проверки целостности данных и обнаружения подмены данных

Не рекомендуют для критических систем: электронных подписей, паролей

Поддержка в различных ОС и языках программирования

SHA-1

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

+-

Надежное хеширование данных, используют для проверки целостности

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

Быстрый и простой в использовании

Не рекомендуют для критических систем: электронных подписей, паролей. SHA-1 надежнее MD5, но недостаточно безопасен

Используется в некоторых стандартах и протоколах, например, в SSL и TLS.

Объявлен небезопасным, поэтому многие организации переходят на более современные и безопасные алгоритмы хеширования

SHA-2

Набор алгоритмов хеширования данных. В него входят хеш-функции с разными размерами выходных значений: SHA-224, SHA-256, SHA-384 и SHA-512. Цифры — это количество бит. Больше размера выходного хеша → выше высокой стойкость к атакам. Но есть и минус: нужно будет больше мощностей.

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

Высокая стойкость к коллизиям, считается одним из наиболее безопасных алгоритмов

Медленнее некоторых других алгоритмов. Особенно это заметно при больших выходных значениях

Разные размеры выходных значений, поэтому можно выбрать вариант в зависимости от задачи

Есть атаки, которые создают коллизии. Но там нужны огромные мощности

Поддержка многими ОС и языками программирования

Применяют для защиты данных, электронных подписей, проверки целостности и подлинности данных, хранения паролей

SHA-3

Один из наиболее безопасных и современных алгоритмов хеширования данных. Из-за того, что он относительно новый — есть ограничения по поддержки в ОС и языках программирования.

+-

Устойчив к атакам

Относительно новый алгоритм: его ещё не все приняли и потестили

Высокая производительность на современных процессорах

Сложен для эксплуатации по сравнению с прошлыми алгоритмами

Генерирует хеш-значения в зависимости от задачи

Довольно медлительный: уступает, например, SHA-256

Для высокой скорости хеширования нужно специальное оборудование

BLAKE

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

+-

Высокая скорость

BLAKE использовали меньше, чем SHA-1 и MD5. Он недостаточно изучен, и это вызывает осторожность при применении в критических системах

Высокая стойкость к атакам

Старые приложения не поддерживают BLAKE, поэтому могут быть проблемы при обмене данными между разными приложениями

Открытый исходный код

Сравнение алгоритмов хеширования

Размер ключа → длина ключа алгоритма Размер блока → размер данных, которые алгоритм обрабатывает за один раз

АлгоритмРазмер хэша (бит)Размер блока (бит)Размер ключа (бит)Скорость хэшированияУстойчивость к атакамСложность атаки

MD5

128

512

Высокая

Уязвим к коллизиям

Можно атаковать за небольшое время

SHA-1

160

512

Высокая

Уязвим к коллизиям

Можно атаковать за небольшое время

SHA-2

224, 256, 384, 512

512, 1024

Высокая

Безопасен

Зависит от размера хэша

SHA-3

224, 256, 384, 512

1152, 1088, 832, 576, 512, 288

Средняя

Безопасен

Зависит от размера хэша

BLAKE

224, 256, 384, 512

512, 1024

256, 512

Средняя

Безопасен

зависит от размера хеша и ключа

Last updated