Открыть сервис

Хеш-функция

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

Основные свойства

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

История

Первые идеи использования хеш-функций для организации данных появились в 1950-х годах. В 1953 году американский учёный Ганс Питер Лун разработал алгоритм хеширования для поиска в больших массивах данных. Однако современное понимание криптографических хеш-функций начало формироваться в 1970-х годах с развитием криптографии с открытым ключом.

В 1979 году Ральф Меркле предложил концепцию дерева хешей (дерево Меркле), которая стала основой для многих блокчейн-технологий. В 1990 году Рональд Ривест разработал алгоритм MD4, а затем MD5, которые широко использовались, но позже были признаны уязвимыми. В 1993 году Национальный институт стандартов и технологий США (NIST) опубликовал SHA-0, а затем, в 1995 году, SHA-1. После обнаружения уязвимостей в SHA-1 в 2000-х годах NIST в 2001 году представил семейство SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), которое остаётся стандартом де-факто. В 2012 году NIST объявил победителем конкурса на новый стандарт — SHA-3 (алгоритм Keccak).

Классификация

Хеш-функции делятся на два основных класса:

Криптографические хеш-функции

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

Некриптографические хеш-функции

Оптимизированы для скорости и минимизации коллизий в структурах данных, но не обязаны быть устойчивыми к атакам. Используются в хеш-таблицах, проверке контрольных сумм, дедупликации данных. Примеры: MurmurHash, CityHash, CRC32.

Применение

Проверка целостности данных

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

Хранение паролей

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

Цифровые подписи и сертификаты

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

Блокчейн и криптовалюты

В технологии блокчейн (например, в сети Биткоин) хеш-функции (SHA-256) используются для связывания блоков в цепочку, создания адресов кошельков и в механизме доказательства выполнения работы (Proof-of-Work). Каждый блок содержит хеш предыдущего блока, что обеспечивает неизменность всей истории транзакций.

Хеш-таблицы

В программировании хеш-функции применяются для построения ассоциативных массивов (хеш-таблиц). Ключ преобразуется в индекс массива, что позволяет выполнять операции поиска, вставки и удаления за время O(1) в среднем.

Известные алгоритмы

Критика и ограничения

Основной проблемой криптографических хеш-функций является уязвимость к атакам на коллизии. По мере роста вычислительных мощностей старые алгоритмы (MD5, SHA-1) становятся небезопасными. Кроме того, хеш-функции уязвимы к атакам по сторонним каналам (например, анализ времени выполнения), что требует осторожной реализации.

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

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →