КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Однонаправленные хэш-функции. Требования и стандарты хэш-функций.Хэш-функция предназначена для сжатия подписываемого документа М до нескольких десятков или сотен бит. Хэш-функция h(•) принимает в качестве аргумента сообщение (документ) М произвольной длины и возвращает хэш-значение h(М)=Н фиксированной длины. Обычно хэшированная информация является сжатым двоичным представлением основного сообщения произвольной длины. Следует отметить, что значение хэш-функции h(М) сложным образом зависит от документа М и не позволяет восстановить сам документ М. Хэш-функция должна удовлетворять целому ряду условий:
Большинство хэш-функций строится на основе однонаправленной функции f(•), которая образует выходное значение длиной n при задании двух входных значений длиной п. Этими входами являются блок исходного текста М, и хэш-значение Ні-1 предыдущего блока текста (рис.1): Ні = f(Мi, Нi-1). Хэш-значение, вычисляемое при вводе последнего блока текста, становится хэш-значением всего сообщения М. Рис.1. Построение однонаправленной хэш-функции В результате однонаправленная хэш-функция всегда формирует выход фиксированной длины n (независимо от длины входного текста). Алгоритм безопасного хэширования SНА (Secure Hash Algorithm) разработан НИСТ и АНБ США в рамках стандарта безопасного хэширования SHS (Secure Hash Standard) в 1992 г. Алгоритм хэширования SНА предназначен для использования совместно с алгоритмом цифровой подписи DSА. При вводе сообщения М произвольной длины менее 264 бит алгоритм SНА вырабатывает 160-битовое выходное сообщение, называемое дайджестом сообщения МD (Message Digest). Затем этот дайджест сообщения используется в качестве входа алгоритма DSА, который вычисляет цифровую подпись сообщения М. Формирование цифровой подписи для дайджеста сообщения, а не для самого сообщения повышает эффективность процесса подписания, поскольку дайджест сообщения обычно намного короче самого сообщения. Такой же дайджест сообщения должен вычисляться пользователем, проверяющим полученную подпись, при этом в качестве входа в алгоритм SНА используется полученное сообщение М. Алгоритм хэширования SНА назван безопасным, потому что он спроектирован таким образом, чтобы было вычислительно невозможно восстановить сообщение, соответствующее данному дайджесту, а также найти два различных сообщения, которые дадут одинаковый дайджест. Любое изменение сообщения при передаче с очень большой вероятностью вызовет изменение дайджеста, и принятая цифровая подпись не пройдет проверку. Однонаправленную хэш-функцию можно построить, используя симметричный блочный алгоритм. Наиболее очевидный подход состоит в том, чтобы шифровать сообщение М посредством блочного алгоритма в режиме СВС или СFВ с помощью фиксированного ключа и некоторого вектора инициализации IV. Последний блок шифртекста можно рассматривать в качестве хэш-значения сообщения М. При таком подходе не всегда возможно построить безопасную однонаправленную хэш-функцию, но всегда можно получить код аутентификации сообoения МАС (Message Authentication Code). Более безопасный вариант хэш-функции можно получить, используя блок сообщения в качестве ключа, предыдущее хэш-значение - в качестве входа, а текущее хэш-значение - в качестве выхода. Реальные хэш-функции проектируются еще более сложными. Длина блока обычно определяется длиной ключа, а длина хэш-значения совпадает сдлиной блока. Рис.3. Обобщённая схема формирования хэш-функции Поскольку большинство блочных алгоритмов являются 64-битовыми, некоторые схемы хэширования проектируют так, чтобы хэш-значение имело длину, равную двойной длине блока. Если принять, что получаемая хэш-функция корректна, безопасность схемы хэширования базируется на безопасности лежащего в ее основе блочного алгоритма. Схема хэширования, у которой длина хэш-значения равна длине блока, показана на рис.3. Ее работа описывается выражениями: Н0 = Ін, Нi = ЕA(В) Å С, где Ін - некоторое случайное начальное значение; А, В и С могут принимать значения Мі, Ні-1, (Мi Å Ні-1) или быть константами. Российский стандарт ГОСТ Р 34.11-94 определяет алгоритм и процедуру вычисления хэш-функции для любых последовательностей двоичных символов, применяемых в криптографических методах обработки и защиты информации. Этот стандарт базируется на блочном алгоритме шифрования ГОСТ 28147-89, хотя в принципе можно было бы использовать и другои блочный алгоритм шифрования с 64-битовым блоком и 256-битовым ключом. Данная хэш-функция формирует 256-битовое хэш-значение. Функция сжатия Ні = f (Мi, Нi-1) (оба операнда Мі и Ні-1 являются 256-битовыми величинами) определяется следующим образом: 1. Генерируются 4 ключа шифрования Кj, j = 1...4, путем линейного смешивания Мі, Ні-1 и некоторых констант Сj. 2. Каждый ключ Кj, используют для шифрования 64-битовых подслов hі слова Нi-1 в режиме простой замены: Si = EKj(hj). Результирующая последовательность S4, S3, S2, S1 длиной 256 бит запоминается во временной переменной S. 3. Значение Ні является сложной, хотя и линейной функцией смешивания S, Мi, и Нi-1. При вычислении окончательного хэш-значения сообщения М учитываются значения трех связанных между собой переменных: Нn - хэш-значение последнего блока сообщения; Z - значение контрольной суммы, получаемой при сложении по модулю 2 всех блоков сообщения; L - длина сообщения. Эти три переменные и дополненный последний блок М' сообщения объединяются в окончательное хэш-значение следующим образом: Н = f (Z Å М', f (L, f(М', Нn))). Данная хэш-функция определена стандартом ГОСТ Р 34.11-94 для использования совместно с российским стандартом электронной цифровой подписи.
|