Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Лекция 10:

Усовершенствованный стандарт шифрования (AES — Advanced Encryption Standard)

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Аннотация: В данной лекции особое внимание уделяется тому, как DES использует шифр Файстеля, чтобы достигнуть перемешивания и рассеивания на выходе из битов исходного текста к битам зашифрованного текста. Описывается процесс генерации ключей для раундов; и проводится анализ DES.

10.1. Расширение ключей

Для того чтобы создать ключ для каждого раунда, AES использует процесс ключевого расширения. Если номер раунда — Nr, процедура расширения ключей создает Nr+1 ключи раунда на 128 бит от единственного 128 -битового ключа шифра. Первые ключи раунда используются для преобразования перед раундом (AddRoundKey); остающиеся ключи раунда применяются для последнего преобразования (AddRoundKey) в конце каждого раунда.

Процедура расширения ключей создает слово за словом ключи раунда, где словомассив из четырех байтов. Процедура создает 4 x (Nr + 1) слова, которые обозначаются

w0, w1, w2..., w4(Nr+1)-1

Другими словами, в версии AES-128 ( 10 раундов) имеются 44 слова; в AES-192 версии ( 12 раундов), есть 52 слова; и в AES 256 версий (с 14 раундами) есть 60 слов. Каждый ключ раунда состоит из четырех слов. Таблица 10.1 показывает отношения между раундами и словами.

Таблица 10.1. Слова для каждого раунда
Раунд Слова
1 w0 w1 w2 w3
2 w4 w5 w6 w7
..... .....
Nr w4Nr w4Nr+1 w4Nr+2 w4Nr+3

Расширение ключей в AES-128

Посмотрим, как создаются ключи в версии AES-128; процессы для других двух версий за исключением небольших изменений — те же самые. Рисунок 10.1 показывает, как из исходного ключа получить 44 слова.

 Расширение ключей в AES

Рис. 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 и применения операции ИСКЛЮЧАЮЩЕЕ ИЛИ c константой раунда Rcon. Другими словами, мы имеем

t  =  SubWord(Rotword\ (w_{i-1})) \oplus  RCon_{i/4}.
RotWord

RotWord (rotate word) — процедура, подобная преобразованию ShiftRows, но применяется только к одной строке. Процедура принимает слово как массив из четырех байт и сдвигает каждый байт влево с конвертированием.

SubWord

SubWord (substitute word) — процедура, подобная преобразованию SubBytes, но применяется только к одной строке. Процедура принимает каждый байт в слове и заменяет его другим.

RoundConstants

Каждая константа раунда Rcon — это 4 -байтовое значение, в котором самые правые три байта являются всегда нулевыми. Таблица 10.2 показывает значения для версии AES-128 (с 10 раундами).

Таблица 10.2. Константы RCon
Раунд Константа (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 — номер раунда. AES использует неприводимый полином ( x8 + x4 + x3 + x +1 ).

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?
Ivan Iakimov
Ivan Iakimov
Израиль
Вадим Лелес
Вадим Лелес
Россия