Волочаевская операция
- 1 year ago
- 0
- 0
AEAD-режимы блочного шифрования ( англ. Authenticated Encryption with Associated Data , «аутентифицированное шифрование с присоединёнными данными») — класс блочных режимов шифрования , при котором часть сообщения шифруется, часть остается открытой, и всё сообщение целиком аутентифицировано . Впервые идея такого класса шифрования была предложена Charanjit Jutla в 2000 году . В настоящее время предложено несколько AEAD-режимов шифрования: (с версии OCB2), , , , и GCM mode . Последний с 2007 года является стандартом NIST .
Существуют алгоритмы, позволяющие осуществить аутентификацию и шифрование — (далее AE), однако в них не предусмотрена возможность прикреплять открытый текст (associated data), которая возникает, в частности, при необходимости прикрепить к сообщению IP-адрес . Вообще, часто незашифрованные данные требуются для передачи заголовков, адресов, портов, версий протокола и других данных, необходимых для принятия решения о том, как должен обрабатываться или пересылаться зашифрованный текст. Часто эти данные должны быть аутентифицированы, в то же время оставаясь открытыми, чтобы устройства обработки могли оперировать с данными сообщениями должным образом. Возникает желание модифицировать AE-схему, добавив к ней имитовставку (MAC) для аутентификации открытых данных, и «задешево» получить AEAD-схему. Однако очевидные «наивные» решения, примеры которых рассмотрим ниже, оказываются неэффективными.
Пусть, например, нужно передать сообщение M , открытый заголовок H , выбран какой-либо AE-режим шифрования E и функция MAC. Тогда, если передавать E(M) и H , то H окажется не аутентифицированным. Если же передать E(M||H) и H , длина передаваемого сообщения окажется длиннее исходного (так как будет выполнена ненужная в данной задаче операция шифрования H ), то же можно сказать и для случая передачи H , E(M) , MAC(H||E(M)) (так как E(M) уже аутентифицированно и использование MAC требует расхода лишних ресурсов).
Важно, что и AE-схемы, и AEAD-схемы требуют использования nonce . Это необходимо для обеспечения семантической безопасности (невозможность злоумышленника при многократном использовании схемы под одним и тем же ключом получить отношения между сегментами зашифрованных сообщений), а также для защиты от атаки повторного воспроизведения , при которой злоумышленник под видом легального пользователя повторно отправляет сообщение. Генерация nonce и использование его только единожды ложится на ответственность отправителя. Для этого можно использовать, например, счетчик.
Существуют два принципиально разных пути реализации AEAD-режима шифрования. Первый предполагает использование блочного режима шифрования и имитовставки. В этом случаем разработчик AEAD-схемы может выбирать любой блочный алгоритм шифрования и функцию получения имитовставки, при этом так же необходимо использовать nonce . Второй способ — какое-либо преобразование AE-схемы. Требования к последнему методу остаются прежними: схема не должна значительно замедляться, также в ней не должно появляться новых уязвимостей . Безопасность и надежность данных подходов была доказана в статье Charanjit S. Jutla «Encryption Modes with Almost Free Message Integrity» при условии, что nonce не используется повторно и хеш-функция H является криптографически стойкой.
Получить AEAD-режим с помощью блочного шифра и имитовставки возможно двумя способами: сначала шифруя сообщение, затем аутентифицируя (encrypt-then-mac), или же в обратном порядке (mac-then-encrypt).
В данном варианте сначала шифруется сообщение M с использованием nonce N, затем заголовок H и зашифрованное сообщение аутентифицируются с помощью MAC с тем же nonce.
Аналогично предыдущему, но в обратном порядке: сначала создается имитовставка MAC от заголовка H, nonce N и открытого текста M, а затем шифруется сообщение M с полученной имитовставкой с использованием того же nonce N.
Как было показано выше, эффективно прикрепить аутентифицированный открытый текст к построенному с помощью AE-схемы сообщению примитивными способами невозможно. Однако было предложено два следующих метода.
Пусть имеется AE-схема, использующая nonce размером n бит, а приложению, использующему данную схему, достаточно использовать лишь n2 бит (n2 < n). Тогда свободные h = n − n2 бит могут быть использованы для хранения открытых данных. Данная схема имеет ограничение на размер открытых данных, однако часто этого достаточно. Пусть алгоритм имеет nonce размером 128 бит, а приложение использует лишь 16, тогда для открытых данных остается 112 бит, которых часто вполне достаточно (например, для адреса в протоколе IPv4 требуется 32 бита).
Данный метод приведения AE-схемы к AEAD-схеме основан на операции логического сложения (XOR) , при этом, если производится операция над строками разной длины, то более короткая дополняется не значимыми нулями, например: .
Данный метод включает в себя следующие операции: используется AE-схема для шифрования сообщения с ключом K и получения промежуточного шифртекста CT, далее применяется хеш-функция для получения сдвига Δ, и наконец, финальный шифртекст получается в результате применения операции логического сложения Δ к последним битам CT. Заметим, что если заголовок является пустой строкой, полученная AEAD-схема переходит в исходную AE-схему шифрования. Если заголовок остается неизменным в течение сессии, то сдвиг Δ может быть вычислен заранее, что положительно сказывается на времени шифрования — оставшаяся операция логического сложения легко реализуема (в том числе и аппаратно).
Определим получаемую AEAD-схему более строго следующим образом:
То есть, предполагая, что , вычисляем Δ длиной в τ бит, зашифровываем M и производим операцию логического сложения последних τ бит с Δ.
Данный метод имеет следующие преимущества:
Однако недостаток метода состоит в необходимости использования двух ключей K и K’.
Для примера опишем некоторые AEAD-алгоритмы. Два из них основаны на AES GCM, два из них — на AES CCM. Один из алгоритмов в каждой паре использует 128-битный ключ, другой — 256 битный.
Данный алгоритм использует AES-128 в качестве алгоритма блочного шифрования, используя ключ, nonce, сообщение и заголовок в качестве входных данных. Длина заголовка — 16 байт. Зашифрованный текст формируется добавлением аутентификационного тега к промежуточному зашифрованному тексту, полученному в качестве выходных данных GCM-шифрования. Требования к размерам входных и выходных данных следующие:
Таким образом, шифртекст на 16 байт длиннее исходного открытого сообщения.
Алгоритм полностью аналогичен предыдущему, за исключением использования ключа размером 32 байт и AES-256 GCM.
Аналогично предыдущему, за исключением использования CCM режима вместо GCM, при этом:
Как и при использовании GCM, размер шифртекста на 16 байт длиннее исходного сообщения.
Алгоритм полностью аналогичен предыдущему, за исключением использования ключа размером 32 байта и AES-256 GCM.