Термин в Энциклопедическом Фонде

Хэш-функция

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

Применение хеширования
1. Проверка на наличие ошибок
Например, контрольная сумма может быть передана по каналу связи вместе с основным текстом. На приёмном конце, контрольная сумма может быть рассчитана заново и её можно сравнить с переданным значением. Если будет обнаружено расхождение, то это значит, что при передаче возникли искажения и можно запросить повтор.
2. Проверка пароля
В большинстве случаев пароли фразы не хранятся на целевых объектах, хранятся лишь их хэш-значения. Хранить пароли в открытом виде нецелесообразно, так как в случае несанкционированного доступа злоумышленник узнает все пароли и сразу сможет ими воспользоваться, а при хранении хэш-значений он узнает лишь хэш-значения, которые не обратимы в исходные данные, в данном случае в пароли. В ходе процедуры аутентификации вычисляется хэш-значение введённой парольной фразы, и сравнивается с сохранённым.
Примером в данном случае могут служить ОС GNU/Linux и Microsoft Windows XP. В них хранятся лишь хэш-значения парольных фраз из учётных записей пользователей.
3. Ускорение поиска данных
Например, при записи текстовых полей в базе данных может рассчитываться их хэш-код и данные могут помещаться в раздел, соответствующий этому хэш-коду. Тогда при поиске данных надо будет сперва вычислить хеш-код текста и сразу станет известно, в каком разделе их надо искать, то есть, искать надо будет не по всей базе, а только по одному её разделу.
4. Использование хеш-функций в криптографии.
К хэш-функциям, используемым в протоколах аутентификации должны удовлетворять следующим требованиям:
■ Стойкость против попыток найти коллизии.
*Коллизией называется пара аргументов М1 и М2 которым соответствует одно и то же значение хэш-функции Н(М1) = Н(М2). Стойкости к возникновению коллизий - важная оценка хэш-функций с точки зрения криптографической стойкости коллизий (два различных набора данных должны иметь различные результаты преобразования).
■ Обеспечивать невозможность вычислить исходные данные по результату преобразования.
В настоящее время существует три способа построения хэш-функции:
■ на основе трудно решаемой математической задачи;
■ на основе алгоритмов блочного шифрования;
■ разработанные с нуля.
Каждый из перечисленных выше методов обладает своими достоинствами и недостатками, однако наиболее распространенными на сегодняшний день оказались два последних метода. Это связано с тем, что при построении хэш-функции с нуля появляется возможность учета эффективности программной реализации.
В свою очередь, широкое использование кэш-функций, построенных на основе алгоритмов блочного шифрования, является результатом тщательной проработки вопроса стойкости многих из существующих блочных алгоритмов.
Список алгоритмов хеширования:
■ Adler-32
■ CRC
■ SHA-1
■ SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
■ HAVAL
■ MD2
■ MD4
■ MD5
■ N-Hash
■ RIPEMD-160
■ Snefru
■ Tiger (TTH)
■ Whirlpool
■ ГОСТ Р34.11-94 (ГОСТ 34.311-95)
■ IP Internet Checksum (RFC 1071)

Источники
1. ru.wikipedia.org - Википедия, Сетевая энциклопедия.
2. "Методы и средства защиты компьютерной информации" Р.Р. Хамидуллин. Учеб. Пособие СПб.: Изд-во СЗТУ, 2006 г.
3. ГОСТ Р 34.11-94. Информационная технология. Криптографическая защита информации. Функция хэширования.
Энциклопедический Фонд