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

Аутентифицированное шифрование

Аутентифицированное шифрование — это криптографический метод, который одновременно обеспечивает конфиденциальность, целостность и подлинность данных. В отличие от традиционных схем, где шифрование и контроль целостности (например, с помощью кода аутентичности сообщения, MAC) применяются раздельно, аутентифицированное шифрование объединяет эти функции в единый алгоритм, гарантируя, что любое несанкционированное изменение зашифрованного текста будет обнаружено при расшифровании. Этот подход является основой современных протоколов безопасности, таких как TLS 1.3, SSH и IPsec.

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

Необходимость в аутентифицированном шифровании возникла из-за уязвимости классических схем шифрования, которые защищали только конфиденциальность. Например, блочные шифры в режиме сцепления блоков (CBC) или гаммирования (CTR) сами по себе не обеспечивают целостности: злоумышленник, перехвативший зашифрованный текст, мог изменить его определённым образом, и получатель при расшифровании не мог бы обнаружить подмену. Такие атаки, как padding oracle attack на CBC-режим, показали, что раздельное применение шифрования и MAC может быть небезопасным, если порядок операций выбран неправильно.

В 2000-х годах криптографы формализовали понятие аутентифицированного шифрования. В 2008 году Национальный институт стандартов и технологий США (NIST) утвердил стандарт AES-GCM (Galois/Counter Mode), который стал одним из первых широко используемых режимов аутентифицированного шифрования. Позднее, в 2013 году, был опубликован стандарт ChaCha20-Poly1305, предложенный Дэниелом Бернштейном, который получил распространение в мобильных и веб-протоколах.

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

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

При расшифровании получатель использует тот же ключ, проверяет тег и, если он совпадает с вычисленным, восстанавливает открытый текст. Если тег не совпадает, расшифрование отвергается, и данные считаются скомпрометированными. Это свойство называется «непротиворечивостью»: злоумышленник не может создать валидный зашифрованный текст без знания ключа.

Режимы и алгоритмы

Существует несколько основных подходов к реализации аутентифицированного шифрования:

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

  • GCM (Galois/Counter Mode) — наиболее распространённый режим. Использует шифрование в режиме счётчика (CTR) для конфиденциальности и умножение в поле Галуа для вычисления тега. Поддерживает AAD. Высокая скорость на аппаратных платформах с поддержкой инструкций AES-NI.
  • CCM (Counter with CBC-MAC) — комбинирует режим CTR и CBC-MAC. Менее производителен, чем GCM, но требует меньше памяти. Используется в протоколах IEEE 802.11 (Wi-Fi) и Bluetooth.
  • OCB (Offset Codebook Mode) — режим, требующий однократного прохода данных. Обеспечивает высокую скорость, но запатентован, что ограничило его распространение в свободном ПО.

Поточные шифры и MAC

  • ChaCha20-Poly1305 — комбинация поточного шифра ChaCha20 и алгоритма аутентификации Poly1305. Разработан для программной реализации, не требует аппаратного ускорения. Используется в TLS 1.3, SSH, WireGuard и протоколе HTTPS.
  • XSalsa20-Poly1305 — вариант с увеличенным размером nonce (192 бита), применяется в криптографической библиотеке NaCl.

Схемы с раздельными операциями

Хотя аутентифицированное шифрование обычно подразумевает единый алгоритм, существуют комбинации шифрования и MAC, которые считаются безопасными при правильном порядке:

  • Encrypt-then-MAC (EtM) — сначала шифрование, затем вычисление MAC на зашифрованный текст. Рекомендуется в протоколах IPsec.
  • MAC-then-Encrypt (MtE) — сначала MAC, затем шифрование. Используется в старых версиях TLS (до 1.3), но уязвим к атакам на padding.
  • Encrypt-and-MAC (E&M) — параллельное вычисление. Применяется в SSH, но требует осторожности (например, с использованием разных ключей).

Свойства и требования безопасности

Аутентифицированное шифрование должно удовлетворять следующим критериям:

  • Конфиденциальность: противник не может получить информацию об открытом тексте, имея только зашифрованный текст.
  • Целостность: любое изменение зашифрованного текста или AAD приводит к несовпадению тега.
  • Неподделываемость: без знания ключа невозможно создать зашифрованный текст, который пройдёт проверку аутентичности.
  • Устойчивость к атакам с выбором открытого текста (CPA) и атакам с выбором зашифрованного текста (CCA2).

Важным требованием является уникальность nonce (однократно используемого числа) для каждого сообщения при одном ключе. Повторное использование nonce в GCM или ChaCha20-Poly1305 может привести к полной компрометации ключа.

Применение

Аутентифицированное шифрование используется в большинстве современных криптографических протоколов:

  • TLS 1.3 (протокол защиты транспортного уровня) — обязательное использование аутентифицированного шифрования (AES-GCM или ChaCha20-Poly1305). Предыдущие версии TLS допускали раздельные схемы, что приводило к уязвимостям.
  • IPsec — протокол безопасности для IP-сетей. Использует GCM, CCM или комбинацию ESP + HMAC.
  • SSH — протокол удалённого доступа. В версии 2 поддерживает ChaCha20-Poly1305 и AES-GCM.
  • WireGuard — современный VPN-протокол, использующий ChaCha20-Poly1305.
  • Квантово-устойчивые криптосистемы — в рамках постквантовой криптографии разрабатываются аутентифицированные режимы, устойчивые к атакам с использованием квантового компьютера.

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

Основные проблемы аутентифицированного шифрования связаны с реализацией и управлением ключами:

  • Утечка nonce: в режиме GCM повторное использование nonce позволяет злоумышленнику восстановить ключ аутентификации и подделать любой тег.
  • Сложность аппаратной реализации: некоторые режимы (например, OCB) требуют патентных лицензий.
  • Атаки по сторонним каналам: небезопасные реализации (например, сравнение тега по времени) могут раскрыть информацию о ключе.
  • Отсутствие защиты от атак повторного воспроизведения: аутентифицированное шифрование само по себе не предотвращает повторную отправку перехваченного сообщения; для этого требуются дополнительные механизмы (например, счётчики или метки времени).

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

  • Алгоритм ChaCha20-Poly1305 был разработан Дэниелом Бернштейном в 2008 году и изначально предназначался для использования в протоколе DNSCurve.
  • В 2018 году Google объявил о поддержке ChaCha20-Poly1305 в протоколе TLS 1.3 для мобильных устройств, так как этот алгоритм работает быстрее AES-GCM на процессорах без аппаратного ускорения.
  • Режим GCM был включён в стандарт NIST SP 800-38D и широко используется в банковских системах, облачных сервисах и военных коммуникациях.

Источники

  • NIST Special Publication 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC
  • RFC 8439: ChaCha20 and Poly1305 for IETF Protocols
  • M. Bellare, C. Namprempre: Authenticated Encryption: Relations among Notions and Analysis of the Generic Composition Paradigm
  • D. Bernstein: The Poly1305-AES Message-Authentication Code
  • TLS 1.3 Specification (RFC 8446)

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

На главную BFOmetr →