Открыть сервис

AES

AES (от англ. Advanced Encryption Standard, расширенный стандарт шифрования) — симметричный алгоритм блочного шифрования, принятый в 2001 году в качестве стандарта правительством США. Алгоритм использует фиксированный размер блока данных (128 бит) и переменную длину ключа (128, 192 или 256 бит). AES пришёл на смену устаревшему стандарту DES и в настоящее время является одним из наиболее широко распространённых и изученных симметричных шифров в мире, применяемым в государственных, коммерческих и частных информационных системах.

История

Конкурс NIST

Разработка AES была инициирована Национальным институтом стандартов и технологий США (NIST) в 1997 году. Причиной послужила уязвимость стандарта DES (Data Encryption Standard), принятого в 1977 году, к атакам полного перебора из-за короткой длины ключа (56 бит). NIST объявил открытый международный конкурс на создание нового симметричного блочного шифра, который должен был удовлетворять строгим требованиям безопасности, производительности и гибкости.

На конкурс было подано 15 заявок от криптографов из разных стран. После трёх раундов отбора, в 2000 году, победителем был признан алгоритм Rijndael, предложенный бельгийскими криптографами Йоаном Дайменом и Винсентом Рейменом. Ключевыми факторами выбора стали высокая скорость работы на широком спектре аппаратных и программных платформ (от 8-битных микроконтроллеров до 64-битных процессоров), устойчивость к известным криптоаналитическим атакам и простота реализации.

Принятие стандарта

26 ноября 2001 года NIST опубликовал AES как Федеральный стандарт обработки информации (FIPS PUB 197). В 2002 году стандарт был одобрен правительством США для защиты секретной информации (с использованием ключей длиной 192 и 256 бит). В 2003 году Национальное агентство безопасности (NSA) сертифицировало AES для защиты информации уровня «Совершенно секретно» (Top Secret) при использовании 256-битных ключей. Впоследствии AES был принят в качестве международного стандарта ISO/IEC 18033-3.

Алгоритм

Общая структура

AES является блочным шифром, работающим с данными фиксированного размера — 128 бит (16 байт). Эти данные представляются в виде двумерного массива байтов размером 4×4, называемого состоянием (state). Обработка состояния производится последовательностью раундов, количество которых зависит от длины ключа:

Каждый раунд (кроме последнего) состоит из четырёх последовательных преобразований:

  1. SubBytes (Замена байтов): нелинейная замена каждого байта состояния по таблице подстановки (S-box). Эта операция обеспечивает нелинейность шифра, что критически важно для защиты от дифференциального и линейного криптоанализа.
  2. ShiftRows (Сдвиг строк): циклический сдвиг байтов в строках состояния. Вторая строка сдвигается на 1 байт влево, третья — на 2, четвёртая — на 3. Эта операция обеспечивает перемешивание данных между столбцами.
  3. MixColumns (Смешивание столбцов): линейное преобразование, при котором каждый столбец состояния рассматривается как многочлен и умножается по модулю неприводимого многочлена. Эта операция обеспечивает диффузию (распространение влияния одного бита на множество битов).
  4. AddRoundKey (Добавление раундового ключа): операция XOR между состоянием и раундовым ключом, который генерируется из исходного ключа с помощью процедуры расширения ключа (Key Expansion).

В последнем раунде операция MixColumns не выполняется.

Расширение ключа

Из исходного ключа шифрования генерируется набор раундовых ключей (по одному на каждый раунд плюс начальный ключ). Для AES-128 это 11 ключей по 128 бит (10 раундов + начальный). Процедура расширения ключа использует операции SubBytes, циклические сдвиги и XOR с константами раундов (Rcon), что предотвращает возможность восстановления ключа по частичной информации.

Дешифрование

Процесс дешифрования обратен шифрованию. Для него используются обратные преобразования: InvSubBytes, InvShiftRows, InvMixColumns и AddRoundKey (операция XOR является обратной самой себе). Порядок применения преобразований и раундовых ключей также обратный. Важно отметить, что алгоритмы шифрования и дешифрования имеют различную структуру, что отличает AES от некоторых других шифров (например, DES).

Криптостойкость

Атаки

На протяжении более чем 20 лет AES подвергался интенсивному криптоанализу. На сегодняшний день не существует практически реализуемых атак на полные версии AES (AES-128, AES-192, AES-256), которые были бы быстрее полного перебора ключей.

Квантовая устойчивость

В связи с развитием квантовых вычислений, AES считается частично уязвимым для атак с использованием алгоритма Гровера. Этот алгоритм позволяет выполнять поиск по неструктурированной базе данных (включая поиск ключа) с квадратичным ускорением. Таким образом, эффективная длина ключа AES в условиях квантового компьютера снижается вдвое:

В связи с этим, для защиты информации на длительный срок (более 10-15 лет) в постквантовую эпоху рекомендуется использовать AES-256.

Применение

AES является основой безопасности для огромного числа протоколов и систем:

Режимы работы

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

Источники

  1. National Institute of Standards and Technology (NIST). FIPS PUB 197: Advanced Encryption Standard (AES). 2001.
  2. Daemen, J., Rijmen, V. The Design of Rijndael: AES — The Advanced Encryption Standard. Springer, 2002.
  3. Schneier, B. Applied Cryptography: Protocols, Algorithms, and Source Code in C. John Wiley & Sons, 2015.
  4. Ferguson, N., Schneier, B., Kohno, T. Cryptography Engineering: Design Principles and Practical Applications. Wiley, 2010.
  5. Menezes, A. J., van Oorschot, P. C., Vanstone, S. A. Handbook of Applied Cryptography. CRC Press, 1996.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →