Режим SIV: AEAD с защитой от ошибок использования nonce
Изучите режим Synthetic IV (SIV) и способы защиты от катастрофических последствий повторного использования nonce
«Режим SIV: AEAD с защитой от ошибок использования nonce» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Повторное использование одноразового значения: катастрофический сбой
Шифры AEAD на основе режима CTR, такие как AES-GCM, требуют уникального одноразового значения для каждого шифрования. Если одно и то же одноразовое значение повторно используется с тем же ключом, атакующий, наблюдающий два шифртекста, может применить к ним XOR и получить XOR двух открытых текстов, немедленно нарушив конфиденциальность.
Повторное использование одноразового значения в GCM раскрывает ключ аутентификации
Повторное использование одноразового значения в AES-GCM ещё опаснее, чем в обычном режиме CTR. Если два сообщения зашифрованы с одним и тем же одноразовым значением и ключом, атакующий может полностью восстановить ключ аутентификации GHASH H. Зная H, атакующий может подделывать произвольные аутентифицированные сообщения.
Введён режим синтетического вектора инициализации
Режим синтетического вектора инициализации (SIV), определённый в RFC 5297, разработан для устранения уязвимостей, связанных с повторным использованием одноразовых значений. Вместо требования случайного или основанного на счётчике одноразового значения SIV синтетически выводит вектор инициализации из самого открытого текста с помощью псевдослучайной функции, делая режим детерминированным и устойчивым к ошибочному использованию одноразовых значений.
Механизм получения одноразового значения в SIV
В режиме SIV одноразовое значение, называемое синтетическим вектором инициализации, вычисляется на основе ключа, открытого текста и связанных данных с помощью PRF. Затем этот вектор инициализации используется как счётчик при шифровании в режиме CTR. Поскольку вектор инициализации выводится из открытого текста, шифрование одного и того же открытого текста всегда даёт один и тот же шифртекст.
Последствие повторного использования одноразового числа в SIV
Если одноразовое число повторно используется в SIV, поскольку один и тот же открытый текст шифруется дважды, наблюдатель узнаёт лишь о том, что были отправлены два одинаковых сообщения. Содержимое открытого текста при этом остаётся скрытым. Это значительно лучше, чем в режимах AEAD на основе CTR, где повторное использование одноразового числа раскрывает XOR открытых текстов.
Конструкция AES-SIV
AES-SIV (RFC 5297) использует функцию S2V — цепочечный PRF на основе AES-CMAC — для создания синтетического вектора инициализации, после чего выполняет шифрование AES-CTR с использованием второго подключа. Для этого требуются два ключа AES, поэтому управление ключами немного сложнее, чем в режимах AEAD с одним ключом.
AES-GCM-SIV: современная альтернатива
AES-GCM-SIV (RFC 8452) — более эффективный режим AEAD, устойчивый к неправильному использованию одноразовых чисел и предназначенный для сочетания производительности GCM с безопасностью, подобной SIV. Он выводит подключи для каждого сообщения на основе одноразового числа и использует аутентификатор Polyval, обеспечивая более высокую производительность, чем AES-SIV, при сохранении устойчивости к неправильному использованию одноразовых чисел.
Цена двух проходов
SIV требует двух проходов по данным: один нужен для вычисления синтетического вектора инициализации, второй — для шифрования. По сравнению с однопроходными режимами AEAD, такими как AES-GCM, вычислительные затраты примерно удваиваются. В приложениях, чувствительных к задержке или требующих высокой пропускной способности, эти затраты необходимо учитывать.
Когда следует предпочесть SIV вместо GCM
SIV следует предпочесть, если генерация одноразовых чисел ненадёжна, приложение не сохраняет состояние и не может поддерживать счётчик одноразовых чисел либо требуется детерминированное шифрование. Например, это подходит для шифрования полей базы данных, когда одно и то же значение должно всегда порождать один и тот же шифротекст для целей индексирования.
Сервисы без состояния и детерминированное шифрование
Микросервисы без состояния, которые не могут согласовывать состояние одноразовых чисел между репликами, особенно хорошо подходят для режима SIV. Вместо риска случайно повторно использовать одноразовое число из-за общего счётчика SIV автоматически обеспечивает безопасность. Упаковка ключей (RFC 3394) также использует принципы SIV для детерминированного шифрования ключей.
SIV на практике
AES-SIV доступен в основных криптографических библиотеках, включая libsodium (в последних версиях — как crypto_aead_aes256gcm_siv) и Google Tink. AES-GCM-SIV поддерживается в BoringSSL и стандартной библиотеке Go. Если управление одноразовыми числами затруднено, эти режимы безопаснее стандартного AES-GCM.
Проверка повторного использования одноразового числа в SIV
Что произойдёт, если один и тот же ключ использовать для двукратного шифрования одного и того же открытого текста с помощью AES-SIV?
Итоги урока: SIV для безопасности одноразовых чисел
Режим SIV устраняет катастрофические последствия повторного использования одноразовых чисел, выводя вектор инициализации из самого открытого текста. Повторное использование одноразового числа раскрывает лишь факт отправки одинаковых сообщений, но не их содержимое. AES-GCM-SIV (RFC 8452) обеспечивает эффективную устойчивость к неправильному использованию одноразовых чисел в современных приложениях, которым требуется шифрование без состояния или детерминированное шифрование.
Изучай Cryptology Academy с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 67
- Уроки
- 261
Часто задаваемые вопросы
Урок «Режим SIV: AEAD с защитой от ошибок использования nonce» бесплатный?
Да — полный текст урока «Режим SIV: AEAD с защитой от ошибок использования nonce» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Режим SIV: AEAD с защитой от ошибок использования nonce»?
Изучите режим Synthetic IV (SIV) и способы защиты от катастрофических последствий повторного использования nonce Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Режим SIV: AEAD с защитой от ошибок использования nonce»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Почему шифрование с последующим MAC лучше обратного порядка
- Режим SIV: AEAD с защитой от ошибок использования nonce
- AEGIS: высокоскоростное аутентифицированное шифрование
- Выбор AEAD для промышленных систем