Протоколы, основанные на использовании однонаправленных ключевых хэш-функций
Протоколы, представленные выше, могут быть модифицированы путем замены симметричного шифрования на шифрование с помощью односторонней ключевой хэш-функции. Это бывает необходимо, если алгоритмы блочного шифрования недоступны или не отвечают предъявляемым требованиям (например, в случае экспортных ограничений).
Своеобразие шифрования с помощью односторонней хэш-функции заключается в том, что оно по существу является односторонним, т. е. не сопровождается обратным преобразованием — расшифровыванием на приемной стороне. Обе стороны (отправитель и получатель) используют одну и ту же процедуру одностороннего шифрования.
Односторонняя хэш-функция hK(•) с параметром-ключом К, примененная к шифруемым данным М, дает в результате хэш-значение т (дайджест), состоящее из фиксированного небольшого числа байт (рис. 1).
Дайджест т = hK(М) передается получателю вместе с исходным сообщением М. Получатель сообщения, зная, какая односторонняя хэш-функция была применена для получения дайджеста, заново вычисляет ее, используя расшифрованное сообщение М. Если значения полученного дайджеста т и вычисленного дайджеста т' совпадают, значит содержимое сообщения М не было подвергнуто никаким изменениям.
Знание дайджеста не дает возможности восстановить исходное сообщение, но позволяет проверить целостность данных. Дайджест можно рассматривать как своего рода контрольную сумму для исходного сообщения. Однако между дайджестом и обычной контрольной суммой имеется и существенное различие. Контрольную сумму используют как средство проверки целостности передаваемых сообщений по ненадежным линиям связи. Это средство проверки не рассчитано на борьбу со злоумышленниками, которым в такой ситуации ничто не мешает подменить сообщение, добавив к нему новое значение контрольной суммы. Получатель в таком случае не заметит никакой подмены.
В отличие от обычной контрольной суммы при вычислении дайджеста применяются секретные ключи. В случае, если для получения дайджеста используется односторонняя хэш-функция с параметром-ключом К, который известен только отправителю и получателю, любая модификация исходного сообщения будет немедленно обнаружена.
На рис. 2 показан другой вариант использования односторонней хэш-функции для проверки целостности данных. В этом случае односторонняя хэш-функция h(•) не имеет параметра-ключа, но применяется не просто к сообщению М, а к сообщению, дополненному секретным ключом К, т. е. отправитель вычисляет дайджест т= h(M, К). Получатель, извлекая исходное сообщение М, также дополняет его тем же известным ему секретным ключом К, после чего применяет к полученным данным одностороннюю хэш-функцию h(•). Результат вычислений — дайджест т' — сравнивается с полученным по сети дайджестом т.
При использовании односторонних функций шифрования в рассмотренные выше протоколы необходимо внести следующие изменения:
функция симметричного шифрования ЕK заменяется функцией hK;
проверяющий вместо установления факта совпадения полей в расшифрованных сообщениях с предполагаемыми значениями вычисляет значение однонаправленной функции и сравнивает его с полученным от другого участника обмена информацией;
для обеспечения независимого вычисления значения однонаправленной функции получателем сообщения в протоколе 1 метка времениtA должна передаваться дополнительно в открытом виде, а в сообщении (2) протокола 3 случайное число rA должно передаваться дополнительно в открытом виде.
Модифицированный вариант протокола 3 с учетом сформулированных изменений имеет следующую структуру:
А←В: rВ; (1)
А → В: rA, hК(rA, rВ, В); (2)
А ← В: hК(rA, rВ, А); (3)
Заметим, что в сообщение (3) протокола включено поле А. Результирующий протокол обеспечивает взаимную аутентификацию и известен как протокол SKID 3.