Учебники

Расширенный стандарт шифрования

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

Нужна была замена для DES, поскольку его размер ключа был слишком мал. С ростом вычислительной мощности он был признан уязвимым для исчерпывающей атаки поиска ключа. Triple DES был разработан, чтобы преодолеть этот недостаток, но он был найден медленным.

Особенности AES следующие:

  • Симметричный ключ симметричный блочный шифр
  • 128-битные данные, 128/192/256-битные ключи
  • Сильнее и быстрее, чем Triple-DES
  • Предоставить полную спецификацию и детали дизайна
  • Программное обеспечение, реализуемое на C и Java

Операция AES

AES является итеративным, а не шифром Фейстеля. Он основан на «сети замещения-перестановки». Он состоит из серии связанных операций, некоторые из которых включают замену входов конкретными выходами (подстановки), а другие — перемешивание битов (перестановок).

Интересно, что AES выполняет все свои вычисления в байтах, а не в битах. Следовательно, AES рассматривает 128 битов блока открытого текста как 16 байтов. Эти 16 байтов расположены в четыре столбца и четыре строки для обработки в виде матрицы —

В отличие от DES, количество раундов в AES является переменным и зависит от длины ключа. AES использует 10 раундов для 128-битных ключей, 12 раундов для 192-битных ключей и 14 раундов для 256-битных ключей. Каждый из этих раундов использует различный 128-битный ключ раунда, который рассчитывается из исходного ключа AES.

Схема структуры AES приведена на следующем рисунке —

Структура AES

Процесс шифрования

Здесь мы ограничимся описанием типичного раунда шифрования AES. Каждый раунд состоит из четырех подпроцессов. Процесс первого раунда изображен ниже —

Процесс первого раунда

Подстановка байтов (SubBytes)

16 входных байтов заменяются поиском фиксированной таблицы (S-блока), заданной в проекте. Результат в виде матрицы из четырех строк и четырех столбцов.

ShiftRows

Каждая из четырех строк матрицы смещена влево. Любые записи, которые «отваливаются», повторно вставляются с правой стороны строки. Сдвиг осуществляется следующим образом —

  • Первый ряд не смещен.

  • Второй ряд сдвинут на одну (байтовую) позицию влево.

  • Третий ряд смещен на две позиции влево.

  • Четвертый ряд смещен на три позиции влево.

  • Результатом является новая матрица, состоящая из тех же 16 байтов, но смещенных относительно друг друга.

Первый ряд не смещен.

Второй ряд сдвинут на одну (байтовую) позицию влево.

Третий ряд смещен на две позиции влево.

Четвертый ряд смещен на три позиции влево.

Результатом является новая матрица, состоящая из тех же 16 байтов, но смещенных относительно друг друга.

MixColumns

Каждый столбец из четырех байтов теперь преобразуется с помощью специальной математической функции. Эта функция принимает в качестве входных данных четыре байта одного столбца и выводит четыре совершенно новых байта, которые заменяют исходный столбец. В результате получается еще одна новая матрица, состоящая из 16 новых байтов. Следует отметить, что этот шаг не выполняется в последнем туре.

Addroundkey

16 байтов матрицы теперь считаются 128-битными и XOR-к 128-битам круглого ключа. Если это последний раунд, то результатом является зашифрованный текст. В противном случае результирующие 128 бит интерпретируются как 16 байтов, и мы начинаем еще один аналогичный раунд.

Процесс дешифрования

Процесс дешифрования зашифрованного текста AES аналогичен процессу шифрования в обратном порядке. Каждый раунд состоит из четырех процессов, проводимых в обратном порядке —

  • Добавить круглый ключ
  • Смешайте столбцы
  • Сдвиг строк
  • Подстановка байтов

Поскольку подпроцессы в каждом раунде выполняются в обратном порядке, в отличие от шифра Фейстеля, алгоритмы шифрования и дешифрования должны быть реализованы отдельно, хотя они очень тесно связаны.

AES Анализ

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

Однако, как и для DES, безопасность AES гарантируется только в том случае, если она правильно реализована и используется хорошее управление ключами.