А.Винокуров. Серия "Энциклопедия блочных шифров".
Шифр Rijndael выполнен в архитектуре "Квадрат" (Square), получившей свое название от первого построенного в соответсвии с ее принципами криптоалгоритма. В Rijndael Блоки открытых и зашифрованных данных, соответственно T и T', представляются в виде массивов из 16, 24 или 32 байтов:
T = (t1, t2,...,tN)
T' = (t'1, t'2,...,t'N)
| t | = | t' | = 8, N{16, 24, 32}.
В соответсвии с использованными архитектурными принципами в ходе
криптографических преобразований исходный и зашифрованный блоки данных, а также
все промежуточные результаты процесса шифрования интерпретируются как матрицы
байтов размером 4n, откуда получаем
n = N/4,
n
{4, 6, 8}. Матрицы заполняются байтами
входного блока (открытых данных при зашифровании и зашифрованных данных при
расшифровании соответсвенно) по столбцам сверху вниз и слева направо, и в точно
таком же порядке извлекаются байты из матрицы-результата:
,
.
Схема преобразования данных при зашифровании показана на рисунке 1, схема соответсвующего алгоритма - на русунке 2.
![]() Рис. 1. Цикл шифрования Rijndael - схема преобразования данных. |
![]() Рис. 2. Цикл шифрования Rijndael - схема алгоритма. |
На рисунках использованы следующие обозначения:
T, T' - открытый и зашифрованный блоки данных соответственно;
ki - i-тый ключевой элемент;
F, F' - регулярное нелинейное преобразование и преобразование последнего раунда соответсвенно;
Xi - промежуточное состояние шифруемого блока после прибавления i-того ключевого элемента.
Как видно из рисунков 1 и 2, процесс зашифрования состоит из чередующихся прибавлений ключевых элементов к блоку данных и нелинейного преобразования этого блока:
T' = EK(T) = kR+1
F'(kR
F(kR-1
... F(k2
F(k1
T))...)).
Число R раундов шифрования переменное и зависит от размера блока данных и ключа. Прибавление ключевых элементов, которым начинается и заканчивается процесс шифрования, а также некоторые другие операции раундового преобразования выполняется побайтно в конечном поле Галуа GF(28), полевой операцией сложения в нем является побитовое суммирование по модулю 2. Соответсвенно, каждый ключевой элемент является байтовой матрицей того же самого размера, что и блок данных. За один раунд шифрования преобразуется полный блок данных, а не его часть, как в сетях Файстеля. На последнем раунде функция нелинейного преобразования отличается от аналогичной функции, используемой в остальных раундах - это сделано для обеспечения алгоритмической эквивалентности прямого и обратного преобразований шифрования.
Процесс расшифрования блока данных алгоритмически идентичен процессу его зашифрования и, следовательно, рисунки 1 и 2 также справедливы и для него, если через T обозначить блок зашифрованных данных, а через T' - открытых. Однако различия между этими двумя процедурами в архитектуре "Квадрат" несколько более существенны, чем в сетях Файстеля - они различаются не только порядком использовани ключевых элементов в раундах шифрования, но и самими этими элементами, и некоторыми другими константами, используемыми в алгоритме. Соответсвующие вопросы рассмотрены ниже.
[Список алгоритмов] [Основные характеристики] [Общая схема] [Нелинейное преобразование] [Расшифрование] [Эквивалентность за- и расшифрования] [Выработка ключевых элементов]
Подготовлено 08.06.01. (c) 2001 Андрей Винокуров.