Реферат: Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars

Nb — число 32-битных слов содержащихся во входном блоке, Nb - 4;

Nk - число 32-битных слов содержащихся в ключе шифрования, Nk = 4,6,8;

Nr - число раундов шифрования, как функция от Nb и Nk, Nr = 10,12,14.

Входные (input), промежуточные (state) и выходные (output) результаты преобразований, выполняемых в рамках криптоалгоритма, называются состояниями (State). Состояние можно представить в виде матрицы 4 х Nb, элементами которой являются байты (четыре строки по Nb байт) в порядке S00,S10,S20,S30,Sm,Sn,S21,S31,---. Рисунок 1.1 демонстрирует такое представление, носящее название архитектуры «Квадрат».

Рисунок 1.1 «Пример представления блока в виде матрицы 4xNb».

На старте процессов шифрования и дешифрования массив входных данных то, щ, ..., щ 5 преобразуется в массив State по правилу s[r,c] = in[r + 4c], где 0<г<4 и 0 < с < Nb. В конце действия алгоритма выполняется обратное преобразование out[r + 4c] = s[r,c], где 0<г<4 и 0<c<Nb - выходные данные получаются из байтов состояния в том же порядке.

Четыре байта в каждом столбце состояния представляют собой 32-битное слово, если г - номер строки в состоянии, то одновременно он является индексом каждого байта в этом слове. Следовательно состояние можно представить как одномерный массив 32-битных слов wo,...,wN , где номер столбца состояния с есть индекс в этом массиве. Тогда состояние можно представить так:

Ключ шифрования также как и массив State представляется в виде прямоугольного массива с четырьмя строками. Число столбцов этого массива равно Nk.

Для алгоритма AES число раундов Nr определяется на старте в зависимости от значения Ж (Таблица 1.1):

Nk Nb Nr
AES-128 4 4 10
AES-192 6 4 12
AES - 256 8 4 14

Таблица 1.1 «Зависимость значения Nr от Nk и Nb »

Функция зашифрования

Введем следующие обозначения:

SubBytes() - замена байтов- побайтовая нелинейная подстановка в State-блоках (S-Вох) с использованием фиксированной таблицы замен размерностью 8x256 (affain map table);

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

MixColumns() - перемешивание столбцов - умножение столбцов состояния, рассматриваемых как многочлены над GF(28);

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

На псевдокоде операция зашифрования выглядит следующим образом:

Рисунок 1.2 «Операция зашифрования, реализованная на псевдокоде»

После заполнения массива State элементами входных данных к нему применяется преобразование AddRoundKeyQ, далее, в зависимости от величины Nk, массив State подвергается трансформации раундовой 10, 12 или 14 раз, причем в финальный раунд является несколько укороченным - в нем отсутствует преобразование MixColumnsQ. Выходными данными описанной последовательности операций является шифротекст - результат действия функции зашифрования AES.

Функции расшифрования

В спецификации алгоритма AES предлагаются два вида реализаций функции расшифрования отличающихся друг от друга последовательностью приложения преобразований обратных преобразованиям функции зашифрования и последовательностью планирования ключей (см. ниже).

Введем следующие обозначения:

InvSubBytes() — обратная SubBytes() замена байтов- побайтовая нелинейная подстановка в SWe-блоках с использованием фиксированной таблицы замен размерностью 8x256 (inverse affain map);

InvShiftRows() — обратный сдвиг строк ShiftRows()— циклический сдвиг строк массива State на различное количество байт;

InvMixColumns() - восстановление значений столбцов - умножение столбцов состояния, рассматриваемых как многочлены над GF(28);

Функция обратного расшифрования

К-во Просмотров: 309
Бесплатно скачать Реферат: Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars