Выбор AEAD для промышленных систем
Примените систему принятия решений, чтобы выбрать подходящую схему AEAD с учётом модели угроз и требований к производительности
«Выбор AEAD для промышленных систем» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
AES-GCM: выбор по умолчанию
AES-GCM — правильный режим AEAD по умолчанию для большинства производственных систем. Он аппаратно ускоряется с помощью AES-NI практически на всех современных процессорах x86 и ARM64, широко поддерживается стеками TLS и криптографическими библиотеками, а также имеет обширную историю криптоанализа и эксплуатации в реальных системах.
Ограничения одноразовых чисел AES-GCM
AES-GCM использует 96-битное одноразовое число. При случайной генерации одноразовых чисел порог парадокса дней рождения достигается примерно после 2^32 сообщений под одним ключом; с этого момента вероятность коллизии одноразовых чисел становится существенной. Для систем с большим объёмом трафика необходимо управлять одноразовыми числами с помощью счётчика или менять ключ после 2^32 сообщений.
ChaCha20-Poly1305: когда AES-NI отсутствует
ChaCha20-Poly1305 — правильный выбор, если AES-NI недоступен или генерация одноразовых чисел может быть ненадёжной. Он быстро работает в программной реализации, по конструкции использует постоянное время выполнения и устойчив к атакам по побочным каналам, а также является обязательным набором шифров в TLS 1.3 для сред без аппаратной поддержки AES.
AES-GCM-SIV для безопасности одноразовых чисел
Если одноразовые числа могут повторно использоваться или должны генерироваться детерминированно, например в сервисах без состояния или при упаковке ключей, правильным выбором будет AES-GCM-SIV (RFC 8452). Он обеспечивает устойчивость к неправильному использованию одноразовых чисел при умеренных затратах производительности по сравнению со стандартным AES-GCM.
AEGIS для максимальной пропускной способности
AEGIS-128L — правильный выбор, если требуется максимальная пропускная способность шифрования и наличие AES-NI гарантировано на всех целевых устройствах. Сетевые устройства с высокой пропускной способностью, концентраторы VPN и системы шифрования хранилищ особенно хорошо подходят для этого режима, поскольку AEGIS обеспечивает заметный прирост производительности по сравнению с AES-GCM.
Выбор размера ключа: 128 или 256 бит
AES-128 обеспечивает 128-битную стойкость, которой считают достаточной против всех современных и предвидимых угроз со стороны классических вычислений. AES-256 предоставляет дополнительный запас стойкости на случай будущих достижений и требуется некоторыми нормативными стандартами, например для классификации TOP SECRET в рамках NSA Suite B. Для большинства приложений достаточно AES-128, который работает немного быстрее.
Выбор размера одноразового числа
AES-GCM использует 96-битные одноразовые числа, а AES-GCM-SIV также использует 96-битные одноразовые числа. XSalsa20, используемый в secretbox библиотеки libsodium, использует 192-битные одноразовые числа, благодаря чему генерация случайных одноразовых чисел остаётся безопасной для значительно большего числа сообщений под одним ключом. Более длинные одноразовые числа снижают риск случайного повторного использования в системах с большим объёмом трафика.
Рекомендуемые библиотеки
Используйте проверенные библиотеки AEAD, а не реализуйте примитивы непосредственно. libsodium предоставляет простой API AEAD (crypto_aead_aes256gcm_encrypt, crypto_aead_chacha20poly1305_ietf_encrypt). Google Tink дополняет примитивы AEAD сменой ключей и управлением версиями. Нативные для языков библиотеки TLS автоматически обрабатывают AEAD для защиты передаваемых данных.
Переход с AES-CBC
AES-CBC с отдельным HMAC-SHA256 в порядке EtM допустим, но устарел. Переход на AES-GCM упрощает реализацию, заменяя два примитива одним, и устраняет риск неправильной композиции. Данные в состоянии покоя, зашифрованные с помощью CBC-HMAC, следует повторно зашифровать с помощью AES-GCM во время плановой смены ключей.
Тестирование реализаций AEAD
Реализации AEAD следует проверять по официальным тестовым векторам NIST для AES-GCM и RFC 8439 для ChaCha20-Poly1305. Всегда проверяйте, что сбой проверки тега аутентификации приводит к возврату ошибки при расшифровании, а не частичного открытого текста. Некорректная обработка ошибок — распространённый недостаток реализации.
Схема выбора
Выбирайте AES-GCM, если доступен AES-NI и одноразовые числа уникальны. Выбирайте ChaCha20-Poly1305, если AES-NI отсутствует или одноразовые числа менее надёжны. Выбирайте AES-GCM-SIV, если существует риск повторного использования одноразовых чисел. Выбирайте AEGIS, если приоритетом является максимальная пропускная способность при гарантированном наличии AES-NI. Никогда не выбирайте режимы без AEAD для новых систем.
Проверка выбора AEAD
Микросервис без состояния развёрнут на нескольких репликах, должен шифровать данные и не может согласовать общий счётчик одноразовых чисел. Какой режим AEAD наиболее подходит?
Итоги урока: выбор подходящего AEAD
AES-GCM — выбор по умолчанию. ChaCha20-Poly1305 подходит для сред без AES-NI. AES-GCM-SIV предназначен для сред, где безопасность одноразовых чисел не гарантирована. AEGIS обеспечивает максимальную пропускную способность при гарантированном наличии AES-NI. Используйте библиотеки, такие как libsodium или Tink, вместо ручной композиции примитивов. Всегда проверяйте реализацию по официальным тестовым векторам и убеждайтесь, что сбои аутентификации обрабатываются правильно.
Часто задаваемые вопросы
Урок «Выбор AEAD для промышленных систем» бесплатный?
Да — полный текст урока «Выбор AEAD для промышленных систем» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Выбор AEAD для промышленных систем»?
Примените систему принятия решений, чтобы выбрать подходящую схему AEAD с учётом модели угроз и требований к производительности Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Выбор AEAD для промышленных систем»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Почему шифрование с последующим MAC лучше обратного порядка
- Режим SIV: AEAD с защитой от ошибок использования nonce
- AEGIS: высокоскоростное аутентифицированное шифрование
- Выбор AEAD для промышленных систем