Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора крипта экзамен.docx
Скачиваний:
32
Добавлен:
22.09.2019
Размер:
724.74 Кб
Скачать

39. Шифр Rijndael. Математические основы работы.

AdvancedEncryptionStandard (AES), также известный как Rijndael  — симметричный алгоритм блочного шифрования, принятый в качестве стандарта шифрования правительством США по результатам конкурса AES: RIJNDAEL имеет наилучшее сочетание стойкости, производительности, эффективности реализации и гибкости. Его низкие требования к объему памяти делают его идеально подходящим для встроенных систем. Авторами шифра являются ЙонДэмен и Винсент Рюмен, начальные буквы фамилий которых и образуют название алгоритма. Этот алгоритм хорошо проанализирован и сейчас широко используется.

В стандарте AES алгоритм оперирует байтами, которые рассматриваются как элементы конечного поля GF(28). Элементами поля GF(28) являются многочлены степени не более семи, которые могут быть заданы строкой своих коэффициентов. Если байт представить в виде: {α7, α6, α5, α4, α3, α2, α1, α0}, αi∈{0,1}, 0<=i<=7, то элемент поля описывается многочленом α7x7+ α6x6+ α5x5+ α4x4+ α3x3+ α2x2+ α1x+ α0

Для перевода двоичного представления байта в шестнадцатеричное можно воспользоваться следующими таблицами:

При этом байт разбивается на две части по четыре бита, каждая из которых заменяется в соответствии со значением в таблице.

Раундовые преобразования в AES оперируют 32-разрядными словами. Четырехбайтовому слову может быть поставлен в соответствие многочлен α(х) с коэффициентами из GF(28) степени не более трех: α(х)= α3x3+ α2x2+ α1x+ α0, где αi∈GF(28), 0<=i<=3.

Для элементов конечного поля определены аддитивные и мультипликативные операции.

Сложение суть операция поразрядного XOR, обозначается как . Пример выполнения операции сложения в виде многочленов: (х642 +х +1) (х7 + х +1)= х7642. В конечном поле для любого ненулевого элемента α существует обратный элемент –α, при этом α+(-α)=0, где нулевой элемент это {00}. В GF(28) справедливо α+α=0, т.е. каждый ненулевой элемент является своей собственной аддитивной инверсией. Сложение двух многочленов с коэффициентами из GF(28) суть операции сложения многочленов с приведением подобных членов в поле GF(28). Таким образом, сложение двух 4-байтовых слов суть операция поразрядногоXOR.

Умножение, обозначаемое далее как •, более сложная операция. Умножение в GF(28) – это операция умножения многочленов со взятием результата по модулю неприводимого многочлена φ(х) восьмой степени и с использованием операции XOR при приведении подобных членов. В AES выбран φ(х)= х843 +х +1. Для того чтобы результат умножения мог быть представлен 4-байтовым словом, необходимо взять результат по модулю многочлена степени не более 4. Авторы шифра выбрали многочлен х4+1, для которого справедливо ximod(х4+1)=ximod 4. Для любого ненулевого элемента α справедливо α•1=α. Мультипликативной единицей в GF(28) является элемент {01}.

40. Шифр Rijndael. Работа с байтами состояния.

Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма, называются состояниями (State). Состояние можно представить в виде прямоугольного массива байтов. При размере блока, равном 128 битам, этот 16-байтовый массив (рис.1) имеет 4 строки и 4 столбца (каждая строка и каждый столбец в этом случае могут рассматриваться как 32-разрядные слова). Входные данные для шифра обозначаются как байты состояния в порядке S00, S10, S20, S01, S11, S21,S31,....

Рис. 1. Представление состояния в виде матрицы

Ключ шифрования, также как и массив State представляется в виде прямоугольного массива с четырьмя строками. Число столбцов этого массива равно Nk. Число раундов Nr в алгоритме Rijndael зависит от значений Nb и Nk, как показано в таблице 1. В стандарте AES число раундов определяется длиной ключа Nk.

Число раундов Nr - функция от длины ключа Nk и длины блока Nb

Раунд состоит из четырех различных преобразований:

- замены байтов SubBytes()- побайтовой подстановки в S-блоках с фиксированной таблицей замен;

- сдвига строк ShiftRows() – побайтового сдвига строк массива State на различное количество байт;

- перемешивания столбцов MixColumns() – умножение столбцов состояния, рассматриваемых как многочлены над GF(28), на многочлен третьей степени g(x) по модулю х4+1;

- сложение с раундовым ключом AddRoundKey() – поразрядное XOR с текущим фрагментом развернутого ключа.

Замена байтов (SubBytes). Представляет собой нелинейную замену байтов, выполняемую независимо с каждым байтом состояния. Таблицы замены S-блока являются инвертируемыми и построены из композиции следующих двух преобразований входного байта:

1) получение обратного элемента относительно умножения в поле GF(28), нулевой элемент {00} переходит сам в себя;

2) применение преобразования над GF(28), определенного следующим образом: b´i= bi b(i+4)mod 8 b(i+5)mod 8 b(i+6)mod 8+ b(i+7)mod 8 ci , где с0156=1, с2347=0, b´iи bi- соответственно исходное и преобразованное значение i-го бита, i=¯0,7.

Применение описанного S-блока ко всем байтам состояния обозначается как SubBytes(State). Рис. 2 иллюстрирует применение преобразования SubBytes() к состоянию.

Рис.2. Преобразование состояния посредством использования S-блока

Преобразование сдвига строк (ShiftRows). Последние 3 строки состояния циклически сдвигаются влево на различное число байтов. Строка 1 сдвигается на С1 байт, строка 2 – на С2 байт, и строка 3 – на С3 байт. В стандарте AES, где определен единственный размер блока, равный 128 битам, С1=1, С2=2, С3=3.

Преобразование перемешивания столбцов (MixColumns). Столбцы состояния рассматриваются как многочлены над полем GF(28) и умножаются по модулю х4+1 на многочлен g(x), выглядящий следующим образом: g(x)={03}x3+{01}x2+{01}x+{02}

Применение этой операции ко всем четырем столбцам состояния обозначено как MixColumns(State).

Рис.4 Преобразование состояния посредством перемешивания столбцов

Добавление раундового ключа (AddRoundKey). В данной операции раундовый ключ добавляется к состоянию посредством простого поразрядного XOR(рис.4).

Раундовый ключ вырабатывается из ключа шифрования посредством алгоритма выработки ключей.