Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Алгоритм шифрования AES

Определение 1

Алгоритм шифрования AES — это симметричный алгоритм блочного шифрования, который принят как стандарт шифрования правительством США по результатам конкурса AES (Advanced Encryption Standard, то есть расширенный стандарт шифрования).

Общие сведения о стандартах шифрования

В восьмидесятых годах двадцатого века главным симметричным криптографическим алгоритмом для внутреннего применения в США считался DES (Data Encryption Standard, то есть, стандарт шифрования данных). Но уже в девяностых годах начали выявляться его главные недостатки. Основным недостатком является длина ключа, которая составляет 56 бит. Данный размер стал превращаться в недостаточно большой по причине непрерывного роста производительности компьютерного оборудования, поскольку ключ можно было вскрыть способом стандартного перебора всех допустимых вариантов шифрования.

По этой причине в 1997-ом году NIST (National Institute of Standards and Technology, то есть, национальный институт стандартов и технологий) организовал проведение конкурса на новый стандарт симметричного криптографического алгоритма. NIST установил следующий набор обязательных требований к кандидатам:

  1. 128-битная размерность блока шифруемых данных.
  2. Не меньше трех размеров ключей (128, 192, 256 бит), которые обязан поддерживать алгоритм.
  3. Возможность использования операций, которые можно легко реализовать аппаратным и программным обеспечением.
  4. Простая организационная структура шифра, позволяющая заинтересованным сторонам самостоятельно осуществлять криптографический анализ.

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

«Алгоритм шифрования AES» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Алгоритм шифрования AES

Рассмотрим базовые понятия, которые необходимы для правильного понимания работы алгоритма. Прежде всего следует отметить, что алгоритм AES работает с байтами, которые могут быть интерпретированы как элементы конечного поля F(28). В данном поле определяются операции сложения и умножения двух компонентов, итогом которых тоже будет компонент этого поля. Приведем анализ каждой из операций:

  1. Сложение осуществляется при помощи операции xor, то есть сложение по модулю. Операция должна выполняться над двоичными числами поразрядно, то есть, если имеется два байта P=p7,p6,p5,p4,p3,p2,p1,p0 и Q=q7,q6,q5,q4,q3,q2,q1,q0, то итоговым результатом станет R=r7,r6,r5,r4,r3,r2,r1,r0, где ri=pixorri.
  2. Операция умножения. Для данной операции применяется отображение байта как полинома: p(x)=p7x7+p6x6+p5x5+p4x4+p3x3+p2x2+p1x+p0, умножение в поле F(28) в данном представлении реализуется по модулю неприводимого в этом поле многочлена m(x)=x8+x4+x3+x+1. То есть, для того получения результата умножения двух чисел в поле F(28), следует представить их в форме полиномов p(x) и q(x), а далее взять остаток от деления на многочлен m(x) произведения p(x) и q(x), а именно r(x)=p(x)q(x)mod(m(x)), и определить коэффициенты полинома r(x), являющиеся 8-битовым числом в поле F(28).

Рассмотрим алгоритм шифрования AES c размером ключа 128 бит. Прежде всего входные данные должны быть разбиты на блоки по 16 байт, а когда полный размер не является кратным 16 байтам, то данные должны быть дополнены до размера, кратного 16 байтам. Блоки можно представить в виде матрицы 4x4, обозначенной как state. Затем следует выполнить процедуру расширения ключа и к каждому блоку state должна быть применена операции 2-4. Алгоритм может быть представлен в виде следующих шагов:

  1. Процедура расширения ключа (KeyExpansion).
  2. Первоначальный раунд, который состоит в сложении state с основным ключом.
  3. Выполнение девяти раундов шифрования, каждый из которых включает ряд преобразований, а именно, SubBytes, ShiftRows, MixColumns, AddRoundKey.
  4. Выполнение финального раунда, который также состоит из набора преобразований, а именно, SubBytes, ShiftRows, AddRoundKey.

Рассмотрим более подробно все представленные выше преобразования. SubBytes выпоняет замену байтов state по таблице S-box. Каждый байт может быть представлен в виде двух шестнадцатеричных чисел b = (x, y), в которых x определяется четырьмя старшими разрядами b, а y определяется четырьмя младшими разрядами. В таблице S-box, имеющей размерность 16x16, расположены значения, предназначенные для замены исходного байта, то есть, значение b' на пересечении строки x и столбца y S-box используется в качестве замены исходному байту b, как показано на рисунке ниже.

Таблица. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Таблица. Автор24 — интернет-биржа студенческих работ

Преобразование ShiftRows является циклическим сдвигом строк state. Нулевая строка должна оставаться на месте, первая сместиться влево на один байт, вторая на два байта и третья на три байта соответственно:

Таблицы. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Таблицы. Автор24 — интернет-биржа студенческих работ

Преобразование MixColumns представляет собой умножение каждого столбца state на фиксированную матрицу. То есть, это по сути реализуется линейное преобразование над столбцами state. При этом операции умножения и сложения производятся по правилам, которые были описаны выше:

Таблицы. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Таблицы. Автор24 — интернет-биржа студенческих работ

Преобразование AddRoundKey является раундовым ключом, который поэлементно добавляется к state при помощи поразрядного XOR.

KeyExpansion является процедурой расширения основного ключа для формирования раундовых ключей, которые далее применяются в раундах шифрования. Расширенный ключ имеет в своем составе сорок четыре четырехбайтовых слова (wi), а именно, четыре слова на основной ключ и по четыре слова на десять раундовых ключей. То есть, полный размер расширенного ключа равняется 1408 бит. Процедура расширения ключа применяет массив Rcon и включает в свой состав следующие действия:

  1. Четыре слова основного ключа переносятся в первые четыре слова расширенного ключа.
  2. Когда число i без остатка делится на четыре, тогда wi=SubBytes(RotByte(wi1))xorRconi/4.
  3. В противном случае wi=wi4xorwi1.
Дата написания статьи: 02.03.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot

Изучаешь тему "Алгоритм шифрования AES"? Могу объяснить сложные моменты или помочь составить план для домашнего задания!

AI Assistant