Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Основы стандарта AES (длины ключей, размер блока, последовательность шифрования, операции шифрования, криптостойкость).




AES [1] представляет собой алгоритм шифрования 128-битных блоков данных клю-

чами по 128, 192 и 256 бит. AES является упрощенной версией алгоритма Rijndael [2].

Block последовательность бит, из которых состоит input, output, State и Round Key. Также под Block можно понимать последовательность байт
Cipher Key секретный, криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов(Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок.
Ciphertext выходные данные алгоритма шифрования
Key Expansion процедура используемая для генерации Round Keys из Cipher Key
Round Key Round Keys получаются из Cipher Key используя процедуру Key Expansion. Они применяются к State при шифровании и расшифровании
State промежуточный результат шифрования, который может быть представлен как прямоугольный массив байтов имеющий 4 строки и Nb колонок
S-box нелинейная таблица замен, использующаяся в нескольких трансформациях замены байт и в процедуре Key Expansion для взаимнооднозначной замены значения байта. Предварительно рассчитанный S-box можно увидеть ниже.
Nb число столбцов(32-х битных слов), составляющих State. Для AES, Nb = 4
Nk число 32-х битных слов, составляющих шифроключ. Для AES, Nk = 4,6, или 8
Nr число раундов, которое является функцией Nk и Nb. Для AES, Nr = 10, 12, 14
Rcon[] массив, который состоит из битов 32-х разрядного слова и является постоянным для данного раунда. Предварительно рассчитанный Rcon[] можно увидеть ниже.

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

вания данных:

1. ExpandKey — Вычисление раундных ключей для всех раундов.

2. SubBytes — Подстановка байтов с помощью таблицы подстановок;

3. ShiftRows — Циклический сдвиг строк в форме на различные величины;

4. MixColumns — Смешивание данных внутри каждого столбца формы;

5. AddRoundKey — Сложение ключа раунда с формой.

Порядок выполнения процедур 2 и 3 можно поменять местами в силу опеределения

этих операций.

Процедуры 4 и 5 тоже можно выполнять в разном порядке, но при этом изменяется

количество их вызовов, поскольку MixColumns(AddRoundKey(A, B)) =

AddRoundKey(MixColumns(A), MixColumns(B)).

Шифрование производится по алгоритму, приведенному на Риc. 1.

AES является стандартом, основанным на алгоритме Rijndael. Для AES длина input(блока входных данных) и State(состояния) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для обозначения выбранных длин input, State и Cipher Key в байтах используется нотация Nb = 4 для input и State, Nk = 4, 6, 8 для Cipher Key соответственно для разных длин ключей.

В начале шифрования input копируется в массив State по правилу , для и . После этого к State применяется процедура AddRoundKey() и затем State проходит через процедуру трансформации (раунд) 10, 12, или 14 раз (в зависимости от длины ключа), при этом надо учесть, что последний раунд несколько отличается от предыдущих. В итоге, после завершения последнего раунда трансформации, State копируется в output по правилу , для и .

Отдельные трансформации SubBytes(), ShiftRows(), MixColumns(), и AddRoundKey() — обрабатывают State. Массив w[] — содержит key schedule.

Преобразование SubBytes заключается в замене каждого байта {xy} формы (где x и y обозначают шестнадцатиричные цифры) на другой в соответствии с Табл. 3.

Преобразование ShiftRows заключается в циклическом сдвиге влево строк формы.

Преобразование схематично представлено на Риc. 2. Первая строка остается неизменной.

Во второй производится сдвиг на 1 байт, то есть первый байт переносится в конец. В третьей ― сдвиг на 2 байта, в четветрой ― на 3.

Преобразование MixColumns заключается в умножении квадратной матрицы 4-го

порядка на каждый столбец формы.

В преобразовании AddRoundKey 32-битные слова раундного ключа прибавляются

к столбцам формы с помощью побитовой операцииXOR.

В алгоритме AES генерируются раундные ключи на основе ключа шифрования с

помощью процедуры ExpandKey. Процедура ExpandKey создает Nb * (Nr + 1) слов: алгоритму требуется начальный ключ размером Nb, плюс каждый из Nr раундов требует ключ из Nb слов.
При дешифровании все преобразования производятся в обратном порядке. Используются следующие обратные преобразования вместо соответствующих шифрующих:

• InvSubBytes ― Подстановка байтов с помощью обратной таблицы подстановок;

• InvShiftRows ― Циклический сдвиг строк в форме на различные величины;

• InvMixColumns ― Смешивание данных внутри каждого столбца формы;


Поделиться:

Дата добавления: 2015-09-13; просмотров: 305; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты