Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Дополнительный материал 16:

P. Упрощенный AES (S-AES)

P.3. Расширение ключа

Процедура расширения ключа создает три ключа раунда по 16 битов из единственного ключа шифра на 16 битов. Первые ключи раунда используются для предварительного преобразования ( AddRoundKey ); оставшиеся ключи применяются для последнего преобразования ( AddRoundKey ) в конце раунда 1 и раунда 2.

Процедура расширения ключей создает слово ключа раунда последовательно - слово за словом, где слово - массив 2 полубайта. Процедура создает 6 слов, которые обозначаются

w0, w1, w2, .....,w5.

Создание слов в S-AES

P.14 показывает, как создаются 6 слов из первоначального ключа.

Создание слов в S-AES

увеличить изображение
Рис. P.14. Создание слов в S-AES

Процесс создания слов в S-AES следующий:

  1. Первые два слова ( W0, W 1 ) создаются из ключа шифра. Ключи шифра представляют как массив из 4 полубайтов ( n0 - n3 ). Первые 2 полубайта ( n0, n1 ) образуют слово W0; следующие 2 полубайта ( n2, n3 ) образуют слово w1. Другими словами, конкатенация слов в этой группе копирует ключ шифра.
  2. Остальная часть слов ( wi i = 2 - 5 ) создается следующим образом:
    • Если. (i mod 2) = 0, w_{i} = t_{i} \oplus  w_{i-2}. Здесь ti - временное слово, является результатом применения к wi двух процедур: SubWord и RotWord операции ИСКЛЮЧАЮЩЕЕ ИЛИ к результату с константой раунда Rcon[Nr], где Nr - номер раунда. Другими словами, мы имеем
      t_{i} = SubWord\(RotWord\ (w_{i-1})) \oplus  RCon[N_{r}]

      Слова w2 и w4 создаются, используя этот процесс.

    • Если (i\ mod\ 2) \ne  0, w_{i} = w_{i-1} \oplus  w_{i-2}. На рисунке P.14 это означает, что каждое слово создается от слова слева и слова сверху. Слова w3 и w5 создаются, используя этот процесс.
RotWord

RotWord (вращение слова) - процедура, подобная преобразованию ShiftRows, но она применяется только к одной строке. Процедура получает слово как массив 2 полубайтов и сдвигает каждый полубайт влево с полным вращением (полный оборот) слова. В S-AES это заполнение 2 полубайтов в слове.

SubWord

SubWord (слово-заменитель) - процедура является подобной преобразованию SubNibbels, но она применяется только к 2 полубайтам. Процедура берет каждый полубайт в слове и заменяет его другим полубайтом. Она использует таблицы SubNibbels, показанные на рис. P.7.

Константы раунда

Каждая константа раунда, RC, является значением, содержащим 2 полубайта, в котором самый правый полубайт всегда нуль. Рисунок P.14 также показывает значение RC

Пример P.4

Таблица P.1 показывает, как вычисляется ключ для каждого раунда. При этом предполагается, что Алиса и Боб согласовали ключ 247516.

Таблица P.1. Пример расширения ключа
Раунд Значение ti Первое слово в раунде Второе слово в раунде Ключ раунда
0 w0 = 24 w1 = 75 K0 = 2475
1 t2 = 95 w_{2 }= 95 \oplus  24 = B1 w_{2 }= B1 \oplus  75 = С4 K0 = B1C4
2 t4 = EC w_{4 }= B1 \oplus   EC = 5D W_{5 }= 5D \oplus  С4 = 99 K2 = 5D99

В каждом раунде второе слово вычисляется очень просто. Для вычисления первого слова мы должны сначала вычислить значение временного слова ( ti ), как это показано ниже:

RotWord\ (75) = 57  \to  SubWord\ (57) = 15  \to  t_{2} = 15 \oplus  RC[1] = 15 \oplus   80 = 95
\\
RotWord\ (C4) = 4C  \to  SubWord\ (4C) = DC  \to  t_{4} = DC \oplus  RC[2] = DC \oplus   30 = EC

P.4. Шифры

Теперь давайте посмотрим, как S-AES используют четыре типа преобразований для шифрования и дешифрования. Алгоритм шифрования будем называть шифратор, а алгоритм дешифрования - обратный шифратор.

S-AES - шифр не-Файстеля, и это означает, что каждое преобразование или группа преобразований должны быть обратимыми. Кроме того, шифратор и обратный шифратор должны использовать эти операции таким способом, при котором они отменяют друг друга. Ключи раунда должны использоваться в обратном порядке. Чтобы выполнить эти требования, преобразования применяются в установленном порядке в шифраторе и обратном шифраторе, как это показано на рис. P.15.

Шифратор и обратный шифратор исходного проекта

увеличить изображение
Рис. P.15. Шифратор и обратный шифратор исходного проекта

Первое: порядок использования SubNibbles и ShiftRows изменяется в обратном шифраторе. Второе: порядок MixColumns и AddRoundKey в обратном шифраторе также изменяется. Это отличие в порядке необходимо, чтобы сделать каждое преобразование в шифре соответствующим по порядку его инверсии в обратном шифраторе. Следовательно, алгоритм дешифрования в целом - инверсия алгоритма шифрования. Обратите внимание, что ключи раунда используются в обратном порядке.

Пример P.5

Мы выбираем случайный блок исходного текста, ключ шифра, используемый в примере P.4, и определяем, какой получается блок зашифрованного текста:

Исходный текст: 1A2316    Ключ: 247516        Зашифрованный текст: 3AD216

Рисунок P.16 показывает значение состояний в каждом раунде. Мы используем ключи раунда, сгенерированные в примере P.4.

Пример P.5

Рис. P.16. Пример P.5
Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?
Сергей Огородников
Сергей Огородников
Россия, Сыктывкар
Дмитрий Карпов
Дмитрий Карпов
Россия, Нижний Новгород