Хэш, хэш-сумма (от англ. hash — путаница, мешанина) — последовательность символов фиксированной длины, полученная путем преобразования произвольных исходных данных (числа, текста, файла и др.) при помощи специального математического алгоритма, которая однозначно соответствует этим исходным данным, но не позволяет их восстановить. Процесс преобразования данных в хэш называют хэшированием, а алгоритм хэширования — хэш-функцией. Большинство распространенных хэш-функций на выходе дают большие числа в шестнадцатеричном представлении.
Особенности хэш-функций
Хэш обладает следующими свойствами:
- Необратимость. Из хэш-суммы нельзя восстановить исходные данные ни математическими методами, ни перебором.
- Воспроизводимость. Преобразование одних и тех же исходных данных при помощи одной и той же хэш-функции дает на выходе один и тот же результат.
- Уникальность. При хэшировании разных исходных данных должны получаться разные хэши, даже если данные различаются незначительно. Ситуация, когда в результате преобразования, скажем, двух разных паролей получается один и тот же хэш, называется коллизией. Высокая вероятность коллизии делает хэш-функцию ненадежной.
Сферы применения хэширования
Преобразование данных в хэши используется в криптографии, а также для верификации и хранения информации. Среди самых популярных применений:
- Хранение паролей и аутентификации. Как правило, сервисы хранят массив паролей в виде хэш-сумм, чтобы ни администраторы, ни возможные взломщики не имели к ним непосредственного доступа. Для аутентификации пользователя система хэширует введенный им пароль и сравнивает полученный хэш с тем, который хранит для соответствующего логина.
- Проверка данных на целостность.При пересылке сообщений и файлов возможны случайные (из-за сбоев) или намеренные искажения данных. Чтобы убедиться, что этого не произошло, отправитель может переслать получателю хэш-сумму своего сообщения, а получатель — сравнить ее с хэш-суммой сообщения, которое ему пришло.
- Поиск зловредов— специалист или защитное решение могут сравнить хэш того или иного файла с базой хэшей вредоносных файлов. Если он совпадет хотя бы с одним хэшем из базы, файл помечается как вредоносный.
Популярные алгоритмы хэширования
Алгоритм, генерирующий хэши длиной в 128 бит. Ранее применялся для защиты данных, но в 2011 году был признан недостаточно надежным ввиду высокой вероятности коллизий. Тем не менее этот алгоритм используется для проверки целостности контента и идентификации вредоносных файлов.
- SHA-1
SHA расшифровывается как Secure Hash Algorithm (алгоритм безопасного хэширования). В семейство SHA входит несколько алгоритмов. SHA-1 создает хэш-суммы длиной в 160 бит. Как и MD5, этот алгоритм изначально использовался для защиты данных, но впоследствии был заменен более современными аналогами.
- SHA-2
Усовершенствованная версия алгоритма SHA-1. Она представлена несколькими вариантами, наиболее известный из них — SHA-256. Он генерирует 256-битный хэш и применяется в технологии блокчейн для верификации транзакций.
- SHA-3
Алгоритм утвержден и опубликован в 2015 году. Он относится к семейству SHA, однако значительно отличается от SHA-1 и SHA-2. SHA-3 может генерировать значения длиной 224, 256, 384 и 512 бит.