Применение описанного S-блока ко всем байтам состояния обозначено как ByteSub(State). Рисунок 2.8 иллюстрирует применение преобразования ByteSub к состоянию.
Рис 2.8 ByteSub действует на каждый байт состояния
Преобразование сдвига строк (ShiftRow).
Последние 3 строки состояния циклически сдвигаются на различное число байт. Строка 1 сдвигается на С1 байт, строка 2 - на С2 байт и строка 3 - на С3 байт.
Значения сдвигов С1, С2 и С3 зависят от длины блока Nb. Их величины приведены в таблице 2.3.
Таблица 2.3 Величина сдвига для разной длины блоков
Nb | C1 | C2 | C3 |
4 | 1 | 2 | 3 |
6 | 1 | 2 | 3 |
8 | 1 | 3 | 4 |
Операция сдвига последних 3 строк состояния на определенную величину обозначена как ShiftRow(State). Рисунок 2.9 показывает влияние преобразования на состояние.
Рис 2.9: ShiftRow действует на строки состояния.
Преобразование замешивания столбцов (MixColumn).
В этом преобразовании столбцы состояния рассматриваются как многочлены над GF(28) и умножаются по модулю x4+1 на многочлен c(x), выглядящий следующим образом:
(x)='03' x3 + '01' x2 + '01' x + '02' (2.3)
Это может быть представлено в виде матричного умножения. Пусть b(x)=c(x)a(x),
Таблица 2.4
b0 | = | 02 | 03 | 01 | 01 | a0 |
b1 | 01 | 02 | 03 | 01 | a1 | |
b2 | 01 | 01 | 02 | 03 | a2 | |
b3 | 03 | 01 | 01 | 02 | a3 |
Применение этой операции ко всем четырем столбцам состояния обозначено как MixColumn(State). Рисунок 2.10 демонстрирует применение MixColumn к состоянию.
Рис 2.10 MixColumn действует на столбцы состояния
Добавление циклового ключа.
В данной операции цикловой ключ добавляется к состоянию посредством простого EXOR. Цикловой ключ вырабатывается из ключа шифрования посредством алгоритма выработки ключей (key schedule). Длина циклового ключа равна длине блока Nb.
Преобразование, содержащее добавление посредством EXOR циклового ключа к состоянию, обозначено как AddRoundKey(State, RoundKey). Оно проиллюстрировано на рисунке 2.11.
Рис 2.11 При добавлении ключа цикловой ключ складывается посредством EXOR с состоянием.
Алгоритм выработки ключей (Key Schedule).
Цикловые ключи получаются из ключа шифрования посредством алгоритма выработки ключей. Он содержит два компонента: расширение ключа (Key Expansion) и выбор циклового ключа (Round Key Selection). Основополагающие принципы алгоритма выглядят следующим образом:
· Общее число бит цикловых ключей равно длине блока, умноженной на число циклов плюс 1 (например, для длины блока 128 бит и 10 циклов требуется 1408 бит циклового ключа).
· Ключ шифрования расширяется в Расширенный Ключ (Expanded Key).
· Цикловые ключи берутся из Расширенного ключа следующим образом: первый цикловой ключ содержит первые Nb слов, второй - следующие Nb слов и т.д.
Расширение ключа (Key Expansion).
Расширенный ключ представляет собой линейный массив 4-ех байтовых слов и обозначен как W Первые Nk слов содержат ключ шифрования. Все остальные слова определяются рекурсивно из слов с меньшими индексами. Алгоритм выработки ключей зависит от величины Nk: ниже приведена версия для Nk равного или меньшего 6 и версия для Nk большего 6.Для Nk<6 или Nk=6 мы имеем: Перейти на страницу: 1 2 3 4 5 6 7
Другие статьи по теме:
Генератор линейно-изменяющихся напряжений Генераторы синусоидального напряжения отличаются тем, что у них цепь обратной связи имеет резонансные свойства. Поэтому условия возникновения колебаний выполняются только на одной частот ...
Информационно-измерительная система Целью данной курсовой работы является анализ информационно-измерительной системы (ИИС), определение типа топологии и оптимального пространственного расположения объектов ИИС, при которо ...
Территориальное планирование сетей телерадиовещания с учетом ЭМС РЭС на основе геоинформационных технологий На этапе проектирования телекоммуникационных сетей с появлением электронных карт и геоинформационных систем появилась возможность проведения более точных расчетов размещения радиоэлектр ...