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

Однонаправленную хэш-функцию можно построить, используя в качестве функции f (.) симметричный блочный алгоритм. Наиболее очевид­ный подход состоит в том, чтобы шифровать сообщение M посредством блочного алгоритма в режиме СВС или CFB с помощью фиксированного ключа и некоторого вектора инициализации. Последний блок шифр­текста можно рассматривать в качестве хэш-значения сообщения M. При таком подходе не всегда возможно построить безопасную одно­стороннюю хэш-функцию, но всегда можно получить код аутентифи­кации сообщения КAC.

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

Если принять, что получаемая хэш-функция корректна, безопас­ность схемы хэширования базируется на безопасности лежащего в ее основе блочного алгоритма.

Ниже приведены четыре схемы безопасного хэширования, у которых длина хэш-значения равна длине блока.

Hi -1¾¾¾¾¯         ½ ключ ½ Mi ¾®шифратор¾® Å® Hi  |¾¾¾¾¾¾¾¾¾­  Hi -1¾¾¾¾¯¾¾¾¾¯    ¯  ½ ключ ½  Mi ¾Å®шифратор ¾Å® Å® Hi  |¾¾¾¾¾¾¾¾¾¾¾­
Hi -1¾¾¾¾¯¾¾¾¾¾¯          ½ ключ ½ Mi ¾®шифратор¾Å® Å® Hi |¾¾¾¾¾¾¾¾­  Hi -1¾¯¾¾¾¯             ½ ключ ½ Mi ¾Å®шифратор ® Å® Hi  |¾¾¾¾¾¾¾¾¾­

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: