Аутентифицированное шифрование¶
Аутентифицированное шифрование — это криптографический метод, который одновременно обеспечивает конфиденциальность, целостность и подлинность данных. В отличие от традиционных схем, где шифрование и контроль целостности (например, с помощью кода аутентичности сообщения, 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 →


