stringtranslate.com

Расписание ключей AES

Advanced Encryption Standard использует расписание ключей для расширения короткого ключа в ряд отдельных раундовых ключей. Три варианта AES имеют разное количество раундов. Каждый вариант требует отдельный 128-битный раундовый ключ для каждого раунда плюс еще один. [примечание 1] Расписание ключей создает необходимые раундовые ключи из исходного ключа.

Круглые константы

Константа раунда rcon i для раунда i расширения ключа представляет собой 32-битное слово: [примечание 2]

где rc i — восьмибитное значение, определяемое как:

где — побитовый оператор XOR , а константы, такие как 00 16 и 11B 16, указаны в шестнадцатеричном формате . Эквивалентно:

где биты rc i рассматриваются как коэффициенты элемента конечного поля , так что eg представляет собой многочлен .

AES использует до rcon 10 для AES-128 (так как требуется 11 раундовых ключей), до rcon 8 для AES-192 и до rcon 7 для AES-256. [примечание 3]

Ключевой график

Расписание ключей AES для 128-битного ключа.

Определять:

Также определите RotWord как однобайтовый циклический сдвиг влево : [примечание 6]

и SubWord как применение AES S-box к каждому из четырех байтов слова:

Тогда для :

Примечания

  1. ^ Варианты Rijndael без AES требуют до 256 бит расширенного ключа на раунд.
  2. ^ В FIPS-197 значением является младший байт с индексом 0.
  3. ^ Варианты Rijndael с большими размерами блоков используют больше этих констант, до rcon 29 для Rijndael с 128-битными ключами и 256-битными блоками (требуется 15 раундовых ключей из каждых 256 бит, что означает 30 полных раундов расширения ключа, что означает 29 вызовов ядра расписания ключей с использованием раундовых констант). Оставшиеся константы для i ≥ 11 : 6C, D8, AB, 4D, 9A, 2F, 5E, BC, 63, C6, 97, 35, 6A, D4, B3, 7D, FA, EF и C5
  4. ^ Другие варианты Rijndael требуют max( N , B ) + 7 раундовых ключей, где B — размер блока в словах.
  5. ^ Другие варианты Rijndael требуют BR слов расширенного ключа, где B — размер блока в словах.
  6. ^ Вращение противоположно направлению порядка байтов. Адреса байтов FIPS-197 в массивах увеличиваются слева направо [ref 1] в прямом порядке байтов, но вращение происходит справа налево. В AES-NI [ref 2] и в lib/crypto/aes.c ядра Linux [ref 3] порядок байтов увеличивается справа налево в прямом порядке байтов, но вращение происходит слева направо.

Ссылки

  1. ^ "Публикация федеральных стандартов обработки информации 197 от 26 ноября 2001 г. Объявление о СТАНДАРТЕ УСОВЕРШЕНСТВОВАННОГО ШИФРОВАНИЯ (AES)" (PDF) . стр. 8 . Получено 16.06.2020 .
  2. ^ «Новый набор инструкций Intel® Advanced Encryption Standard (AES)» (PDF) . стр. 13.
  3. ^ "aes.c". GitHub . Получено 2020-06-15 .

Внешние ссылки