
3.1.3. Дешифрование
Дешифрование в Rijndael алгоритмически эквивалентно шифрованию, однако между этими двумя процедурами имеются определенные различия, гораздо более существенные, чем в стандарте DES, где все сводится к порядку использования ключевых элементов. Дешифрование отличается от шифрования по следующим четырем пунктам:
1. Ключевые элементы используются в порядке, обратном тому, в котором они используются при шифровании. Кроме того, все ключевые элементы, кроме первого и последнего, должны быть умножены слева на матрицу, обратную матрице M. Таким образом, если при шифровании используется следующая последовательность ключевых элементов
Kr0, Kr1, Kr2, ... , Krr-1, Krr,
то при дешифровании должна быть использована следующая последовательность элементов:
Krr, M -1 Krr-1, ... , M -1 Krr-2, M -1 Krr-1, Kr0.
2. На шаге побайтовой замены используется узел замен S-1 обратный тому, что применяется в процедуре шифрования S. Таблица узла замен S-1 приведена в приложении 5, таблица 2. Это означает, что каково бы ни было байтовое значение b, всегда справедливо следующее соотношение:
S -1[S[b]] = b.
3. На шаге построчного вращения матрицы данных осуществляется циклический сдвиг строк на то же самое количество элементов, что и при шифровании, но в обратную сторону - вправо. Либо, в силу свойств операции циклического сдвига, можно осуществить вращение строк матрицы в ту же сторону, что и при шифровании, т.е. влево, но на другое количество элементов, вычисляемое по следующей формуле:
Сi' = n - Ci, i = 24.
Константы циклического сдвига влево строк матрицы в процедуре дешифрования в зависимости от числа столбцов матрицы данных приведены
в следующей ниже таблице:
Nb |
4 |
6 |
8 |
С2' |
3 |
5 |
7 |
С3' |
2 |
4 |
5 |
С4' |
1 |
3 |
4 |
4. На шаге умножения слева на постоянную матрицу используется матрица M -1, обратная используемой при шифровании матрице M:
М -1 = |
0E |
0B |
0D |
09 |
09 |
0E |
0B |
0D |
|
0D |
09 |
0E |
0B |
|
0B |
0D |
09 |
0E |
Для выработки ключевой последовательности используется такая же схема, что и при шифровании. При дешифровании необходимо выработать ту же самую последовательность элементов, переставить их в обратном порядке, и все элементы, кроме крайних, умножить слева на матрицу M -1, как это указано в соответствующем разделе.
Процесс дешифрования по стандарту AES показан в приложении 6.
Ключевая последовательность K длиной 128 (192, 256) бит данных поступает на блок расширения ключа БРК, где формируется ключевая последовательность из 4-х байтовых слов, из которой в дальнейшем берутся раундовые ключи. Исходный массив зашифрованного блока данных С длиной 128 (192, 256) бит, поступает на схему сложения по модулю 2, где производится сложение по модулю 2 с раундовым ключом блока Krr . Над данными в блоке S -1 осуществляется преобразование нелинейной замены байт, результат которого поступает на блок циклического сдвига вправо, где осуществляется построчное вращение матрицы данных (сдвиг строк вправо). Результат данной операции заносится в блок памяти БП. С выхода блока БП массив данных складывается по модулю 2 в соответствующем блоке с последующим раундовым ключом Krr-1 блока БРК. В блоке M -1 производится умножение массива данных предшествующего блока на постоянную матрицу М-1. После преобразований в блоках S -1 и циклического сдвига вправо результат заносится опять в БП. Данное преобразование повторяется (r-1) раз, где r – число раундов. Результат дешифрования блока C формируется на входе схемы сложения по модулю 2, где производится сложение результата (r -1) – числа преобразований с последним раундовым ключом блока БРК. После схемы сложения по модулю 2 будет получен открытый текст М.