Экстернат |
Усовершенствованный стандарт шифрования (AES — Advanced Encryption Standard)
Алгоритм
Алгоритм 10.1 — простой алгоритм для процедуры расширения ключа (версия AES-128).
10.1. Программа на псевдокоде для расширения ключей в AES128
Пример 10.1
Таблица 10.3 показывает, как вычисляются ключи для каждого раунда. Предполагается, что между Алисой и Бобом согласован ключ шифра на 128 битов — (24 75 A2 B3 34 75 56 88 31 E2 12 00 13 AA 54 87) 16.
Раунд | Значения t | Первое слово в раунде | Второе слово в раунде | Третье слово в раунде | Четвертое слово в раунде |
---|---|---|---|---|---|
- | w00=2475A2B3 | w01=34755688 | w02=31E21200 | w03=13AA5487 | |
1 | AD20177D | w04=8955B5CE | w05=BD20E346 | w06=8CC2F146 | w07=9F68A5C1 |
2 | 470678DB | w08=CE53CD15 | w09=73732E53 | w10=FFB1DF15 | w11=60D97AD4 |
3 | 31DA48DO | w12=FF8985C5 | w13=8CFAAB96 | w14=734B7483 | w15=2475A2B3 |
4 | 47AB5B7D | w16=B822DEB8 | w17=34D8752E | w18=479301AD | w19=54010FFA |
5 | 6C762D20 | w20=D454F398 | w21=E08C86B6 | w22=A71F871B | w23=F31E88E1 |
6 | 52C4F80D | w24=86900B95 | w25=661C8D23 | w26=C1030A38 | w27=321D82D9 |
7 | E4133523 | w28=62833EB6 | w29=049FB395 | w30=C59CB9AD | w31=F7813B74 |
8 | 8CE29268 | w32=EE61ACDE | w33=EAFE1F4B | w34=2F62A6E6 | w35=D8E39D92 |
9 | OA5E4F61 | w36=E43FE3BF | w37=OEC1FCF4 | w38=21A35A12 | w39=F940C780 |
10 | 3PC6CD99 | w40=DBF92E26 | w41=D538D2D2 | w42=F49B88CO | w43=ODDB4F40 |
В каждом раунде вычисление последних трех слов очень просто. Для вычисления первого слова мы должны сначала вычислить значение временного слова (t). Например, первое t (для раунда 1 ) вычислено как
Пример 10.2
Каждый ключ раунда в AES зависит от предыдущих ключей раунда. Зависимость, однако, нелинейная из-за преобразования SubWord. Сложение констант раунда также гарантирует, что каждый ключ раунда будет отличаться от предыдущего.
Пример 10.3
Два множества ключей раунда могут быть созданы от двух шифроключей, которые различаются только в одном бите.
Как показывает таблица 10.4, имеются существенные разности между двумя соответствующими ключами раунда — R означает "раунд", B и D означают разность битов.
R. | Ключи для множества 1 | Ключи для множества 2 | B.D. | ||||||
---|---|---|---|---|---|---|---|---|---|
- | 1245A2A1 | 2331A4A3 | B2CCAA34 | C2BB7723 | 1245A2A1 | 2331A4A3 | B2CCAB34 | C2BB7723 | 01 |
1 | F9B08484 | DA812027 | 684D8A13 | AAF6FD30 | F9B08484 | DA812027 | 684D8B13 | AAF6FC30 | 02 |
2 | B9E48028 | 6365AOOF | OB282A1C | A1DED72C | B9008028 | 6381AOOF | OBCC2B1C | A13AD72C | 17 |
3 | AOEAF11A | C38F5115 | C8A77B09 | 6979AC25 | 3DOEF11A | 5E8F5115 | 55437A09 | F479AD25 | 30 |
4 | 1E7BCEE3 | DDF49FF6 | 1553E4FF | 7C2A48DA | 839BCEA5 | DD149FBO | 8857E5B9 | 7C2E489C | 31 |
5 | EB2999F3 | 36DD0605 | 238EE2FA | 5FA4AA20 | A2C910B5 | 7FDD8F05 | F78A6ABC | 8BA42220 | 34 |
6 | 82852E3C | B4582839 | 97D6CAC3 | C87260E3 | CB5AA788 | B487288D | 430D4231 | C8A96011 | 56 |
7 | 82553FD4 | 360D17ED | A1DBDD2E | 69A9BDCD | 588A2560 | ECODODED | AF004FDC | 67A92FCD | 50 |
8 | D12F822D | E72295CO | 46F948EE | 2F50F523 | OB9F98E5 | E7929508 | 4892DAD4 | 2F3BF519 | 44 |
9 | 99C9A438 | 7EEB31F8 | 38127916 | 17428C35 | F2794CFO | 15EBD9F8 | 5D79032C | 7242F635 | 51 |
10 | 83AD32C8 | FD460330 | C5547A26 | D216F613 | E83BDABO | FDD00348 | AOA90064 | D2EBF651 | 52 |
Пример 10.4
Понятие слабых ключей, которое мы обсуждали для DES в "Стандарт шифрования данных (DES)" , не применимо к AES. Предположим, что все биты в ключе шифра — нули. Ниже для этого случая показаны слова для некоторых раундов:
Все слова перед раундом и в первом раунде равны между собой. Во втором раунде первое слово соответствует третьему; второе слово соответствует четвертому. Однако после второго раунда совпадений нет; каждое слово различно.
Расширение ключа в AES-192 и AES-256
Алгоритмы расширения ключей в AES-192 и AES-256 — очень похожи на алгоритм расширения ключа в AES-128, со следующими отличиями:
1. В AES-192 слова сгенерированы в группы по шесть вместо четырех.
a. Ключ шифра создает первые шесть слов ( w0 к w5 ).
b. Если , то ; иначе .
1. В AES-256 слова сгенерированы в группы по восемь вместо четырех.
a. Ключ шифра создает первые восемь слов ( w0 до w7 ).
b. Если , то ; иначе, wi <-t + wi-8.
c. Если i mod 4=0, но , то wi = Subword (wi-1) + wi-8.
Анализ расширения ключа
Механизм расширения ключа в AES был разработан так, чтобы обеспечить несколько свойств, которые срывают действия криптоаналитика по раскрытию сообщения.
- Даже если Ева знает только часть ключа шифра или значения слов в некотором ключевом раунде, этого недостаточно: она еще должна найти остальную часть ключа шифра, прежде чем сможет найти ключи всех раундов. Это обеспечивается нелинейностью процесса расширения ключа, полученной с помощью преобразования SubWord.
- Два различных ключа шифра, независимо от того, как они соотносятся друг с другом, производят два расширения, которые отличаются по крайней мере в нескольких раундах.
- Каждый бит ключа шифра изменяется в нескольких раундов. Например, изменение единственного бита в ключе шифра изменяет некоторые биты в нескольких раундах.
- Использование констант, RCons, удаляет любую симметрию, которая может быть создана другими преобразованиями.
- В отличие от DES в AES отсутствуют любые слабые ключи.
- Процесс расширения ключа может быть легко реализован на всех платформах.
- Процедура расширения ключа может быть реализована без применения отдельных таблиц; вычисления могут быть сделаны с использованием полей GF(28) и FG(2).