Материал предоставлен http://it.rfet.ru

Хеш-функции

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

Хеш-функция предназначается для компактного представления длинных последовательностей (слов). Она преобразует сообщение произвольной длины над данным алфавитом в блок фиксированной длины над тем же алфавитом, т.е. производит свертку всех сообщений (слов) в сообщения (слова) одной и той же заданной длины. Так, например, отечественная функция хеширования ГОСТ Р 34.11-94 «Информационная технология. Криптографическая защита информации. Функция хеширования», базирующаяся на алгоритме шифрования ГОСТ 28147-89, переводит двоичные последовательности произвольной длины в двоичные 256-битовые слова, а разработанная в 1992 году Ривестом MD-5 дает 128- битовое хеш-значение (называемое дайджестом сообщения, Message Digest).

Нетрудно придумать примеры хеш-функций: пусть, скажем, сверткой сообщения является его начальный пятибуквенный отрезок или просто первая буква. Однако криптографическая хеш-функция %%h%% должна для любого слова %%p%% не только достаточно просто вычислять его свертку %%h(p)%%, но и обладать следующими защитными свойствами:

  1. (противодействие определению прообраза) если известно, что q является сверткой некоторого слова, то практически невозможно найти слово p, для которого %%h(p)=q%%;
  2. (противодействие обнаружению второго прообраза) для данного слова p невозможно найти другое слово %%p′%% с такой же сверткой: %%h(p′)=h(p)%%;
  3. (противодействие коллизии) невозможно найти два разных слова %%p%% и %%p′%% с одинаковой сверткой: %%h(p)=h(p′)%%.

Какое из свойств противодействия (2) или (3) хеш-функции, по вашему мнению важнее для ее практического использования?

В алгоритмах ЭЦП перед изготовлением подписи исходное сообщение %%m%% заменяется его сверткой %%h(m)%%, где %%h%% - выбранная для данной процедуры ЭЦП хеш-функция. В отечественном стандарте ЭЦП ГОСТ Р 34.10-2001, как и в его предшественнике ГОСТ Р 34.10-94, используется упомянутая хеш-функция ГОСТ Р 34.11-94. Хеш-функция SHA (Secure Hash Algorithm), применяемая в американском стандарте ЭЦП 1994 года, выдает 160-битовые значения и имеет большое сходство с MD-5, которая не была стандартизирована из-за обнаруженной слабости в противодействии коллизии. Сравнительная скорость хеширования (Кбайт/c): ГОСТ – 11, MD- 5 – 174, SHA – 75.

В 2012 году российский стандарт хеш-функции был модифицирован Центром защиты информации и специальной связи ФСБ России при участии ОАО «ИнфоТеКС» («Информационные технологии и коммуникационные системы») и приказом Росстандарта от 7 августа 2012 года новый стандарт ГОСТ Р 34.11-2012 был введен в действие с 1 января 2013 года. Необходимость замены вызвана возросшими требованиями к криптографической стойкости и предписаниями стандарта ГОСТ Р 34.10- 2012 на электронную подпись, где используется новая хеш-функция «Стрибог». Неофициальное название хеш-функции ГОСТ Р 34.11-2012 отсылает нас к славянской мифологии и к ее божеству воздушных стихий. В самом стандарте оно не упоминается. Хеш-функция «Стрибог» по своей структуре очень похожа на ГОСТ Р 34.11-94. Она состоит из двух хеш-функций «Стрибог-256» и «Стрибог-512» с длинами результирующих значений 256 и 512 битов соответственно.

Кроме выполнения задачи компактного представления информации, криптографические хеш-функции, обладая вышеуказанными свойствами противодействия, могут служить и для аутентификации сообщений. Код проверки подлинности сообщения, или MAC (Message Authentication Code) – это зависящая от секретного ключа криптографическая хеш-функция. Если абоненты сети A и B используют общий секретный ключ k, то A, посылая для B сообщение %%m%%, прикрепляет к нему MAC – хеш-значение %%h(k||m)%% (к сообщению впереди приписывается ключ, создавая единый массив). Так как B знает ключ k, то, получив сообщение, скажем %%m′%%, он вычислит %%h(k||m′)%% и, сравнив это значение с присланным MAC %%h(k||m)%%, увидит, изменилось или нет исходное сообщение в ходе передачи.

Коды MAC используются не только для аутентификации файлов, которыми обмениваются пользователи, но и для проверки сохранности личных файлов при возможном вредоносном воздействии: владелец составляет таблицу MAC своих файлов и при обращении к какому-либо из них сверяет его вновь вычисленный MAC со значением, записанным в таблице.

Аутентификация. Электронная цифровая подпись.Криптографические хеш-функции