А.Винокуров. Серия "Энциклопедия блочных шифров".
Шифр 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+1F'(kRF(kR-1... F(k2F(k1T))...)).
Число R раундов шифрования переменное и зависит от размера блока данных и ключа. Прибавление ключевых элементов, которым начинается и заканчивается процесс шифрования, а также некоторые другие операции раундового преобразования выполняется побайтно в конечном поле Галуа GF(28), полевой операцией сложения в нем является побитовое суммирование по модулю 2. Соответсвенно, каждый ключевой элемент является байтовой матрицей того же самого размера, что и блок данных. За один раунд шифрования преобразуется полный блок данных, а не его часть, как в сетях Файстеля. На последнем раунде функция нелинейного преобразования отличается от аналогичной функции, используемой в остальных раундах - это сделано для обеспечения алгоритмической эквивалентности прямого и обратного преобразований шифрования.
Процесс расшифрования блока данных алгоритмически идентичен процессу его зашифрования и, следовательно, рисунки 1 и 2 также справедливы и для него, если через T обозначить блок зашифрованных данных, а через T' - открытых. Однако различия между этими двумя процедурами в архитектуре "Квадрат" несколько более существенны, чем в сетях Файстеля - они различаются не только порядком использовани ключевых элементов в раундах шифрования, но и самими этими элементами, и некоторыми другими константами, используемыми в алгоритме. Соответсвующие вопросы рассмотрены ниже.
[Список алгоритмов] [Основные характеристики] [Общая схема] [Нелинейное преобразование] [Расшифрование] [Эквивалентность за- и расшифрования] [Выработка ключевых элементов]
[Начало осмотра] [Что нового] [Статьи] [Выпуски в "Байтах"] [Что скачать] [Криптоалгоритмы] [Глоссарий] [Ссылки] [Гостевая книга] [Форум] [Напиши мне]
Подготовлено 08.06.01. (c) 2001 Андрей Винокуров.