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

AEAD-шифры

AEAD (от англ. Authenticated Encryption with Associated Data — аутентифицированное шифрование с присоединёнными данными) — это класс симметричных криптографических алгоритмов, которые одновременно обеспечивают конфиденциальность, целостность и аутентичность данных, а также защиту связанных с ними метаданных (associated data). В отличие от традиционных схем, где шифрование и контроль целостности выполняются отдельными алгоритмами (например, AES-CBC + HMAC), AEAD-шифры объединяют эти функции в единый процесс, что исключает уязвимости, связанные с неправильной реализацией или порядком операций.

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

Потребность в AEAD-шифрах возникла в начале 2000-х годов, когда стало очевидно, что раздельное шифрование и аутентификация (encrypt-then-MAC, MAC-then-encrypt, encrypt-and-MAC) имеют фундаментальные недостатки. Например, при схеме MAC-then-encrypt злоумышленник может модифицировать шифротекст, и проверка MAC до расшифровки не всегда выявляет атаку. В 2000 году криптографы Чарльз Раккофф и Филип Рогэвей опубликовали работу «A Security Analysis of the EAX Mode», где впервые формализовали понятие AEAD. В 2008 году Национальный институт стандартов и технологий США (NIST) утвердил первый стандартизированный AEAD-режим — GCM (Galois/Counter Mode) в составе рекомендаций SP 800-38D. С тех пор AEAD-шифры стали обязательным требованием для современных протоколов, включая TLS 1.3, SSH, IPsec и WireGuard.

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

AEAD-шифры обеспечивают три ключевых свойства безопасности:

Дополнительно AEAD-шифры принимают на вход три параметра: ключ (секретный), одноразовый номер (nonce, также называемый IV — initialisation vector) и связанные данные (associated data, AD). Связанные данные — это метаданные, которые не шифруются, но защищаются от модификации (например, заголовки сетевых пакетов, IP-адреса, номера сессий). На выходе формируется шифротекст и тег аутентификации (authentication tag) — короткая строка фиксированной длины, подтверждающая целостность.

Классификация AEAD-режимов

AEAD-шифры делятся на два основных класса: режимы на основе блочных шифров и режимы на основе потоковых шифров или хэш-функций.

Режимы на основе блочных шифров

Наиболее распространённые AEAD-режимы используют блочный шифр (обычно AES) как базовый примитив:

Режимы на основе потоковых шифров и хэш-функций

Устройство и принцип работы

Типичный AEAD-алгоритм работает в два этапа:

  1. Шифрование: открытый текст разбивается на блоки (если используется блочный шифр) или обрабатывается побайтово (потоковый шифр). Каждый блок шифруется с использованием ключа и одноразового номера. Параллельно вычисляется тег аутентификации, который зависит от шифротекста, связанных данных и, возможно, длины блоков.
  2. Расшифровка: получатель использует тот же ключ и одноразовый номер для расшифровки. После расшифровки вычисляется ожидаемый тег и сравнивается с полученным. Если теги не совпадают, данные отвергаются как скомпрометированные.

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

Применение

AEAD-шифры являются стандартом де-факто в современных криптографических протоколах:

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

Несмотря на преимущества, AEAD-шифры имеют ряд ограничений:

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

Источники

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

На главную BFOmetr →