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

AEAD

AEAD (Authenticated Encryption with Associated Data, аутентифицированное шифрование с ассоциированными данными) — это класс криптографических примитивов, одновременно обеспечивающих конфиденциальность, целостность и аутентичность данных, а также аутентичность дополнительных метаданных (ассоциированных данных), которые не шифруются. AEAD объединяет в одном алгоритме симметричное шифрование и вычисление кода аутентичности (MAC, Message Authentication Code), что позволяет защитить данные от подделки и раскрытия в рамках единой операции.

История и предпосылки

До появления AEAD разработчики часто использовали отдельные алгоритмы для шифрования и аутентификации, что приводило к ошибкам в реализации. Классическая схема «шифровать-затем-MAC» (Encrypt-then-MAC) теоретически безопасна, но требовала от разработчика корректного выбора ключей, порядка операций и формата данных. На практике это приводило к уязвимостям: например, в протоколах SSL/TLS до версии 1.3 использовались раздельные шифрование и MAC, что позволяло атаки типа Vaudenay (padding oracle attack).

В 2000-х годах криптографы начали активно разрабатывать комбинированные режимы, которые устраняли бы эти риски. Первым стандартизированным AEAD-режимом стал CCM (Counter with CBC-MAC), описанный в RFC 3610 (2003) для использования в протоколах беспроводной связи (IEEE 802.11i). Позднее появились GCM (Galois/Counter Mode), EAX и OCB. В 2008 году NIST (Национальный институт стандартов и технологий США) рекомендовал GCM и CCM в качестве стандартных AEAD-режимов для AES. С 2010-х годов AEAD стал обязательным требованием в современных протоколах, таких как TLS 1.3 (RFC 8446, 2018), SSH, IPsec и WireGuard.

Принцип работы

AEAD-алгоритм принимает на вход три элемента:

  • Ключ (K) — симметричный ключ шифрования.
  • Открытый текст (P) — данные, которые необходимо зашифровать.
  • Ассоциированные данные (A) — метаданные, которые не шифруются, но защищаются от подделки (например, заголовки пакетов, адреса, номера последовательности).

На выходе алгоритм выдаёт:

  • Шифротекст (C) — зашифрованный открытый текст.
  • Тег аутентичности (T) — фиксированная строка (обычно 16 байт), которая подтверждает целостность и подлинность как шифротекста, так и ассоциированных данных.

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

Свойства

AEAD гарантирует:

  • Конфиденциальность: атакующий не может получить информацию об открытом тексте из шифротекста (без знания ключа).
  • Целостность: любое изменение шифротекста или ассоциированных данных приводит к несовпадению тега.
  • Аутентичность: только владелец ключа может создать корректный шифротекст и тег.

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

Классификация и популярные режимы

AEAD реализуется на основе блочных шифров (например, AES) или поточных шифров (ChaCha20). Основные режимы:

GCM (Galois/Counter Mode)

GCM — наиболее распространённый AEAD-режим, стандартизированный NIST. Он использует AES в режиме счётчика (CTR) для шифрования и умножение в поле Галуа (GF(2^128)) для вычисления тега. GCM обеспечивает высокую производительность на процессорах с аппаратной поддержкой AES-NI (инструкции Intel). Его недостаток — чувствительность к повторному использованию одноразового номера (nonce): если nonce повторяется, конфиденциальность и аутентичность полностью теряются. Длина nonce в GCM — 12 байт (рекомендуется) или произвольная (с дополнительным хешированием).

CCM (Counter with CBC-MAC)

CCM комбинирует AES-CTR для шифрования и AES-CBC-MAC для аутентификации. Он менее производителен, чем GCM, но требует только один ключ и не использует умножение в поле Галуа. CCM применяется в стандартах беспроводной связи (Wi-Fi WPA2, ZigBee). Его недостаток — невозможность распараллеливания операций и фиксированная длина nonce (13 байт).

ChaCha20-Poly1305

Этот AEAD-режим основан на поточном шифре ChaCha20 (разработан Дэниелом Бернштейном) и одноразовом MAC-алгоритме Poly1305. Он не требует аппаратной поддержки, быстрее GCM на процессорах без AES-NI и устойчивее к ошибкам реализации (например, нечувствителен к padding oracle). ChaCha20-Poly1305 рекомендован IETF (RFC 8439) и используется в TLS 1.3, WireGuard, SSH, а также в протоколах Google (QUIC). Длина nonce — 12 байт.

OCB (Offset Codebook Mode)

OCB — один из самых быстрых AEAD-режимов, требующий всего один проход по данным. Он запатентован, что ограничило его распространение в открытых стандартах (хотя патентные претензии были сняты в 2013 году для свободного использования). OCB используется в некоторых коммерческих продуктах, но не входит в стандарты TLS.

Другие режимы

  • EAX — режим на основе AES-CTR и AES-CMAC, менее производительный, но простой в реализации.
  • SIV (Synthetic Initialization Vector) — детерминированный AEAD-режим, где nonce может быть пустым; используется в системах, где повторное шифрование одного и того же открытого текста должно давать одинаковый шифротекст (например, для шифрования ключей).

Применение

AEAD является основой безопасности современных сетевых протоколов и систем хранения данных:

  • TLS 1.3 (RFC 8446) — все шифрованные записи используют AEAD (AES-GCM или ChaCha20-Poly1305). Это исключает атаки на padding и обеспечивает аутентификацию каждого сообщения.
  • IPsec — в протоколах ESP и AH используются AEAD-режимы (AES-GCM, ChaCha20-Poly1305) для защиты туннелей VPN.
  • WireGuard — протокол VPN, целиком построенный на ChaCha20-Poly1305.
  • SSH — начиная с версии 6.5, поддерживает AEAD-режимы (ChaCha20-Poly1305, AES-GCM).
  • QUIC — протокол транспортного уровня, используемый в HTTP/3, применяет AEAD для защиты пакетов.
  • Дисковое шифрование — некоторые системы (например, Linux dm-crypt) поддерживают AEAD-режимы для защиты от атак с изменением шифротекста.
  • Беспроводные сети — WPA2 использует AES-CCMP (CCM-режим), WPA3 — AES-GCM.

Критика и ограничения

Основные проблемы AEAD связаны с управлением nonce (одноразовым номером). Повторное использование nonce с одним и тем же ключом в GCM или ChaCha20-Poly1305 приводит к полной потере безопасности: атакующий может восстановить ключ или подделать данные. В протоколах, где nonce генерируется случайно, вероятность коллизии мала (при 96-битном nonce — около 2^32 при 2^48 сообщениях), но в системах с счётчиками (например, IPsec) требуется строгое монотонное увеличение.

Другая критика касается производительности GCM на процессорах без аппаратной поддержки AES-NI: умножение в поле Галуа может быть медленным на мобильных устройствах. ChaCha20-Poly1305 решает эту проблему, но не поддерживается аппаратными ускорителями в большинстве процессоров (хотя появляются реализации в ARM и RISC-V).

Также AEAD не защищает от атак по сторонним каналам (timing attacks, power analysis), если реализация не использует константное время выполнения. Например, небезопасные реализации GCM могут раскрывать ключи через анализ времени умножения.

Интересные факты

  • AEAD-режим OCB был изобретён Филлипом Рогауэем в 2001 году и считается одним из самых эффективных, но его патентная защита долгое время мешала принятию в открытых стандартах. В 2013 году Рогауэй объявил о свободном использовании OCB для любых целей.
  • ChaCha20-Poly1305 был разработан Дэниелом Бернштейном как альтернатива AES-GCM, не требующая аппаратной поддержки. В 2014 году Google внедрил его в протокол QUIC, а затем в TLS — после того как выяснилось, что на мобильных устройствах без AES-NI ChaCha20-Poly1305 в 3-4 раза быстрее GCM.
  • В 2018 году в реализации GCM в библиотеке OpenSSL была обнаружена уязвимость, связанная с неверной обработкой nonce длиной не 12 байт — это позволяло атакующему подделать тег аутентичности.

Источники

  • RFC 3610 — Counter with CBC-MAC (CCM) Mode of Operation.
  • RFC 5288 — AES Galois Counter Mode (GCM) Cipher Suites for TLS.
  • RFC 8439 — ChaCha20 and Poly1305 for IETF Protocols.
  • NIST Special Publication 800-38D — Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC.
  • D. Bernstein, «ChaCha, a variant of Salsa20», 2008.
  • P. Rogaway, «The Security of the OCB Mode of Operation», 2001.

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

На главную BFOmetr →