1.1.6Однонаправленные хэш-функции, использующие симметричные блочные алгоритмы
В качестве
однонаправленных хэш-функций можно
использовать симметричные блочные
алгоритмы шифрования. Идея в том, что
если безопасен блочный алгоритм, то и
однонаправленная хэш-функция будет
безопасной.
Способ использует
в качестве ключа блок сообщения,
предыдущее хэш-значение в качестве
входа, а текущее хэш-значение служит
выходом.
Действительные
хэш-функции сложнее. Размер блока обычно
совпадает с длиной ключа, и размером
хэш-значения будет длина блока. Так как
большинство блочных алгоритмов
64-битовые, спроектирован ряд схем, дающих
хэш-значение в два раза большее длины
блока.
При условии, что
хэш-функция правильна, безопасность
этой схемы основана на безопасности
используемой блочной функции.
Полезной мерой
для хэш-функций, основанных на блочных
шифрах, является скорость хэширования,
или количество n-битовых
блоков сообщения (п - это размер
блока алгоритма), обрабатываемых при
шифровании. Чем выше скорость хэширования,
тем быстрее алгоритм.
Схемы, в которых
длина хэш-значения равна длине блока
Вот общая схема:
H0
= IH,
где IH
- случайное начальное значение
Hi
= ЕА(В)
С
где А, В и С
могут быть либо Мi,
Hi-1,
(Мi
Hi-1),
либо константы (возможно равные 0). Но
- это некоторое случайное начальное
число IH.
Сообщение разбивается на части в
соответствии с размером блока, Мi
обрабатываемые отдельно. Кроме того,
используется вариант MD-усиления,
возможно та же процедура дополнения,
что и в MD5 и SHA.
Рисунок 23 —
Обобщенная хэш-функция, у которой длина
хэш-значения равна длине блока
Три различные
переменные могут принимать одно из
четырех возможных значений, поэтому
всего существует 64 варианта схем этого
типа.
Рисунок 24 — Четыре
безопасных хэш-функции, у которых длина
хэш-значения равна длине блока