Источник: https://github.com/AnaktaCTF/CTF/blob/main — Cryptography/AES.md

Краткое описание AES как стандарта шифрования

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

Значимость AES в современной криптографии

  • Повсеместное применение: AES используется в различных сферах, таких как онлайн-банкинг, мессенджеры, системы хранения данных и виртуальные частные сети (VPN).
  • Высокая устойчивость: Алгоритм зарекомендовал себя как один из самых безопасных на сегодняшний день, так как он устойчив к большинству известных видов атак.
  • Международное признание: AES принят как международный стандарт и используется во всем мире, обеспечивая надежную защиту данных.

Цель статьи

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

Основы работы AES (Advanced Encryption Standard)

Структура шифрования AES

AES — симметричный алгоритм блочного шифрования, который преобразует данные фиксированными блоками по 128 бит, используя секретный ключ длиной 128, 192 или 256 бит. Основная цель — обеспечить конфиденциальность и целостность данных, что достигается через серию нелинейных и линейных преобразований.

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

  • 128 бит — 10 раундов.
  • 192 бит — 12 раундов.
  • 256 бит — 14 раундов.

Каждый раунд состоит из четырёх ключевых этапов:

1. Добавление раундового ключа (AddRoundKey)

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

Формула:
$$ C = P \oplus K $$
где (C) — зашифрованный блок, (P) — исходный блок, (K) — раундовый ключ.

2. Замена байтов (SubBytes)

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

Пример преобразования:
Входной байт 0x53 заменяется на значение 0xED из S-бокса.

Основные свойства:

  • S-бокс основан на обратных элементах поля Галуа ( GF(2^8) ).
  • Он устраняет линейные зависимости в данных.

3. Смещение строк (ShiftRows)

Байты в строках матрицы данных циклически сдвигаются влево на определённое количество позиций:

  • Первая строка: остаётся без изменений.
  • Вторая строка: сдвиг на 1 байт влево.
  • Третья строка: сдвиг на 2 байта влево.
  • Четвёртая строка: сдвиг на 3 байта влево.

Пример:
Если строка была ( [A, B, C, D] ), после сдвига станет ( [B, C, D, A] ).

Цель: улучшение диффузии данных, чтобы один байт влияния распространялся на весь блок.

4. Смешивание столбцов (MixColumns)

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

$$
{
\begin{bmatrix}
\mathtt{a_0} \
\mathtt{a_1} \
\mathtt{a_2} \
\mathtt{a_3} \
\end{bmatrix}
\cdot
\begin{bmatrix}
\mathtt{02} & \mathtt{03} & \mathtt{01} & \mathtt{01} \
\mathtt{01} & \mathtt{02} & \mathtt{03} & \mathtt{01} \
\mathtt{01} & \mathtt{01} & \mathtt{02} & \mathtt{03} \
\mathtt{03} & \mathtt{01} & \mathtt{01} & \mathtt{02} \
\end{bmatrix}

\begin{bmatrix}
\mathtt{b_0} \
\mathtt{b_1} \
\mathtt{b_2} \
\mathtt{b_3} \
\end{bmatrix}}
$$

Где (a_0, a_1, a_2, a_3) — исходные байты столбца, а (b_0, b_1, b_2, b_3) — новые байты столбца. Эта операция увеличивает смешивание данных внутри столбца.

5. Финальный раунд

Финальный раунд включает только три этапа:

  • AddRoundKey
  • SubBytes
  • ShiftRows

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

Расширение ключа (Key Expansion)

Процедура Key Expansion генерирует набор раундовых ключей из исходного ключа. Основные этапы:

  1. RotWord: циклический сдвиг байтов.
  2. SubWord: применение S-бокса к каждому байту.
  3. Добавление константы Rcon: для повышения уникальности ключей.

Генерируемые ключи уникальны для каждого раунда шифрования.

Расшифровка AES

Процесс расшифровки является обратным шифрованию:

  1. Обратное смешивание столбцов (Inverse MixColumns).
  2. Обратное смещение строк (Inverse ShiftRows).
  3. Обратная подстановка байтов (Inverse SubBytes).
  4. Добавление раундового ключа (AddRoundKey).

Эти операции позволяют восстановить исходный текст, если известен секретный ключ.

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

1. ECB (Electronic Codebook)

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

2. CBC (Cipher Block Chaining)

Каждый блок открытого текста XOR'ится с предыдущим зашифрованным блоком. Первый блок использует вектор инициализации (IV).

3. CFB (Cipher Feedback Mode)

Использует зашифрованный результат предыдущего блока для XOR'инга с текущим открытым текстом.

4. OFB (Output Feedback Mode)

Генерирует поток ключей, который XOR'ится с открытым текстом. Поток основан на шифровании предыдущего значения.

5. CTR (Counter Mode)

Использует инкрементируемый счётчик, шифруемый для каждого блока данных. Результат XOR'ится с открытым текстом.

6. GCM (Galois/Counter Mode)

Основан на CTR с добавлением аутентификации данных с использованием поля Галуа.

Преимущества AES

  1. Высокая производительность:

    • AES эффективен как на программном, так и на аппаратном уровне. Например, современные процессоры имеют встроенные инструкции для ускорения операций AES (Intel AES-NI).
  2. Гибкость:

    • Алгоритм поддерживает разные длины ключей (128, 192, 256 бит), позволяя выбирать уровень безопасности в зависимости от потребностей.
  3. Устойчивость к атакам:

    • AES был спроектирован с учетом защиты от таких видов атак, как дифференциальный криптоанализ, линейный криптоанализ и криптографические атаки по сторонним каналам.
  4. Широкая стандартизация:

    • Алгоритм используется в международных протоколах, включая TLS (для защищённого интернета), IPsec (для VPN) и WPA2 (для беспроводных сетей).

Примеры использования AES в реальных системах

1. Мессенджеры:

AES применяется в популярных приложениях, таких как:

  • WhatsApp: использует AES-256 для защиты данных в режиме GCM (Galois/Counter Mode).
  • Signal: применяет AES в комбинации с протоколом Double Ratchet для обеспечения сквозного шифрования сообщений.

2. Электронная коммерция:

AES служит основным компонентом в шифровании HTTPS (SSL/TLS). Он используется для защиты передачи данных, таких как информация о кредитных картах, пароли и личные данные.

3. Хранение данных:

Многие операционные системы и приложения используют AES для шифрования файлов и дисков:

  • BitLocker (Windows): применяет AES-128 или AES-256 для полного шифрования дисков.
  • VeraCrypt: предоставляет пользователям возможность выбора между различными длинами ключей AES для шифрования контейнеров данных.

4. VPN и беспроводные сети:

AES интегрирован в протоколы:

  • IPsec для безопасного соединения через VPN.
  • WPA2/WPA3 для защиты беспроводных сетей Wi-Fi.

5. Защита в облаке:

Облачные сервисы, такие как Amazon Web Services (AWS), Microsoft Azure и Google Cloud, используют AES для обеспечения безопасности шифрования данных на серверах.

Классификация атак на AES

1. Атаки на основе анализа времени выполнения (Timing Attacks)

Принцип

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

Алгоритм

  1. Атакующий отправляет множество запросов на шифрование/расшифровку.
  2. Замеряет время выполнения операций для каждого запроса.
  3. Анализирует закономерности во времени выполнения, чтобы восстановить часть или весь ключ.

Меры противодействия

  1. Использование алгоритмов с фиксированным временем выполнения (Constant-Time Algorithms):

    • Все операции шифрования и расшифровки выполняются за одинаковое время, независимо от входных данных и ключей.
    • Реализация таких алгоритмов минимизирует временные утечки.
  2. Аппаратное ускорение:

    • Использование технологий, таких как Intel AES-NI, которые выполняют ключевые операции шифрования аппаратно, устраняя зависимость от времени выполнения на уровне программы.
  3. Защита от анализа таймингов:

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

