Введем следующие обозначения:
Nb – число 32-битных слов, содержащихся во входном блоке
(в AES Nb = 4);
Nk - число 32-битных слов, содержащихся в ключе шифрования
(в AES Nk = 4, 6,8);
Nr – число раундов шифрования как функция от Nb и Nk (Nr = 10,12,14).
Входные (input), промежуточные (state) и выходные (output) результаты преобразований блоков данных, называются состояниями (State). Состояния удобно представить в виде прямоугольных массивов байтов, имеющих 4 строки и Nb столбцов, где Nb есть длина блока, деленная на 32.
Рисунок 4.14 демонстрирует такое представление, носящее название архитектуры «Квадрат», для 128-битовых входных блоков определенных в стандарте AES. Последовательность битов состояния записывается по колонкам сверху вниз, колонки следуют слева направо. Столбец матрицы образует 32-битовый вектор (слово), вся матрица содержит один блок данных и описывает состояние.
input | state | output | |||||||||||
in0 | in4 | in8 | in12 | s0 | s4 | s8 | s12 | out0 | out4 | out8 | out12 | ||
in1 | in5 | in9 | in13 | s1 | s5 | s9 | s13 | out1 | out5 | out9 | out13 | ||
in2 | in6 | i10 | in14 | s2 | s6 | s10 | s14 | out2 | out6 | out10 | out14 | ||
in3 | in7 | in11 | in15 | s3 | s7 | s11 | s15 | out3 | out7 | out11 | out15 |
Рисунок 4.14. Пример представления блока в виде матрицы для Nb=4
|
|
Ключ k также можно представить в виде прямоугольного массива байтов, который имеет 4 строки и Nk столбцов, где Nk есть длина ключа, деленная на 32. Если колонку каждого из массивов рассматривать как 4-байтовое слово, то можно считать, что ключ и всякое состояние есть последовательность 4-байтовых слов.
Длины блока и ключа могут выбираться независимо друг от друга и составляют, как правило, 128, 192 или 256 бит.
Ключ k может иметь любую длину, кратную 4 байтам, но если его длина отличается от 128, 192 или 256 бит, необходимо доопределить число Nr циклов шифрования.
Длина блока также может быть любой, кратной 4 байтам, но не менее 16 байт. При этом необходимо доопределить 3 константы сдвига.
Число Nr циклов шифрования (раундов) определяется на старте и зависит от Nb и Nk:
Nr | Nk=4 | Nk=6 | Nk = 8 |
Nb=4 | 10(AES-128) | 12(AES-192) | 14(AES-256) |
Nb =6 | 12 | 12 | 14 |
Nb = 8 | 14 | 14 | 14 |