Безопасность режима счетчика AES и режима CBC

Evgeni Vaknin 09/05/2017. 1 answers, 401 views
aes cbc ctr nonce

Для того, чтобы AES-CBC был защищен CPA, используемый IV должен быть случайным образом выбран для каждого пакета. Если IV предсказуем, чем шифрование не является безопасным CPA. То же самое верно для режима AES-CTR? то есть для режима AES-CTR первый счетчик должен быть случайным, или он может быть nonce? благодаря

1 Answers


Patrick K 07/31/2017.

Требование для входных блоков AES-CTR состоит в том, что они должны быть unique течение всего срока службы ключа. В большинстве случаев случайный 96-разрядный nonce используется с 32-разрядным счетчиком, который начинается с 0. Если один и тот же входной блок для AES-CTR происходит дважды, AES-CTR больше не защищен CPA. В этом случае это может быть связано с встречным переполнением после блоков $ 2 ^ {32} $ или из-за столкновений случайно выбранных 96-битных nonces (парадокс дня рождения: 50% -ый шанс после $ \ sqrt {2 ^ {96}} $ сообщений. Рассмотрим следующий случай:

Два отдельных сообщения с 1 блоком $ P $ и $ P '$ отправляются под одним и тем же ключом $ K $ (который может быть предварительно обсужден) и с тем же nonce $ N $. Злоумышленник знает, что связанные шифрованные тексты $ C $ и $ C '$, рассчитанные путем XORing их с помощью ключевого потока (который основан на nonce и счетчике):

$ C = P \ oplus E_K (N, 0) $

$ C '= P' \ oplus E_K (N, 0) $

Тогда злоумышленник может просто шифровать тексты

$ C \ oplus C '= P \ oplus E_K (N, 0) \ oplus P' \ oplus E_K (N, 0) = P \ oplus P '$

и он получает «расстояние» между двумя обычными текстами. Из-за избыточности на английском языке он может определить $ P $ и $ P '$.

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

5 comments
Evgeni Vaknin 07/31/2017
по утверждению «2 ^ 32 сообщения». Я думаю, вы имеете в виду 2 ^ 32 блока по 16 байт в AES? если это так, то чем 2 ^ 32 блокирует время 2 ^ 32 * 128 бит, что составляет 10 Гбит / с, около 1 минуты ... поэтому каждые 1 минуту должен быть выполнен алгоритм обмена ключами, чтобы создать новый ключ и не использовать ?
1 Patrick K 07/31/2017
Да, ты прав. Я отредактировал ответ. Если у вас статическое nonce, тогда вам нужно будет делать обмен ключами каждую минуту в этом случае. Но так как nonce обычно изменяется с каждым сообщением, вы ограничены сообщениями максимальной длины $ 2 ^ {32} \ cdot128 $ бит. Максимальное количество сообщений, которые могут быть отправлены под заданным ключом, ограничено парадоксальным днем ​​рождения. Если 96bit nonce выбирается равномерно случайным образом для каждого сообщения, вероятность столкновения nonce равна $ \ approx 0.5q ^ 2/2 ^ {96} $ для q сообщений. Если вы хотите, чтобы этот термин составлял не более 1%, ваш $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
Что произойдет, если я не буду использовать случайное значение nonce, вместо этого я использую случайное значение для начального значения nonce и увеличиваю его каждый пакет? Например, допустим, что каждый пакет содержит менее 256 блоков AES (по 128 бит каждый), а счетчик для AES-CTR состоит из nonce из 120 бит, который инициализируется случайным образом при обмене ключами, а не в пакете 8 бит счетчик используется для подсчета 128-битных блоков. И каждый новый пакет (продолжение в следующем комментарии)
Evgeni Vaknin 07/31/2017
Я увеличиваю значение nonce на 1 и очищаю счетчик 8 бит. В этом случае парадокс дня рождения не имеет отношения к делу, поскольку столкновение невозможно (предполагая, что я заменяю ключ до того, как 120-разрядный счетчик nonce истек)
1 Patrick K 08/01/2017
Да, если вы каким-то образом убедитесь, что никогда не используете одну и ту же пару (вход-блок, ключ) для генерации ключей, то все в порядке. (конечно, предполагая, что ключ хранится в секрете и выбирается равномерно из случайного)

Related questions

Hot questions

Language

Popular Tags