Раундовые ключи вырабатываются из исходного 16- битового секретного ключа по следующей схеме. Исходный 16- битовый ключ, как уже говорилось ранее, можно представить в виде четырех полубайтов К0о, Кю, Коь Кц. Эти четыре полубайта формируют первый раундовый подключ: К0о', К|0 Кц/, Кц1. Второй и третий раундовые подключи можно получить по следующим формулам:
где верхний индекс г — номер вырабатываемого подключа, а преобразование Sub Half-Bytes*() осуществляется по табл. 35.
Пример преобразования данных с помощью алгоритма SAES
Пусть даны входной блок данных: {7, е, 3, Ь} и секретный ключ К: {3, е, f, а}.
Запишем эти данные в виде двумерных массивов:
Для начала необходимо получить раундовые подключи. Первым раундовым подключом будет являться сам секретный ключ, т. е.
Воспользовавшись формулами (10), найдем:
Таким образом, получили три раундовых подключа:
При зашифровании с помощью алгоритма S AES начальной операцией является сложение исходных данных с первым раундовым подключом. В результате получим:
7 Ф 3 = 4. | 3 (c)f = с. |
е Ф с = 0. | ЬФа = 1. |
Затем произведем замену полубайтов с помощью табл. 35 и получим:
Теперь сдвинем вторую строку на один полубайт влево:
и произведем перемешивание столбцов с помощью операции MixColumns*(). Для начала представим табличные данные в виде многочленов. Итак, S0o = {8} = х3, Sjo = {е} = х3@х2(c)х, S0, = {с} = х3@х2, S" = {9} = х3® 1.
Теперь можно приступить к нахождению новых элементов массива:
Получили следующий массив преобразованных данных:
Следующим шагом является сложение полученных данных со вторым раундовым подключом, т. е.
4 © с = 8. | 60 3 = 5. |
2 ®d = f. | 3 (c)7 = 4. |
Теперь еще раз произведем замену полубайтов с помощью табл. 35 и получим:
Теперь сдвинем вторую строку на один полубайт влево:
Заключительной операцией является сложение с третьим раундовым подключом:
6 Ф 6 = 0. | ЬФ 5 = е. |
8 © е = 6. | 2 ® 9 = b. |
Итак, в результате шифрования данных с помощью алгоритма шифрования S_AES, мы получили в результате значение {О, 6, е, Ь}.