Выбор ключа раунда

Ключ раунда i получается из слов буфера ключа раунда W [Nb * i] до W [Nb * (i+1)].

Алгоритм шифрования

Алгоритм шифрования Rijndael состоит из

· начального сложения с ключом;

· Nr - 1 раундов;

заключительного раунда.

 

Замечание: расширенный ключ всегда получается из ключа шифрования и никогда не специфицируется непосредственно. Тем не менее, на выбор самого ключа шифрования ограничений не существует.

Преимущества алгоритма

Преимущества, относящиеся к аспектам реализации:

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

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

· Преобразование раунда допускает параллельное выполнение, что является важным преимуществом для будущих процессоров и специализированной аппаратуры.

· Алгоритм шифрования не использует арифметические операции, поэтому тип архитектуры процессора не имеет значения.

Простота разработки:

· Алгоритм шифрования полностью "самоподдерживаемый". Он не использует других криптографических компонентов, S-box'ов, взятых из хорошо известных алгоритмов, битов, полученных из специальных таблиц, чисел типа p и тому подобных уловок.

· Алгоритм не основывает свою безопасность или часть ее на неясностях или плохо понимаемых итерациях арифметических операций.

· Компактная разработка алгоритма не дает возможности спрятать люки.

Переменная длина блока:

· Длины блоков от 192 до 256 бит позволяют создавать хэш-функции без коллизий, использующие Rijndael в качестве функции сжатия. Длина блока 128 бит сегодня считается для этой цели недостаточной.

Расширения:

· Разработка позволяет специфицировать варианты длины блока и длины ключа в диапазоне от 128 до 256 бит с шагов в 32 бита.

· Хотя число раундов Rijndael зафиксировано в данной спецификации, в случае возникновения проблем с безопасностью он может модифицироваться и иметь число раундов в качестве параметра.

Расширения

Различная длина блока и ключа шифрования

Обработка ключа поддерживает длину ключа, которая была бы кратна 4 байтам. Единственным параметром, который необходим для определения другой длины ключа, отличной от 128, 192 или 256 бит, является число раундов алгоритма.

Структура алгоритма допускает произвольную длину блока, кратную 4 байтам, с минимумом в 16 байтов. Добавление ключа и ByteSub и MixColumn преобразования не зависят от длины блока. Единственным преобразованием, которое зависит от длины блока, является ShiftRow. Для каждой длины блока должен быть определен специальный массив С1, С2, С3.

Можно определить расширение Rijndael, которое также поддерживает длины блока и ключа между 128 и 256 битами с приращением в 32 бита. Число раундов определяется так:

Nr = max (Nk, Nb) + 6

Это расширяет правило для количества раундов для альтернативных длин блока и ключа.

Дополнительные значения С1, С2 и С3 определены в следующей таблице 4.

 

Таблица 4

Величина сдвига в зависимости от длины блока

 

Nb С1 С2 С3
5 1 2 3
7 1 2 4

 

 

В последнем раунде операция перемешивания столбцов отсутствует, что делает всю последовательность операций симметричной.

Rijndael может использоваться в качестве итерационной хэш-функции. При этом Rijndael применяется в качестве функции раунда. Существует одна возможная реализация. Рекомендуется использовать длину блока и ключа, равной 256 битам.

Существует много способов, с помощью которых Rijndael можно использовать в качестве генератора псевдослучайных чисел. Рассмотрим один из них, в котором применяются длина блока и длина ключа 256 бит.

Существует три операции:

Reset:

· Ключ алгоритма шифрования и состояние устанавливаются в ноль.

Seeding (и reseeding):

· "Seed биты" выбираются таким образом, чтобы обеспечивать минимальную энтропию. Они дополняются нулями до тех пор, пока результирующая строка не будет иметь длину, кратную 256 битам.

· Вычисляется новый ключ шифрования шифрованием с помощью Rijndael блока битов seed, используя текущий ключ шифрования. Это выполняется рекурсивно до тех пор, пока все блоки seed не будут обработаны.

· Состояние изменяется путем применения Rijndael с новым ключом шифрования.

Генератор псевдослучайного числа:

Состояние изменяется путем применения Rijndael с новым ключом шифрования. Первые 128 бит состояния рассматриваются как псевдослучайное число. Данный шаг может быть повторен много раз

Таблица 5

 

Сравнительные характеристики алгоритмов ГОСТ 28147-89 и Rijndael.

 

Показатель ГОСТ 28147-89 Rijndael
Размер блока, бит 64 128, 192, 256
Размер ключа, бит 256 128, 192, 256
Архитектура Однородная сбалансированная сеть Файстеля "Квадрат" (Square)
Число раундов 32 10, 12, 14
Часть блока, шифруемая за один раунд, бит 32 (полблока) 128, 192, 256 (полный блок)
Размер раундового ключевого элемента, бит 32 (половина размера блока) 128, 192, 256 (равен размеру блока)
Структура раунда Простая Более сложная
Используемые на раунде операции Только аддитивные операции, подстановки и сдвиги Широкое использование операций над конечными полями
Эквивалентность прямого и обратного преобразований. С точностью до порядка следования ключевых элементов С точностью до вектора ключевых элементов, узла замен и прочих констант алгоритма

 

В отличие от ГОСТа, размер шифруемого блока и размер ключа в алгоритме Rijndael могут изменяться, что допускается использованной в нем архитектурой "квадрат". Данное свойство позволяет варьировать стойкость и быстродействие алгоритма в зависимости от внешних требований к реализации в некоторых пределах, – однако, не очень широких, – число раундов, а вместе с ним и быстродействие, в двух крайних случаях различаются в 1.4 раза.