Описание алгоритма AES
В приведенной выше матрице каждая строка начиная со второй является предыдущей строкой, циклически сдвинутой вправо на одну ячейку. Столь специфическая форма матрицы (7.20) обусловлена многочленом h (x) = х4 + 1, по модулю которого производится умножение в кольце 7?4(F2s). Также напомним, что такие матрицы принято называть циркулянтом, или циркуляитпой матрицей. Преобразование MixColumns… Читать ещё >
Описание алгоритма AES (реферат, курсовая, диплом, контрольная)
Алгоритм AES обладает следующими параметрами:
- • длина ключа: га = 128, 192 или 256,
- • длина раундового ключа: s = 128,
- • длина блока обрабатываемых данных: п = 128,
- • количество раундов: г = 10, 12 или 14 в зависимости от длины ключа.
Алгоритм развертки ключа позволяет выработать последовательность к,…, кг+ раундовых ключей и заключается в следующем. Исходный ключ к представляется в виде конкатенации «слов» размером 32 бита, то есть.
и величина с принимает значения 4, G или 8 в зависимости от длины ключа.
Величины h,…, 1с являются начальными значениями последовательности, состоящей из 4(г + 1) элементов множества Fip. Для выработки остальных значений используются следующие рекуррентные соотношения. При с = 4, б для всех индексов г — с+ 1, …, 4(r + 1) выполнено равенство.
При с = 8 для всех индексов г = с + 1,…, 4(r + 1) выполнено равенство.
Приведенные соотношения используют две вспомогательные функции SubWord (): F’J2 -" F:]2 и RotWord (): F:]2 -" F: J2, а также набор констант щ,…, ис— е Ff2, образующих последовательность целых чисел.
1,2,4,8,16,32,64,128.
Функции Sub Word и RotWord определяются следующим образом. Представим а е Fip в виде конкатенации а = 0411"211аз||"4, где ах,…, (X4 G F§, тогда.
где перестановка 7 г определена равенством (7.17).
Последовательность раундовых ключей к],…, kr+i € F.^28 алгоритма AES определяется равенствами ki = lu-zhi-2Ui-ihi для всех г = 1,…, r + 1.
Перейдем к описанию алгоритма зашифрования. Вначале исходное сообщение а € FJ,28 представляется в виде конкатенации байт — элементов множества F8. Для алгоритма AES часто используют матричную форму представления сообщения а, то есть.
Каждый раундовый ключ /сг, г = 1,…, г + 1, также представляется в виде конкатенации.
Алгоритм зашифрования представляет собой SP-сеть и определяется равенством (7.3), в котором преобразования U, R, W определяются следующим образом. Преобразование U не определено, и мы будем считать, что выполнено равенство U (a) — а для любого, а € F!28.
Раундовое преобразование R (ki, a), i — 1,…, г, состоит из четырех простых преобразований.
1. Преобразование AddRoundKey представляет собой наложение ключа по модулю два и определяется равенством.
выполненным для всех г = 1,…, г.
2. Преобразование SubBytes представляет собой параллельное применение нелинейной перестановки тт, определенной нами выше равенством (7.17),.
3. Преобразование ShiftRows представляет собой перестановку байт сообщения а, имеющую наглядное геометрическое представление. Определим
Теперь легко заметить, что преобразование ShiftRows есть циклический сдвиг второй строки матрицы, соответствующей сообщению а, на одну позицию влево, третьей строки матрицы — на две позиции влево и четвертой строки матрицы — на три позиции влево.
4. Преобразование MixColumns представляет собой умножение столбцов матрицы, соответствующей заданному сообщению а, на некоторый фиксированный многочлен из кольца /?4(IF2"), где поле F2s порождено неприводимым над полем F2 многочленом д (х) — Xs + хл + х3 + х + 1, а кольцо ft4(F2s) порождено приводимым над полем F2s многочленом к (х) = х4 + 1.
Преобразование MixColumns представляет собой отображение.
в котором коэффициенты bi,…, bie определяются следующим образом.
Рассмотрим многочлен с (х) — аго+одж+аг^+аз#3, коэффициенты которого принадлежат конечному полю F2" и определяются равенствами.
Тогда коэффициенты ф,…, Ьщ удовлетворяют равенствам.
Приведенные умножения многочленов реализуются в соответствии с равенством (7.13) в кольце 7?4(F2s) но модулю многочлена.
h (x) = x4 + 1. Например, для столбца коэффициентов Ь, 65, Ьд, 613 выполнено равенство.
тогда &i = a’oaj + a^as + «29 + адащ в поле F2s.
В приведенной выше матрице каждая строка начиная со второй является предыдущей строкой, циклически сдвинутой вправо на одну ячейку. Столь специфическая форма матрицы (7.20) обусловлена многочленом h (x) = х4 + 1, по модулю которого производится умножение в кольце 7?4(F2s). Также напомним, что такие матрицы принято называть циркулянтом, или циркуляитпой матрицей.
Для практической реализации на ЭВМ определенное нами преобразование MixColumns является достаточно трудоемким. Для повышения его эффективности можно реализовать операцию умножения на коэффициенты ао, аз многочлена с (х) таблично, то есть в явном виде для всех a G F2 задать перестановки.
Поскольку коэффициенты ад = «2 = 1, то они в операции умножения не участвуют. Следовательно, вычисление, например, коэффициента Ь может быть реализовано в виде.
Такой подход позволяет заменить достаточно трудоемкую операцию умножения в поле F2s на табличную замену, которая реализуется существенно быстрее.
Таким образом, мы можем записать раундовое преобразование алгоритма AES в виде последовательности четырех простых преобразований.
для всех i = 1,…, г — 1.
Последнее раундовое преобразование, при i — г, отличается от всех предыдущих тем, что в нем не используется преобразование MixColumns, то есть
Заключительное преобразование W зависит от раундового ключа кг+1 и представляет собой наложение ключа по модулю два, то есть определенное выше преобразование AddRoundKey.
Алгоритм расшифрования состоит в последовательном применении преобразований, обратных к введенным преобразованиям SubBytes, ShiftRows, MixColumns и AddRoundKey.
Поскольку большинство указанных преобразований тривиально, то и построение обратных к ним не составляет какого-либо труда.
Некоторая трудность возникает при обращении преобразования MixColumns, состоящего в умножении столбцов матрицы на фиксированный многочлен с (х) = ад + х + х2 + азх3.
Определим многочлен с-1 (ж) = 70 + 71 ж + 72Ж2 + 73Ж3, где.
и 7j, как и коэффициенты многочлена с (х), принадлежат полю F2e, порожденному многочленом д (х) = х8 + х4 + х3 + х + 1. Тогда выполнено равенство
в кольце R4(?2s).
Обратное преобразование к MixColumns состоит в умножении столбцов матрицы, соответствующей сообщению а, па многочлен с-1(ж). В заключение мы предлагаем читателю самостоятельно проверить корректность равенства (7.21).