Эта операция осуществляется аналогично одноименной операции в алгоритме шифрования AES, т. е. первая строка массива данных остается без изменений, а вторая циклически сдвигается влево на один полубайт. На рис. 59 показано применение операции Shift Rows*() к шифруемым данным.
Операция перемешивания столбцов Mix Columns*()
При выполнении этой операции столбцы данных рассматриваются как многочлены над GF (24) и умножаются по модулю х2(c)1 на многочлен g (x), выглядящий следующим образом:
Это может быть представлено в матричном виде следующим образом:
где с — номер столбца массива данных. В результате такого умножения полубайты столбца Soc и S|C заменяются соответственно на полубайты:
На рис. 60 показано применение операции Mix Columns*() к данным, преобразуемым в ходе зашифрования.
Рис. 59. Преобразование данных с помощью операции Shift Rows*().
Рис. 60. Применение операции Mix Columns*() к преобразуемым данным 112.
Рассмотрим операцию Mix Columns*() более подробно. Пусть нам надо преобразовать столбец:
Первым делом необходимо представить полубайты Soo и S ю в виде многочленов в поле GF (24). Многочлен (х3(c)х2) будет эквивалентен байту S0o = {с}, а многочлен (х3Ф1) — байту S, o={9}.
Для нахождения значения S0o' необходимо выполнить следующие действия:
1. Умножить многочлен (xJ(c)x2) на полубайт {3} или, иначе говоря, на (х®1) по модулю (х4®х®1):
2. Умножить многочлен (хЗ (c)1) на полубайт {2} или, иначе говоря, на х по модулю (х4(c)х (c)1):
3. Сложить по модулю 2 многочлены, полученные в пн. 1.
и 2:
Искомым значением Soo' будет являться многочлен х2(c)х или полубайт {6}.
Теперь найдем значение S ю'. Для этого:
1. Умножим многочлен (xJ(c)x2) на полубайт {2} или, иначе говоря, на х по модулю (х4(c)х (c)1):
2. Умножим многочлен (хЗ (c)1) на полубайт {3} или, иначе говоря, на (х (c)1) по модулю (х4(c)х (c)1):
- 3. Сложим по модулю 2 многочлены, полученные в пп. 1 и
- 2:
Таким образом, искомым значением Si0' будет являться многочлен х© 1 или полубайт {3}.
На рис. 61 наглядно показано преобразование исходного столбца Sio в столбец S;o' с помощью операции Mix Columns*().
Рис. 61. Преобразование столбца с помощью о перации Mix Columns*().