2. Атаки на основе анализа электромагнитного излучения (Side-Channel Attacks)

Принцип

Атака использует побочные сигналы, такие как электромагнитное излучение, потребление энергии или тепловые сигнатуры, возникающие при выполнении операций AES.

Алгоритм

  1. Устройство, выполняющее AES, подвергается мониторингу (например, с помощью осциллографа).
  2. Снимаются побочные данные, такие как потребление энергии или излучение.
  3. Анализируются закономерности сигналов для восстановления промежуточных данных и ключа.

Меры противодействия

  1. Экранирование устройств:

    • Устройства, работающие с AES, защищаются материалами, блокирующими утечку электромагнитных сигналов (например, Faraday cages).
  2. Уменьшение побочных излучений:

    • Использование аппаратных решений, которые минимизируют электромагнитное излучение во время вычислений.
  3. Внесение случайностей (Randomization):

    • Генерация случайных данных на промежуточных этапах шифрования для усложнения анализа побочных сигналов.

3. Дифференциальный криптоанализ

Принцип

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

Алгоритм

  1. Генерируются пары входных данных с известными различиями.
  2. Выполняется шифрование этих данных.
  3. Изучаются различия на выходе и выявляются зависимости между открытым текстом, зашифрованным текстом и ключом.

Меры противодействия

  1. Увеличение количества раундов шифрования:

    • Использование 12 или 14 раундов (как в случае AES-192 и AES-256) повышает сложность дифференциального анализа.
  2. Улучшение дизайна алгоритма:

    • S-бокс AES обеспечивает нелинейность, что предотвращает зависимость выходных данных от входных.
  3. Регулярный аудит:

    • Периодическая проверка реализации AES на возможные уязвимости.

4. Линейный криптоанализ

Принцип

Метод основан на поиске линейных зависимостей между открытым текстом, зашифрованным текстом и ключом.

Алгоритм

  1. Собираются большие объёмы пар данных: открытый текст и соответствующий зашифрованный текст.
  2. Строятся линейные уравнения, связывающие входные и выходные данные.
  3. Уравнения решаются для получения информации о ключе.

Меры противодействия

  1. Применение сложных нелинейных преобразований:

    • Структуры SubBytes, ShiftRows и MixColumns добавляют высокую степень диффузии, исключая линейные зависимости.
  2. Обновление криптографических библиотек:

    • Использование актуальных версий библиотек шифрования, которые включают улучшения против линейного криптоанализа.

5. Брутфорс (Brute Force)

Принцип

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

Алгоритм

  1. Генерируется последовательность всех возможных ключей.
  2. Для каждого ключа выполняется расшифровка зашифрованного текста.
  3. Проверяется, соответствует ли расшифрованный текст ожидаемому результату.

Меры противодействия

  1. Использование длинных ключей:

    • Применение ключей длиной 192 или 256 бит вместо 128 существенно повышает стойкость к перебору.
  2. Регулярная ротация ключей:

    • Частая смена ключей шифрования делает брутофорс-атаку неэффективной.
  3. Применение надёжных генераторов ключей:

    • Обеспечение высокой энтропии при генерации ключей исключает возможность предсказуемости.

6. Квантовые атаки

Принцип

Используется алгоритм Гровера на квантовых компьютерах для ускорения поиска ключей. Он уменьшает сложность перебора с (2^n) до (2^{n/2}), где (n) — длина ключа.

Алгоритм

  1. Создаётся суперпозиция всех возможных ключей.
  2. Применяется алгоритм Гровера для поиска ключа с минимальным числом шагов.
  3. После (2^{n/2}) итераций с высокой вероятностью находится правильный ключ.

