Ключевой график AES - AES key schedule
AES использует ключевой график для расширения короткого ключа на несколько отдельных круглых ключей. У трех вариантов AES разное количество раундов. Для каждого варианта требуется отдельный 128-битный ключ раунда для каждого раунда плюс еще один.[примечание 1] Расписание ключей производит необходимые ключи раунда из исходного ключа.
Круглые константы
я | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
rcя | 01 | 02 | 04 | 08 | 10 | 20 | 40 | 80 | 1B | 36 |
Круглая постоянная rconя для раунда я ключевого расширения - 32-битное слово:[заметка 2]
куда rcя - восьмибитное значение, определяемое как:
куда это побитовое XOR оператор и константы, такие как 0016 и 11B16 даны в шестнадцатеричный. Эквивалентно:
где кусочки rcя рассматриваются как коэффициенты элемента конечное поле , так что, например, представляет собой многочлен .
AES использует до rcon10 для AES-128 (так как необходимо 11 круглых ключей), до rcon8 для AES-192 и до rcon7 для AES-256.[заметка 3]
Ключевой график
Определять:
- N как длина ключа в 32-битных словах: 4 слова для AES-128, 6 слов для AES-192 и 8 слов для AES-256
- K0, K1, ... KN-1 как 32-битные слова исходного ключа
- р в качестве необходимого количества ключей раунда: 11 ключей раунда для AES-128, 13 ключей для AES-192 и 15 ключей для AES-256[примечание 4]
- W0, W1, ... W4р-1 как 32-битные слова расширенного ключа[примечание 5]
Также определите RotWord как однобайтный левый круговой сдвиг:[примечание 6]
и Подслово как приложение S-бокс AES к каждому из четырех байтов слова:
Тогда для :
Примечания
- ^ Варианты Rijndael без AES требуют до 256 бит расширенного ключа на раунд
- ^ В FIPS-197 value - младший байт с индексом 0
- ^ Варианты Rijndael с большими размерами блоков используют больше этих констант, вплоть до rcon29 для Rijndael с 128-битными ключами и 256-битными блоками (требуется 15 круглых ключей из каждых 256 бит, что означает 30 полных раундов расширения ключа, что означает 29 вызовов основной график с использованием круглых констант). Остальные константы для я ≥ 11 являются: 6C, D8, AB, 4D, 9A, 2F, 5E, BC, 63, C6, 97, 35, 6A, D4, B3, 7D, FA, EF и C5.
- ^ Другие варианты Rijndael требуют Максимум(N, B) + 7 круглые ключи, где B это размер блока прописью
- ^ Другие варианты Rijndael требуют BR слова расширенного ключа, где B это размер блока прописью
- ^ Вращение противоположно направлению порядка байтов. Адреса байтов FIPS-197 в массивах увеличиваются слева направо[ссылка 1] с прямым порядком байтов, но вращение осуществляется справа налево. В AES-NI[ссылка 2] и в ядре Linux lib / crypto / aes.c[ref 3], порядок байтов увеличивается справа налево с прямым порядком байтов, но вращение - слева направо.
Рекомендации
- ^ «Публикация Федеральных стандартов обработки информации 197, 26 ноября 2001 г., объявляющая о РАСШИРЕННОМ СТАНДАРТЕ ШИФРОВАНИЯ (AES)» (PDF). п. 8. Получено 2020-06-16.
- ^ «Новый набор инструкций Intel® Advanced Encryption Standard (AES)» (PDF). п. 13.
- ^ "aes.c". Получено 2020-06-15.
внешняя ссылка
- Описание ключевого расписания Rijndael
- схематический вид ключевого графика для ключей 128 и 256 бит для 160-битных ключей по криптографии Обмен стеком