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