Построение хеш-функции на основе симметричных блочных алгоритмов шифрования

Методы построения криптографически стойких хеш-функций

Практические методы построения хеш-функций можно условно разделить на три группы:

1. на основе какого-либо алгоритма шифрования;

2. на основе какой-либо известной вычислительно трудной математической задачи;

3. «с нуля».

 

Однонаправленную хэш-функцию можно построить, используя симметричный блочный алгоритм (DES, ГОСТ 28147-89, FEAL, AES и др.). Наиболее очевидный подход состоит в том, чтобы шифровать сообщение М посредством блочного алгоритма в режиме СВС или СFВ с помощью фиксированного ключа и некоторого вектора инициализации IV. Последний блок шифртекста можно рассматривать в качестве хэш-значения сообщения М. При таком подходе не всегда возможно построить безопасную однонаправленную хэш-функцию, но всегда можно получить код аутентификации сообщения МАС (Message Authentication Code).

Более безопасный вариант хэш-функции можно получить, используя блок сообщения в качестве ключа, предыдущее хэш-значение - в качестве входа, а текущее хэш-значение - в качестве выхода. Реальные хэш-функции проектируются еще более сложными. Длина блока обычно определяется длиной ключа, а длина хэш-значения совпадает с длиной блока.

 

При использовании для построения h(x) симметричных блочных криптоалгоритмов стойкость хеш-функции гарантируется стойкостью применяемого блочного шифра. Пусть М = М1М2...Мi..Мt , i = 1, t, - последовательность, состоящая из блоков, размер которых равен размеру ключа блочного шифра. Блоки Мi суть результат расширения блоков исходного сообщения меньшей длины. Наиболее надежные схемы получаются при использовании для вычисления текущего хеш-значения hi функции зашифрования Еk, где ключ k - это предыдущее хеш-значение hi-1; хотя известны схемы, в которых в качестве k используется либо очередной блок сообщения М, либо hi-1ÅМi. Наиболее известны следующие схемы формирования хеш-образа h(M) = ht:

 


 


 

На рисунке 5 показаны три варианта построения хеш-функции на основе функции зашифрования Ек(М).

 

Структура, показанная на рис. 5 в, использована при проектировании хеш-функции Whirlpool, представленной в рамках европейского конкурса NESSIE (New European Schemes for Signatures, Integrity and Encryption). В качестве симметричного блочного шифра для реализации функции сжатия авторами использован модифицированный алгоритм AES.

 

Рис. 5. Варианты построения хеш-функций на основе преобразованийЕк (т)