Обзор популярных алгоритмов хеширования
В этой статье расскажем подробнее о самых распространенных алгоритмах хеширования. Разберем их суть, плюсы и минусы.
Первую часть материала, где мы рассказали, что такое хеширование, читайте здесь. А теперь разберем некоторые из алгоритмов.
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