HAVAL
Материал из Википедии — свободной энциклопедии
HAVAL — это однонаправленная хэш-функция переменной длины. Функция HAVAL является модификацией функции MD5. Алгоритм HAVAL обрабатывает сообщение блоками размером в 1024 разряда, что в два раза больше, чем в алгоритме MD5. В HAVAL используется восемь 32-разрядных переменных сцепления, то есть в два раза больше, чем в MD5, и переменное число раундов обработки, от трех до пяти (на каждом раунде исполняется 16 шагов). Функция HAVAL может выдавать хэш-значения размером в 128, 160, 192, 224 или 256 разрядов.
В алгоритме HAVAL простые нелинейные функции MD5 заменены сильно нелинейными функциями 7 переменных, каждая из которых удовлетворяет строгому лавинному критерию. На всех раундах применяется одна функция, но на каждом шаге к входным данным применяются различные операции перестановки. Используется новый порядок обработки сообщения, и на каждом шаге (за исключением первого раунда) используется своя прибавляемая константа. Также в алгоритме используются два циклических сдвига. Сердцевиной алгоритма являются такие операции:
- TEMP = (f(j,A,B,C,D,E,F,G) < < 7) + (H < < < 11) + M[i][r(j)] + K(j)
- H = G;G = F;F = E;E = D;D = C;C = B;B = A;A = TEMP
Переменное количество раундов и переменный размер вычисляемого алгоритмом значения означают, что существует 15 версий алгоритма. Атака на алгоритм MD5, выполненная ден Боером и Босселаерсом (англ.), неприменима к алгоритму HAVAL, из-за наличия в нем операции циклического сдвига.
[править] См. также
↑ B.den Boer and A.Bosselaers "Collisions for the Compression Function of MD5" Advances in Cryptology - EUROCRYPT '93 Proceedings, Springer-Verlag, 1994, pp.293-304