Обзор популярных алгоритмов хеширования
В этой статье расскажем подробнее о самых распространенных алгоритмах хеширования. Разберем их суть, плюсы и минусы.
Last updated
В этой статье расскажем подробнее о самых распространенных алгоритмах хеширования. Разберем их суть, плюсы и минусы.
Last updated
Первую часть материала, где мы рассказали, что такое хеширование, читайте здесь. А теперь разберем некоторые из алгоритмов.
Один из самых популярных алгоритмов хеширования. Его не рекомендуют сегодня для использования, потому что в нём есть несколько известных уязвимостей. Ключевая особенность — преобразует входные данные произвольной длины в хеш-значение с фиксированной длиной 128 бит.
Поэтому его часто используют для проверки исходных данных. Любое изменение приведет к кардинально другому хеш-значению. Другие сферы применения: создание хеш-таблиц и проверка целостности данных в некритических системах.
Быстрое и простое хеширование данных
Небезопасен для криптографических задач, так как существуют атаки, которые позволяют создавать коллизии в хеш-функции
Может использоваться для проверки целостности данных и обнаружения подмены данных
Не рекомендуют для критических систем: электронных подписей, паролей
Поддержка в различных ОС и языках программирования
Преобразует произвольные данные переменной длины в хеш-значение с фиксированной длиной 160 бит. Тоже устаревший алгоритм, и тоже не стоит использовать его для критических систем.
Надежное хеширование данных, используют для проверки целостности
Небезопасен для криптографических задач, так как существуют атаки, которые позволяют создавать коллизии в хеш-функции
Быстрый и простой в использовании
Не рекомендуют для критических систем: электронных подписей, паролей. SHA-1 надежнее MD5, но недостаточно безопасен
Используется в некоторых стандартах и протоколах, например, в SSL и TLS.
Объявлен небезопасным, поэтому многие организации переходят на более современные и безопасные алгоритмы хеширования
Набор алгоритмов хеширования данных. В него входят хеш-функции с разными размерами выходных значений: SHA-224, SHA-256, SHA-384 и SHA-512. Цифры — это количество бит. Больше размера выходного хеша → выше высокой стойкость к атакам. Но есть и минус: нужно будет больше мощностей.
SHA-2 один из самых распространенных. Довольно безопасен для применения в криптографических целях. Но всё-таки есть атаки, которые могут создать коллизии. Благо, для них требуются огромные мощности, поэтому они не так страшны: их можно отражать.
Высокая стойкость к коллизиям, считается одним из наиболее безопасных алгоритмов
Медленнее некоторых других алгоритмов. Особенно это заметно при больших выходных значениях
Разные размеры выходных значений, поэтому можно выбрать вариант в зависимости от задачи
Есть атаки, которые создают коллизии. Но там нужны огромные мощности
Поддержка многими ОС и языками программирования
Применяют для защиты данных, электронных подписей, проверки целостности и подлинности данных, хранения паролей
Один из наиболее безопасных и современных алгоритмов хеширования данных. Из-за того, что он относительно новый — есть ограничения по поддержки в ОС и языках программирования.
Устойчив к атакам
Относительно новый алгоритм: его ещё не все приняли и потестили
Высокая производительность на современных процессорах
Сложен для эксплуатации по сравнению с прошлыми алгоритмами
Генерирует хеш-значения в зависимости от задачи
Довольно медлительный: уступает, например, SHA-256
Для высокой скорости хеширования нужно специальное оборудование
Семья алгоритмов хеширования данных. 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
Средняя
Безопасен
зависит от размера хеша и ключа