Операции алгоритма AES.
Раундовая функция алгоритма действует с использованием четырех операций.
SubBytes. В алгоритме есть два типа S-блоков. Один применяется при зашифровании, а другой – при расшифровании. S-блоки имеют прозрачную математическую структуру. Они поочередно обрабатывают строки матрицы состояний s = [s7, ..., s0], воспринимая их как элементы поля . Их работа состоит из двух шагов.
1. Вычисляется мультипликативный обратный к элементу и записывается как новый байт x = [x7, ..., x0]. По соглашению, элемент [0, ..., 0], не имеющий обратного, остается неизменным.
2. Битовый вектор x при помощи линейного преобразования над полем F2 переводится в вектор y:
,
служащий выходом S-блока. Действия S-блока на стадии расшифрования состоят в обратном линейном преобразовании и вычислении мультипликативного обратного. Эти преобразования байтов можно осуществить, используя табличный поиск или микросхему, реализующую вычисление обратных элементов в и линейные преобразования.
ShiftRows. Операция осуществляет циклический сдвиг матрицы состояний. Каждая из ее строк сдвигается на свое число позиций. В рассматриваемой версии шифра это преобразование имеет вид:
Обратная операция – тоже циклический сдвиг, но в противоположном направлении. Данная операция является рассеивающим преобразованием на протяжении нескольких раундов.
MixColumns. Операция в сочетании с предыдущей является рассеивающим преобразованием и обеспечивает зависимось каждого выходного байта от каждого входного.
Каждый столбец матрицы представляется в виде многочлена степени 3 с коэффициентами из :
a(X) = a0 + a1X + a2X2 + a3X3.
Новый столбец получается умножением многочлена a(X) на фиксированный многочлен
с(x) = ‘02h’ + ‘01h’· X + ‘01h’· X2 + ‘03h’· X3.
по модулю многочлена M(X) = X 4 + 1. Так как умножение на многочлен линейная операция, ее можно представить в виде действия матрицы:
.
Матрица коэффициентов невырождена над , поэтому операция обратима, а обратимое к ней действие реализуется матрицей, обратной к выписанной.
AddRoundKey. Сложение с подключом осуществляется побайтово по модулю 2 для каждого байта матрицы состояний с соответствующим элементом матрицы подключа. обратная операция, очевидно, совпадает с исходной.
Структура раундов.
Шифрование в алгоритме AES запишется в псевдокоде следующим образом:
AddRoundKey(S,K[0]);
For i:= 1 to 9 do Begin SubBytes(S); ShiftRows(S); MixColumns(S); AddRoundKey(S,K[i]) End;
SubBytes(S);
ShiftRows(S);
AddRoundKey(S,K[10])
Блок открытого текста, предназначенный для шифрования, записывается в виде матрицы состояний S. Полученный в результате алгоритма шифротекст представляется той же матрицей. В последнем раунде операция MixColumns не осуществляется.
Процедура расшифрования в псевдокоде:
AddRoundKey(S,K[10]);
Дата добавления: 2016-02-13; просмотров: 1583;