Меры противодействия

  1. Переход на AES-256:

    • Увеличенная длина ключа (256 бит) обеспечивает защиту даже в случае использования квантовых алгоритмов, таких как алгоритм Гровера.
  2. Разработка постквантовых алгоритмов:

    • Исследования в области криптографии, ориентированной на устойчивость к квантовым компьютерам, являются перспективным направлением.

Пример вскрытия AES в режиме ECB

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

Расшифровать суффикс (данные после открытого текста)

Иногда секретные данные добавляются после открытого текста перед шифрованием. В идеальном мире вы не сможете извлечь эти данные, просматривая зашифрованный зашифрованный текст, не зная ключа. Однако с AES ECB это возможно.

Единственное, что вам нужно, — это функция, которая принимает обычный текст, добавляет секретные данные, шифрует всё это и возвращает зашифрованный текст.

def oracle(plaintext):
    return encrypt(plaintext + "secret")

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

# Initial ("AAAABBBBCCCCDDD")
AAAABBBBCCCCDDDs ecret
# Brute-force ("AAAABBBBCCCCDDD?")
AAAABBBBCCCCDDDa secret
AAAABBBBCCCCDDDb secret
AAAABBBBCCCCDDDc secret
...
AAAABBBBCCCCDDDs secret  # Match

Тогда мы знаем, что первый символ - s, и мы можем повторить то же самое снова, просто выделив больше места в нашем открытом тексте, чтобы второй символ секрета был вставлен в наш блок. Затем во время перебора мы уже знаем первый символ, и нам нужно только снова перебрать второй символ.

# Initial ("AAAABBBBCCCCDD")
AAAABBBBCCCCDDse cret
# Brute-force ("AAAABBBBCCCCDDs?")
AAAABBBBCCCCDDsa secret
AAAABBBBCCCCDDsb secret
AAAABBBBCCCCDDsc secret
...
AAAABBBBCCCCDDse secret  # Match

Последнее, что нужно отметить в реализации, — это когда вы слили первые 16 байт и, похоже, у нас больше нет места для вставки нашего суффикса. В этом случае мы можем просто начать с самого начала, введя 15 символов, а затем посмотреть на второй блок. Мы уже знаем весь открытый текст до этого момента, так что, по сути, это то же самое, что и раньше.

# Initial ("AAAABBBBCCCCDDD")
AAAABBBBCCCCDDDa muchlongersecret thanbefore
# Brute-force ("AAAABBBBCCCCDDDamuchlongersecre?")
AAAABBBBCCCCDDDa muchlongersecrea amuchlongersecre tthanbefore
AAAABBBBCCCCDDDa muchlongersecreb amuchlongersecre tthanbefore
AAAABBBBCCCCDDDa muchlongersecrec amuchlongersecre tthanbefore
...
AAAABBBBCCCCDDDa muchlongersecret amuchlongersecre tthanbefore  # Match in 2nd block

Заключение

Алгоритм AES представляет собой один из самых надёжных и широко используемых стандартов шифрования благодаря своей высокой безопасности, эффективности и гибкости. Благодаря различным режимам работы AES может адаптироваться к потребностям различных приложений: от защиты файлов и баз данных до обеспечения безопасности в потоковых соединениях. Однако, как показывают примеры успешных атак, реализация AES требует тщательного соблюдения мер защиты, таких как использование правильных режимов шифрования, соблюдение требований к ключам и вектору инициализации, а также предотвращение утечек по сторонним каналам.

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

Полезные материалы и источники

Для более глубокого изучения AES и его применения вы можете ознакомиться с следующими ресурсами:

  1. Шифрование AES: Что такое, как работает и почему это лучший выбор для безопасности данных
  2. Что такое AES шифрование и лучшее ли оно в 2025 году?
  3. AES (стандарт шифрования) — Википедия

Эти материалы помогут вам лучше понять теоретические основы AES, его реализацию и современные вызовы в области криптографии.