Стандарты Хеш-функций. Основные определения и требования безопасности к функциям хеширования, страница 10

3.4.1 Описание и анализ алгоритма Whirlpool.

Whirlpool – является  хэш-функцией, устойчивой к коллизиям, оперирует с блоками по 512 бит и генерирует 512-битный хеш результат. Whirlpool состоит из итеративной функции сжатия, основанной на 512-и битном блочном шифре, который выполняется за 10 циклов.

Whirlpool построен по схеме хеширования Миагучи-Принеля:

,

,        

,

где  - вектор инициализации,  – блок данных,  - блочный шифр,  - функция сжатия..

Внутренний блочный шифр  использует ключевую матрицу  для шифрования матрицы состояния. Блочный шифр оперирует с 512-битными блоками и имеет 512-битный ключ. Вычисляется 10 циклов, на каждом из которых вызывается функция сжатия , а на 11-ом цикле происходит аффинное добавление ключа .

,

где  – ключи, полученные после развертывания ключа,  – число циклов, по умолчанию равно 10.

Вход и выход функции.

Состояние хэш-функции описывается матрицей . Для формирования матрицы из 512-и битного блока данных используется функция .

Если , то ,

где     -ый байт блока данных,

 – элемент матрицы .

Функция . состоит в замене каждого байта в матрице состояния  на байт, полученный из блока подстановки .

,

где ,  – элементы матрицы .

Таблица подстановки  построена из более мелкой 4-х битной таблицы подстановки и определена в последней спецификации алгоритма.

Циклическая перестановка . Перестановка  независимо циклически сдвигает каждый столбец матрицы  так, что в итоге -тый столбец сдвигается вниз на  позиций.

.

Цель такого преобразования  рассеять байты каждого ряда по всем рядам.

Линейное рассеивание . Линейное рассеивание  - это функция линейного отображения , основанная на коде MDS с матрицей генерации , где

,

т.о. .

Цель рассеивания – перемешать все байты каждого рядка матрицы.

Добавление ключа . Аффинное добавление ключа состоит в побитовом сложении матрицы  с ключевой матрицей .

.

Цикловые константы . Цикловая константа для цикла номер  будет матрица  определенная как:

,

.

Цикловая функция . На -том цикле алгоритма цикловая функция выполняет последовательное отображение  и использует ключевую матрицу .

,

где  – операция последовательного выполнения функций.

Развертывание ключа. Это процедура получения из 512-и битного ключа  последовательности из десяти 512-и битных цикловых ключей .

,

.  

Дополнение и усиление. Перед вычислением хеша сообщения  длинны  его дополняют одним единичным битом и нулевыми битами для достижения длинны  кратной 256. Затем сообщение разбивают на  блоков .

Вычисление хеш-значения. Хеш-значение определено как выход  функции сжатия, преобразованный из матрицы обратно в последовательность байт.

.

В таблицах 4 и 5 представлены характеристики, свойства и аналитические результаты оценки быстродействия алгоритма Whirlpool в сравнении с другими известными алгоритмами [11].

Из анализа этих таблиц следует, что Whirlpool уступает многим алгоритмам по быстродействию, но одним из главных преимуществ алгоритма Whirlpool остается размер хеш кода, равный 512 битам. 


Таблица 4 Характеристики функций хеширования.

Название примитива

Размер слова

(bits)

Размер подключей

(bits)

Размер вспомогательной таблицы

 (bits£bits)

Число сдвигов/

перестановок

+

умножений

XOR,

ADD,

MULT

(bit size)

AND,

OR,

NOT

Общее число логических операций (8-bit)

Общее число умножений (8-bit)

Размер кода (kB)

Whirlpool

8

5120

1280(8x64)

1188

1175(64bit)

1268(64bit)

19544

0

65

SHA-1

32

0/224 (32bit)

312 (32bit),

325 (32bit)

100(32bit)

2948

0

SHA-2/256

32

96 (32bit)/

576 (32bit)

640 (32bit),

600 (32bit)

384(32bit)

6496

0

SHA-2/384

SHA-2/512

64

128 (64bit)/

736 (64bit)

816 (64bit),

760 (64bit)

480(64bit)

16448

0