Для того чтобы создать ключ для каждого раунда, Nr, процедура расширения ключей создает Nr+1 ключи раунда на 128 бит от единственного 128 -битового ключа шифра. Первые ключи раунда используются для преобразования перед раундом (
Процедура расширения ключей создает слово за словом ключи раунда, где слово — массив из четырех байтов. Процедура создает 4 x (Nr + 1) слова, которые обозначаются
w0, w1, w2..., w4(Nr+1)-1
Другими словами, в версии 10 раундов) имеются 44 слова; в 12 раундов), есть 52 слова; и в 256 версий (с 14 раундами) есть 60 слов. Каждый ключ раунда состоит из четырех слов. Таблица 10.1 показывает отношения между раундами и словами.
| Раунд | Слова | |||
|---|---|---|---|---|
| 1 | w0 | w1 | w2 | w3 |
| 2 | w4 | w5 | w6 | w7 |
| ..... | ..... | |||
| Nr | w4Nr | w4Nr+1 | w4Nr+2 | w4Nr+3 |
Посмотрим, как создаются ключи в версии 44 слова.
(рис 10.1) Расширение ключей в AES Процесс следующий:
1. Первые четыре слова ( W0,W1,W2,W3 ) получены из ключа шифра. Ключ шифра представлен как массив из 16 байтов ( k0 до k15 ). Первые четыре байта ( k0 до k3 ) становятся W0 ; следующие четыре байта ( k4 до k7 ) становятся w1 ; и так далее. Другими словами, последовательное соединение (конкатенация) слов в этой группе копирует ключ шифра.
2. Остальная часть слов ( wi ) от i = 4 – 43 получается следующим образом:
a. Если $$(i\ mod\ 4) \ne 0,\ w_{i} = w_{i - 1} \oplus w_{i - 4}$$, то согласно рисунку 10.1 это означает, что каждое слово получено из одного левого и одного верхнего.
b. Если $$(i\ mod\ 4) = 0,\ w_{i} = t \oplus w_{i - 4}$$. Здесь t — временное слово, результат применения двух процессов, subword и rotword, со словом wi-1 и применения операции Rcon. Другими словами, мы имеем
RotWord (rotate word) — процедура, подобная преобразованию ShiftRows, но применяется только к одной строке. Процедура принимает слово как массив из четырех байт и сдвигает каждый байт влево с конвертированием.
SubWord ( — процедура, подобная преобразованию
Каждая константа раунда Rcon — это 4 -байтовое значение, в котором самые правые три байта являются всегда нулевыми. Таблица 10.2 показывает значения для версии 10 раундами).
| Раунд | Константа (RCon) | Раунд | Константа (RCon) |
|---|---|---|---|
| 1 | (01 00 00 00)16 | 6 | (20 00 00 00)16 |
| 2 | (02 00 00 00)16 | 7 | (40 00 00 00)16 |
| 3 | (04 00 00 00)16 | 8 | (80 00 00 00)16 |
| 4 | (08 00 00 00)16 | 9 | (1B 00 00 00)16 |
| 5 | (10 00 00 00)16 | 10 | (36 00 00 00)16 |
Процедура расширения ключей может использовать либо приведенную выше таблицу, когда вычисляет слова, либо поле GF(28), когда вычисляет крайние левые биты динамически, как это показано ниже.
RC1 -> x1-1 = x0 mod prime = 1 -> 00000001 -> 0116 RC2 -> x2-1 = x1 mod prime = x -> 00000010 -> 0216 RC3 -> x3-1 = x2 mod prime = x2 -> 00000100 -> 0416 RC4 -> x4-1 = x3 mod prime = x3 -> 00001000 -> 0816 RC5 -> x5-1 = x4 mod prime = x4 -> 00010000 -> 1016 RC6 -> x6-1 = x5 mod prime = x5 -> 0100000 -> 2016 RC7 -> x7-1 = x6 mod prime = x6 -> 01000000 -> 4016 RC8 -> x8-1 = x7 mod prime = x7 -> 10000000 -> 8016 RC9 -> x9-1 = x8 mod prime = x4+x3+x+1 -> 00011011 -> 1B16 RC10 -> x10-1 =x9 mod prime = x5+x4+x2+x -> 00110110 -> 3616
Крайний левый байт, который обозначен RCi — это xi-1, где i — номер раунда. x8 + x4 + x3 + x +1 ).
Алгоритм 10.1 — простой алгоритм для процедуры расширения ключа (версия
$$\tt\parindent0pt
KeyExpansion ([$key_{0}$ to $key_{15}$], [$w_{0}$ to $w_{43}$]
\{
for (i = 0 to 3)
$w_{i} \gets key_{4i} + key_{4i+1} + key_{4i+2} + key_{4i+3}$
\ for (i = 4 to 43)
\ \{
\ \ \ if (i mod 4 $\ne$ 0) $w_{i} \gets w_{i-1} + w_{i-4}$
\ \ \ else
\ \ \ \{
\ \ \ \ \ t $\gets$ SubWord (RotWord ($w_{i-1}$)) $\oplus$ $RCon_{i/4}$
\ \ \ \ \ $w_{i} \gets t + w_{i-4}$ \ \ \ \ \ // t is a temporary word
\ \ \ \}
\ \}
\} $$
Пример 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
Каждый ключ раунда в 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
Понятие слабых ключей, которое мы обсуждали для

Все слова перед раундом и в первом раунде равны между собой. Во втором раунде первое слово соответствует третьему; второе слово соответствует четвертому. Однако после второго раунда совпадений нет; каждое слово различно.
Алгоритмы расширения ключей в
1. В
a. Ключ шифра создает первые шесть слов ( w0 к w5 ).
b. Если $$i\ mod\ 6 \ne 0$$, то $${w_i} \leftarrow {w_{i - 1}} + {w_{i - 6}}$$ ; иначе $${w_i} \leftarrow t + {w_{i - 6}}$$.
1. В
a. Ключ шифра создает первые восемь слов ( w0 до w7 ).
b. Если $$i{\text{ }}\bmod {\text{ }}8 \ne 0
$$, то $${w_i} \leftarrow {w_{i - 1}} + {w_{i - 8}}$$ ; иначе, wi <-t + wi-8.
c. Если i mod 4=0, но $$i{\text{ }}\bmod {\text{ }}8 \ne 0
$$, то wi = Subword (wi-1) + wi-8.
Механизм расширения ключа в
SubWord.RCons, удаляет любую симметрию, которая может быть создана другими преобразованиями.GF(28) и FG(2).Теперь посмотрим, как
Как мы упоминали прежде, ADVANCED ENCRYPTION STANDARD — шифр не-Файстеля, а это означает, что каждое преобразование или группа преобразований должны быть обратимыми. Кроме того, шифр и обратный шифр должны использовать эти операции таким способом, чтобы они отменяли друг друга. Ключи раунда должны использоваться в обратном порядке. Ниже приведены два различных проекта, которые могут быть использованы для различных реализаций. Мы обсудим оба проекта для
(рис 10.2) Шифр и обратный шифр начального проекта В первоначальном проекте порядок преобразований в каждом раунде в шифре и обратном шифре не совпадает. Рисунок 10.2 показывает эту версию.
Во-первых, в обратном шифре изменяется порядок следования и ShiftRows (InvShiftRows). Во-вторых, в обратном шифре изменен порядок выполнения MixColumns и . Эти изменения в порядке необходимы, чтобы в обратном шифре сделать порядок работы
Код для версии
$$\tt\parindent0pt
Cipher( InBlock[16], OutBlock[16], w[0…43])
\
\{
BlockToState (InBlock, S)
\
S $\gets$ SubBytes (S)
for (round = 1 to 10)
\{
S $\gets$ ShiftRows (S)
If (round $\ne$ 10) S $\gets$ MixColumns (S)
S $\gets$ AddRoundKey (S, w[4 x round, 4 x round + 3])
\}
StateToBlock (S, OutBlock);
\} $$
Для тех приложений, которые предпочитают совпадающие алгоритмы для шифрования и
изменяет содержание каждого байта, не изменяя ShiftRows изменяет
(рис 10.3) Обратимость совокупности SubByte и SiftRows
Здесь применяются два преобразования, которые имеют различные свойства. Однако эти пары могут стать MixColumns. Мы называем новое преобразование InvAddRoundKey. Рисунок 10.4 показывает новую конфигурацию.
(рис 10.4) Обратимость совокупности MixColumns и AddRoundKey Можно доказать, что эти две комбинации теперь инверсны друг другу. В шифре мы обозначим входную матрицу состояний — S и выходную матрицу — T. В обратном шифре входная матрица — T. Ниже показано, что выходная матрица состояний — также S. Обратите внимание, что преобразование MixColumns — фактически произведение матрицы C (матрицы констант на матрицу состояний).
Теперь мы можем показать шифр и обратный шифр для альтернативного проекта. Обратите внимание, что мы все еще должны использовать два преобразования в InvAddRoundKey и два преобразования, как это показано на рис. 10.5.
Вместо того чтобы использовать преобразование InvRoundKey в обратном шифре, можно изменить алгоритм расширения ключей так, чтобы создавать различное множество ключей раунда для обратного шифра.
Однако отметим, что ключ раунда для операций предварительного раунда и последнего раунда должен быть изменен. Ключи раунда от 1 до 9 необходимо умножить на матрицу констант. Этот алгоритм оставим для упражнений.
В этом разделе приводятся некоторые примеры шифрования,
(рис 10.5) Шифр и обратный шифр альтернативного проекта Пример 10.5
Ниже показан блок зашифрованного текста, полученный из исходного текста с помощью

Таблица 10.5. показывает значения матрицы состояний и ключей раунда для этого примера.
| Раунд | Входная матрица состояний | Выходная матрица состояний | Ключ раунда |
|---|---|---|---|
| Предварительный раунд | 00 12 |
24 26 3D 1B | 24 34 31 13 |
| 04 04 00 23 | 71 71 E2 89 | 75 75 E2 AA | |
| 12 12 13 19 | BO 44 01 4D | A2 56 12 54 | |
| 14 00 11 19 | A7 88 11 9E | B3 88 00 87 | |
| 1 | 24 26 3D 1B | 6C 44 13 BD | 89 BD 8C 9F |
| 71 71 E2 89 | Bl 9E 46 35 | 55 20 C2 68 | |
| BO 44 01 4D | C5 B5 F3 02 | B5 E3 F1 A5 | |
| A7 88 11 9E | 5D 87 |
CE 46 46 C1 | |
| 2 | 6C 44 13 BD | 1A 90 15 B2 | CE 73 FF 60 |
| Bl 9E 46 35 | 66 09 ID |
53 73 Bl D9 | |
| C5 B5 F3 02 | 20 55 |
CD 2E DF 7A | |
| 5D 87 PC 8C | 2B CB 8C 3C | 15 53 15 D4 | |
| 3 | 1A 90 15 B2 | F6 7D A2 BO | FF 8C 73 13 |
| 66 09 ID |
1B 61 B4 B8 | 89 FA 4B 92 | |
| 20 55 |
67 09 C9 45 | 85 AB 74 OE | |
| 2B CB 8C 3C | 4A 5C 51 09 | C5 96 83 57 | |
| 4 | F6 7D A2 BO | CA E5 48 BB | B8 34 47 54 |
| 1B 61 B4 B8 | D8 42 AF 71 | 22 D8 93 01 | |
| 67 09 C9 45 | Dl BA 98 2D | DE 75 01 OF | |
| 4A 5C 51 09 | 4E 60 9E DF | B8 2E AD FA | |
| 5 | CA E5 48 BB | 90 35 13 60 | D4 EO A7 F3 |
| D8 42 AF 71 | 2C FB 82 3A | 54 8C IF IE | |
| Dl BA 98 2D | 9E |
F3 86 87 88 | |
| 4E 60 9E DF | 49 39 CB 47 | 98 B6 1B El | |
| 6 | 90 35 13 60 | 18 OA B9 B5 | 86 66 C1 32 |
| 2C FB 82 3A | 64 68 6A FB | 90 1C 03 ID | |
| 9E |
OB 8D OA 82 | ||
| 49 39 CB 47 | 8E B2 10 4D | 95 23 38 D9 | |
| 7 | 18 OA B9 B5 | 01 63 F1 96 | 62 04 C5 F7 |
| 64 68 6A FB | 55 24 3A 62 | 83 9F 9C 81 | |
| F4 8A DE 4D | 3E B3 B9 3B | ||
| 8E B2 10 4D | CC BA 88 03 | B6 95 AD 74 | |
| 8 | 01 63 F1 96 | 2A 34 D8 46 | EE |
| 55 24 3A 62 | 2D 6B A2 D6 | 61 |
|
| F4 8A DE 4D | 51 64 CF |
AC IF A6 9D | |
| CC BA 88 03 | 87 A8 F8 28 | DE 4B E6 92 | |
| 9 | 2A 34 D8 46 | OA D9 Fl 3C | E4 OE 21 F9 |
| 2D 6B A2 D6 | 95 63 9F 35 | 3P Cl A3 40 | |
| 51 64 CF |
2A 80 29 00 | E3 |
|
| 87 A8 F8 28 | 16 76 09 77 | BF F4 12 80 | |
| 10 | OA D9 Fl 3C | BC EO 55 E6 | |
| 95 63 9F 35 | 02 E3 OD Fl | F9 38 9B |
|
| 2A 80 29 00 | 8B Bl 6D 82 | 2E D2 88 4F | |
| 16 76 09 77 | D3 95 F8 41 | 26 D2 CO 40 |
Пример 10.6
Пример показывает матрицы состояний, раунд 7 в примере 10.5.

Пример 10.7
Один из курьезных случаев при рассмотрении шифрования — когда исходный текст состоит из одних нулей. Используем ключ шифра из примера 10.5 и получаем зашифрованный текст:

Пример 10.8
Давайте проверим лавинный эффект, который мы обсуждали в лекции 8. Изменим только один бит в исходном тексте и сравним результаты. Мы изменили только один бит в последнем байте. Результат показывает эффект рассеивания и перемешивания. Изменение единственного бита в исходном тексте затронуло много бит в зашифрованном тексте.

Пример 10.9
Ниже показан эффект использования ключа шифрования "все нули".

Далее дан краткий обзор трех характеристик
128, 192 и 256 битов). Давайте сравним 56 битов и 128 битов. Для 256 испытаний (игнорируя проблему дополнения ключа); для 2128 испытаниях. Это означает, что если мы можем нарушить t секунд, нам нужно ( $${2^{72}} \times t$$ ) секунд, чтобы нарушить
Сильное рассеивание и перемешивание, обеспеченное комбинацией преобразований , ShiftRows и MixColumns, удаляют любую частотную закономерность в исходном тексте. Многочисленные испытания не сумели выполнить
8 битов; в ориентированной на слово версии — процессор на 32 бита. В любом случае, обработка делается очень быстро.
Алгоритмы, используемые в
Нижеследующие книги и сайты дают более детальную информацию о предметах, рассмотренных в этой лекции. Пункты, приведенные в квадратных скобках, содержатся в списке в конце книги.
[Sta06] [Sti06] [Rhe03], [Sal03], [Mao04] и [TW06] рассматривают
Нижеследующие сайты дают больше информации о темах, рассмотренных в этой лекции.
128 битов. Оно использует 10, 12 или 14 раундов.128, 192 или 256 битов, зависит от числа раундов.128 битов или зашифрованный текст рассматривается как шестнадцать байтов по 8 битов. Чтобы обеспечить выполнение некоторых математических преобразований на байтах, в GF(28). SubBytes и InvSubBytes, которые являются ShiftRows, в InvShiftRows. Преобразования ShiftRows и InvShiftRows инверсны друг другу.MixColumns и InvMixColumns, используемые в шифровании и MixColumns умножает матрицу состояний на квадратную матрицу констант; InvMixColumns делает то же самое, используя обратную матрицу констант. Преобразования MixColumns и InvMixColumns инверсны друг другу.AddRoundKey . Предыдущая матрица состояний складывается (матричное сложение) с матричным ключом раунда, чтобы создать новую матрицу. Сложение отдельных элементов в этих двух матрицах выполняется в GF(28), что означает, что над словами по 8 битов проводится операция XOR ). Преобразование AddRoundKey инверсно само себе.10 раундов с ключами на 128 битов) генератор ключей создает одиннадцать ключей раунда на 128 битов из ключа шифра на 128 битов. w2 до w43. Процесс называется "расширение ключа".S -блок) в MixColumns ) нужно в S -блоки могут быть или статическими, или динамическими. Параметры в статическом S -блоке не зависят от ключа.S -блоков.S -блоки в 128 — в 64 — в 10, 12 и 14 ); 16 раундами. Объясните, преимущество это или недостаток 128, 192 и 256 ); 56 ). Каковы преимущества и недостатки такого отличия?128 бит). В 64 бита, но размер ключей раунда — только 48 бит. Является ли эта разница преимуществом или недостатком ShiftRows и InvShiftRows — инверсны:ShiftRows. Таблица должна иметь 128 входов, но так как содержание байта не изменяется, таблица может иметь только 16 выходов; каждый выход представляет байт.InvShiftRows преобразования.a и b, докажите, что преобразования ShiftRows и InvShiftRows инверсны друг другу.SubBytes ShiftRowsMixColumnsAddRoundKey (с теми же самыми ключами раунда по вашему выбору)SubBytes , покажите, что если a и b — два байта, то мы имеем$$SubBytes(a \oplus b) \ne SubBytes(a) \oplus SubBytes(b)$$
Как пример используйте a = 0 x 57 и b = 0 x A2.
SubBytes , ShiftRows, MixColumns и AddRoundKey и числа полных преобразований для каждой версии RCons константы для реализаций X и X-1 матрицы, чтобы доказать, что они инверсны друг другу.C и C-1, применяя полиномы с коэффициентами в GF(2). Перемножьте эти две матрицы и докажите, что они являются обратными друг другу.SubByte ) соответствует процессу, показанному на рис. 9.8.SubByte ), сделайте следующее:GF(28).ByteToMatrix.MatrixToByte.InvSubBytes.ShiftRows ) соответствует процессу, показанному на рис. 9.9.ShiftRows ), напишите код для процедуры copyrow.InvShiftRows.MixColumns ) соответствует процессу, показанному на рис. 9.13.MixColumns ), напишите код для процедуры copycolumns.MixColumns ), заменив операторы (.) процедурой, называемой multfield, чтобы вычислить произведение двух байтов в поле GF(28).InvMixColumn.AddRoundKey ), соответствует процессу, показанному на рис. 9.15.Subbyte .Rotword.Для того чтобы создать ключ для каждого раунда, Nr, процедура расширения ключей создает Nr+1 ключи раунда на 128 бит от единственного 128 -битового ключа шифра. Первые ключи раунда используются для преобразования перед раундом (
Процедура расширения ключей создает слово за словом ключи раунда, где слово — массив из четырех байтов. Процедура создает 4 x (Nr + 1) слова, которые обозначаются
w0, w1, w2..., w4(Nr+1)-1
Другими словами, в версии 10 раундов) имеются 44 слова; в 12 раундов), есть 52 слова; и в 256 версий (с 14 раундами) есть 60 слов. Каждый ключ раунда состоит из четырех слов. Таблица 10.1 показывает отношения между раундами и словами.
| Раунд | Слова | |||
|---|---|---|---|---|
| 1 | w0 | w1 | w2 | w3 |
| 2 | w4 | w5 | w6 | w7 |
| ..... | ..... | |||
| Nr | w4Nr | w4Nr+1 | w4Nr+2 | w4Nr+3 |
Посмотрим, как создаются ключи в версии 44 слова.
(рис 10.1) Расширение ключей в AES Процесс следующий:
1. Первые четыре слова ( W0,W1,W2,W3 ) получены из ключа шифра. Ключ шифра представлен как массив из 16 байтов ( k0 до k15 ). Первые четыре байта ( k0 до k3 ) становятся W0 ; следующие четыре байта ( k4 до k7 ) становятся w1 ; и так далее. Другими словами, последовательное соединение (конкатенация) слов в этой группе копирует ключ шифра.
2. Остальная часть слов ( wi ) от i = 4 – 43 получается следующим образом:
a. Если $$(i\ mod\ 4) \ne 0,\ w_{i} = w_{i - 1} \oplus w_{i - 4}$$, то согласно рисунку 10.1 это означает, что каждое слово получено из одного левого и одного верхнего.
b. Если $$(i\ mod\ 4) = 0,\ w_{i} = t \oplus w_{i - 4}$$. Здесь t — временное слово, результат применения двух процессов, subword и rotword, со словом wi-1 и применения операции Rcon. Другими словами, мы имеем
RotWord (rotate word) — процедура, подобная преобразованию ShiftRows, но применяется только к одной строке. Процедура принимает слово как массив из четырех байт и сдвигает каждый байт влево с конвертированием.
SubWord ( — процедура, подобная преобразованию
Каждая константа раунда Rcon — это 4 -байтовое значение, в котором самые правые три байта являются всегда нулевыми. Таблица 10.2 показывает значения для версии 10 раундами).
| Раунд | Константа (RCon) | Раунд | Константа (RCon) |
|---|---|---|---|
| 1 | (01 00 00 00)16 | 6 | (20 00 00 00)16 |
| 2 | (02 00 00 00)16 | 7 | (40 00 00 00)16 |
| 3 | (04 00 00 00)16 | 8 | (80 00 00 00)16 |
| 4 | (08 00 00 00)16 | 9 | (1B 00 00 00)16 |
| 5 | (10 00 00 00)16 | 10 | (36 00 00 00)16 |
Процедура расширения ключей может использовать либо приведенную выше таблицу, когда вычисляет слова, либо поле GF(28), когда вычисляет крайние левые биты динамически, как это показано ниже.
RC1 -> x1-1 = x0 mod prime = 1 -> 00000001 -> 0116 RC2 -> x2-1 = x1 mod prime = x -> 00000010 -> 0216 RC3 -> x3-1 = x2 mod prime = x2 -> 00000100 -> 0416 RC4 -> x4-1 = x3 mod prime = x3 -> 00001000 -> 0816 RC5 -> x5-1 = x4 mod prime = x4 -> 00010000 -> 1016 RC6 -> x6-1 = x5 mod prime = x5 -> 0100000 -> 2016 RC7 -> x7-1 = x6 mod prime = x6 -> 01000000 -> 4016 RC8 -> x8-1 = x7 mod prime = x7 -> 10000000 -> 8016 RC9 -> x9-1 = x8 mod prime = x4+x3+x+1 -> 00011011 -> 1B16 RC10 -> x10-1 =x9 mod prime = x5+x4+x2+x -> 00110110 -> 3616
Крайний левый байт, который обозначен RCi — это xi-1, где i — номер раунда. x8 + x4 + x3 + x +1 ).
Алгоритм 10.1 — простой алгоритм для процедуры расширения ключа (версия
$$\tt\parindent0pt
KeyExpansion ([$key_{0}$ to $key_{15}$], [$w_{0}$ to $w_{43}$]
\{
for (i = 0 to 3)
$w_{i} \gets key_{4i} + key_{4i+1} + key_{4i+2} + key_{4i+3}$
\ for (i = 4 to 43)
\ \{
\ \ \ if (i mod 4 $\ne$ 0) $w_{i} \gets w_{i-1} + w_{i-4}$
\ \ \ else
\ \ \ \{
\ \ \ \ \ t $\gets$ SubWord (RotWord ($w_{i-1}$)) $\oplus$ $RCon_{i/4}$
\ \ \ \ \ $w_{i} \gets t + w_{i-4}$ \ \ \ \ \ // t is a temporary word
\ \ \ \}
\ \}
\} $$
Пример 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
Каждый ключ раунда в 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
Понятие слабых ключей, которое мы обсуждали для

Все слова перед раундом и в первом раунде равны между собой. Во втором раунде первое слово соответствует третьему; второе слово соответствует четвертому. Однако после второго раунда совпадений нет; каждое слово различно.
Алгоритмы расширения ключей в
1. В
a. Ключ шифра создает первые шесть слов ( w0 к w5 ).
b. Если $$i\ mod\ 6 \ne 0$$, то $${w_i} \leftarrow {w_{i - 1}} + {w_{i - 6}}$$ ; иначе $${w_i} \leftarrow t + {w_{i - 6}}$$.
1. В
a. Ключ шифра создает первые восемь слов ( w0 до w7 ).
b. Если $$i{\text{ }}\bmod {\text{ }}8 \ne 0
$$, то $${w_i} \leftarrow {w_{i - 1}} + {w_{i - 8}}$$ ; иначе, wi <-t + wi-8.
c. Если i mod 4=0, но $$i{\text{ }}\bmod {\text{ }}8 \ne 0
$$, то wi = Subword (wi-1) + wi-8.
Механизм расширения ключа в
SubWord.RCons, удаляет любую симметрию, которая может быть создана другими преобразованиями.GF(28) и FG(2).Теперь посмотрим, как
Как мы упоминали прежде, ADVANCED ENCRYPTION STANDARD — шифр не-Файстеля, а это означает, что каждое преобразование или группа преобразований должны быть обратимыми. Кроме того, шифр и обратный шифр должны использовать эти операции таким способом, чтобы они отменяли друг друга. Ключи раунда должны использоваться в обратном порядке. Ниже приведены два различных проекта, которые могут быть использованы для различных реализаций. Мы обсудим оба проекта для
(рис 10.2) Шифр и обратный шифр начального проекта В первоначальном проекте порядок преобразований в каждом раунде в шифре и обратном шифре не совпадает. Рисунок 10.2 показывает эту версию.
Во-первых, в обратном шифре изменяется порядок следования и ShiftRows (InvShiftRows). Во-вторых, в обратном шифре изменен порядок выполнения MixColumns и . Эти изменения в порядке необходимы, чтобы в обратном шифре сделать порядок работы
Код для версии
$$\tt\parindent0pt
Cipher( InBlock[16], OutBlock[16], w[0…43])
\
\{
BlockToState (InBlock, S)
\
S $\gets$ SubBytes (S)
for (round = 1 to 10)
\{
S $\gets$ ShiftRows (S)
If (round $\ne$ 10) S $\gets$ MixColumns (S)
S $\gets$ AddRoundKey (S, w[4 x round, 4 x round + 3])
\}
StateToBlock (S, OutBlock);
\} $$
Для тех приложений, которые предпочитают совпадающие алгоритмы для шифрования и
изменяет содержание каждого байта, не изменяя ShiftRows изменяет
(рис 10.3) Обратимость совокупности SubByte и SiftRows
Здесь применяются два преобразования, которые имеют различные свойства. Однако эти пары могут стать MixColumns. Мы называем новое преобразование InvAddRoundKey. Рисунок 10.4 показывает новую конфигурацию.
(рис 10.4) Обратимость совокупности MixColumns и AddRoundKey Можно доказать, что эти две комбинации теперь инверсны друг другу. В шифре мы обозначим входную матрицу состояний — S и выходную матрицу — T. В обратном шифре входная матрица — T. Ниже показано, что выходная матрица состояний — также S. Обратите внимание, что преобразование MixColumns — фактически произведение матрицы C (матрицы констант на матрицу состояний).
Теперь мы можем показать шифр и обратный шифр для альтернативного проекта. Обратите внимание, что мы все еще должны использовать два преобразования в InvAddRoundKey и два преобразования, как это показано на рис. 10.5.
Вместо того чтобы использовать преобразование InvRoundKey в обратном шифре, можно изменить алгоритм расширения ключей так, чтобы создавать различное множество ключей раунда для обратного шифра.
Однако отметим, что ключ раунда для операций предварительного раунда и последнего раунда должен быть изменен. Ключи раунда от 1 до 9 необходимо умножить на матрицу констант. Этот алгоритм оставим для упражнений.
В этом разделе приводятся некоторые примеры шифрования,
(рис 10.5) Шифр и обратный шифр альтернативного проекта Пример 10.5
Ниже показан блок зашифрованного текста, полученный из исходного текста с помощью

Таблица 10.5. показывает значения матрицы состояний и ключей раунда для этого примера.
| Раунд | Входная матрица состояний | Выходная матрица состояний | Ключ раунда |
|---|---|---|---|
| Предварительный раунд | 00 12 |
24 26 3D 1B | 24 34 31 13 |
| 04 04 00 23 | 71 71 E2 89 | 75 75 E2 AA | |
| 12 12 13 19 | BO 44 01 4D | A2 56 12 54 | |
| 14 00 11 19 | A7 88 11 9E | B3 88 00 87 | |
| 1 | 24 26 3D 1B | 6C 44 13 BD | 89 BD 8C 9F |
| 71 71 E2 89 | Bl 9E 46 35 | 55 20 C2 68 | |
| BO 44 01 4D | C5 B5 F3 02 | B5 E3 F1 A5 | |
| A7 88 11 9E | 5D 87 |
CE 46 46 C1 | |
| 2 | 6C 44 13 BD | 1A 90 15 B2 | CE 73 FF 60 |
| Bl 9E 46 35 | 66 09 ID |
53 73 Bl D9 | |
| C5 B5 F3 02 | 20 55 |
CD 2E DF 7A | |
| 5D 87 PC 8C | 2B CB 8C 3C | 15 53 15 D4 | |
| 3 | 1A 90 15 B2 | F6 7D A2 BO | FF 8C 73 13 |
| 66 09 ID |
1B 61 B4 B8 | 89 FA 4B 92 | |
| 20 55 |
67 09 C9 45 | 85 AB 74 OE | |
| 2B CB 8C 3C | 4A 5C 51 09 | C5 96 83 57 | |
| 4 | F6 7D A2 BO | CA E5 48 BB | B8 34 47 54 |
| 1B 61 B4 B8 | D8 42 AF 71 | 22 D8 93 01 | |
| 67 09 C9 45 | Dl BA 98 2D | DE 75 01 OF | |
| 4A 5C 51 09 | 4E 60 9E DF | B8 2E AD FA | |
| 5 | CA E5 48 BB | 90 35 13 60 | D4 EO A7 F3 |
| D8 42 AF 71 | 2C FB 82 3A | 54 8C IF IE | |
| Dl BA 98 2D | 9E |
F3 86 87 88 | |
| 4E 60 9E DF | 49 39 CB 47 | 98 B6 1B El | |
| 6 | 90 35 13 60 | 18 OA B9 B5 | 86 66 C1 32 |
| 2C FB 82 3A | 64 68 6A FB | 90 1C 03 ID | |
| 9E |
OB 8D OA 82 | ||
| 49 39 CB 47 | 8E B2 10 4D | 95 23 38 D9 | |
| 7 | 18 OA B9 B5 | 01 63 F1 96 | 62 04 C5 F7 |
| 64 68 6A FB | 55 24 3A 62 | 83 9F 9C 81 | |
| F4 8A DE 4D | 3E B3 B9 3B | ||
| 8E B2 10 4D | CC BA 88 03 | B6 95 AD 74 | |
| 8 | 01 63 F1 96 | 2A 34 D8 46 | EE |
| 55 24 3A 62 | 2D 6B A2 D6 | 61 |
|
| F4 8A DE 4D | 51 64 CF |
AC IF A6 9D | |
| CC BA 88 03 | 87 A8 F8 28 | DE 4B E6 92 | |
| 9 | 2A 34 D8 46 | OA D9 Fl 3C | E4 OE 21 F9 |
| 2D 6B A2 D6 | 95 63 9F 35 | 3P Cl A3 40 | |
| 51 64 CF |
2A 80 29 00 | E3 |
|
| 87 A8 F8 28 | 16 76 09 77 | BF F4 12 80 | |
| 10 | OA D9 Fl 3C | BC EO 55 E6 | |
| 95 63 9F 35 | 02 E3 OD Fl | F9 38 9B |
|
| 2A 80 29 00 | 8B Bl 6D 82 | 2E D2 88 4F | |
| 16 76 09 77 | D3 95 F8 41 | 26 D2 CO 40 |
Пример 10.6
Пример показывает матрицы состояний, раунд 7 в примере 10.5.

Пример 10.7
Один из курьезных случаев при рассмотрении шифрования — когда исходный текст состоит из одних нулей. Используем ключ шифра из примера 10.5 и получаем зашифрованный текст:

Пример 10.8
Давайте проверим лавинный эффект, который мы обсуждали в лекции 8. Изменим только один бит в исходном тексте и сравним результаты. Мы изменили только один бит в последнем байте. Результат показывает эффект рассеивания и перемешивания. Изменение единственного бита в исходном тексте затронуло много бит в зашифрованном тексте.

Пример 10.9
Ниже показан эффект использования ключа шифрования "все нули".

Далее дан краткий обзор трех характеристик
128, 192 и 256 битов). Давайте сравним 56 битов и 128 битов. Для 256 испытаний (игнорируя проблему дополнения ключа); для 2128 испытаниях. Это означает, что если мы можем нарушить t секунд, нам нужно ( $${2^{72}} \times t$$ ) секунд, чтобы нарушить
Сильное рассеивание и перемешивание, обеспеченное комбинацией преобразований , ShiftRows и MixColumns, удаляют любую частотную закономерность в исходном тексте. Многочисленные испытания не сумели выполнить
8 битов; в ориентированной на слово версии — процессор на 32 бита. В любом случае, обработка делается очень быстро.
Алгоритмы, используемые в
Нижеследующие книги и сайты дают более детальную информацию о предметах, рассмотренных в этой лекции. Пункты, приведенные в квадратных скобках, содержатся в списке в конце книги.
[Sta06] [Sti06] [Rhe03], [Sal03], [Mao04] и [TW06] рассматривают
Нижеследующие сайты дают больше информации о темах, рассмотренных в этой лекции.
128 битов. Оно использует 10, 12 или 14 раундов.128, 192 или 256 битов, зависит от числа раундов.128 битов или зашифрованный текст рассматривается как шестнадцать байтов по 8 битов. Чтобы обеспечить выполнение некоторых математических преобразований на байтах, в GF(28). SubBytes и InvSubBytes, которые являются ShiftRows, в InvShiftRows. Преобразования ShiftRows и InvShiftRows инверсны друг другу.MixColumns и InvMixColumns, используемые в шифровании и MixColumns умножает матрицу состояний на квадратную матрицу констант; InvMixColumns делает то же самое, используя обратную матрицу констант. Преобразования MixColumns и InvMixColumns инверсны друг другу.AddRoundKey . Предыдущая матрица состояний складывается (матричное сложение) с матричным ключом раунда, чтобы создать новую матрицу. Сложение отдельных элементов в этих двух матрицах выполняется в GF(28), что означает, что над словами по 8 битов проводится операция XOR ). Преобразование AddRoundKey инверсно само себе.10 раундов с ключами на 128 битов) генератор ключей создает одиннадцать ключей раунда на 128 битов из ключа шифра на 128 битов. w2 до w43. Процесс называется "расширение ключа".S -блок) в MixColumns ) нужно в S -блоки могут быть или статическими, или динамическими. Параметры в статическом S -блоке не зависят от ключа.S -блоков.S -блоки в 128 — в 64 — в 10, 12 и 14 ); 16 раундами. Объясните, преимущество это или недостаток 128, 192 и 256 ); 56 ). Каковы преимущества и недостатки такого отличия?128 бит). В 64 бита, но размер ключей раунда — только 48 бит. Является ли эта разница преимуществом или недостатком ShiftRows и InvShiftRows — инверсны:ShiftRows. Таблица должна иметь 128 входов, но так как содержание байта не изменяется, таблица может иметь только 16 выходов; каждый выход представляет байт.InvShiftRows преобразования.a и b, докажите, что преобразования ShiftRows и InvShiftRows инверсны друг другу.SubBytes ShiftRowsMixColumnsAddRoundKey (с теми же самыми ключами раунда по вашему выбору)SubBytes , покажите, что если a и b — два байта, то мы имеем$$SubBytes(a \oplus b) \ne SubBytes(a) \oplus SubBytes(b)$$
Как пример используйте a = 0 x 57 и b = 0 x A2.
SubBytes , ShiftRows, MixColumns и AddRoundKey и числа полных преобразований для каждой версии RCons константы для реализаций X и X-1 матрицы, чтобы доказать, что они инверсны друг другу.C и C-1, применяя полиномы с коэффициентами в GF(2). Перемножьте эти две матрицы и докажите, что они являются обратными друг другу.SubByte ) соответствует процессу, показанному на рис. 9.8.SubByte ), сделайте следующее:GF(28).ByteToMatrix.MatrixToByte.InvSubBytes.ShiftRows ) соответствует процессу, показанному на рис. 9.9.ShiftRows ), напишите код для процедуры copyrow.InvShiftRows.MixColumns ) соответствует процессу, показанному на рис. 9.13.MixColumns ), напишите код для процедуры copycolumns.MixColumns ), заменив операторы (.) процедурой, называемой multfield, чтобы вычислить произведение двух байтов в поле GF(28).InvMixColumn.AddRoundKey ), соответствует процессу, показанному на рис. 9.15.Subbyte .Rotword.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.