Содержание
Криптогафическая хэш-функция Whirlpool
- Whirlpool
- криптографическая хэш-функция, разработанная Vincent Rijmen и Paulo S. L. M. Barreto . Впервые опубликована в ноябре 2000 года. Осуществляет хэширование входного сообщения с длиной до
бит.
Whirlpool использует структуру Меркля-Дамгарда и одностороннюю функцию сжатия Миагучи-Пренеля
для формирования 512-блока зашифрованого текста . Поскольку внутренний блок шифрования
работает с 512-битными входными сообщениями, то исходное сообщение необходимо разбить на блоки по 512 бит. При этом последний блок, который содержит конец сообщения, может оказаться неполным.
Для решения данной задачи в Whirlpool используется дополнение входного сообщения. Результатом дополнения сообщения является сообщение
, длина которого кратна 512. Пусть
— длина исходного сообщения. Для того, чтобы получить
, необходимо сделать 3 операции:
- К концу сообщения
приписать бит «1» ;
- Приписать x битов «0» так, чтобы длина полученной строки
была кратна 256 нечетное число раз;
- Приписать 256-битное представление числа
.
Полученная строка разбивается на 512-битовые блоки ,
,
, которые используются для генерации последовательности хэш-значений
,
,
.
- строка из 512 «0» битов. Для вычисления
,
шифрует
, используя в качестве ключа
, и выполняет
между
и
. Значением хэш-функции является
.
Раунды
Шифр Whirlpool использует 10 раундов. Размер блока и размер ключа - 512 бит. Ключом для
раунда является .
Функция раунда
512 бит входного блока группируются в 64 байта по 8 бит. Затем эти байты записываются в матрицу размером 8 * 8
Вдальнейшем нам придется работать в конечном поле . Элементы
это байты, они могут складываться спомощью операции XOR. Модель конечного поля
зависит от выбора неприводимого многочлена степени 8. Для алгоритма Whirlpool этим многочленом является
.
КатегорияКриптография