Для шифрования AES CBC, какова важность IV? - PullRequest
10 голосов
/ 15 апреля 2010

Какая угроза безопасности всегда использовать все нули для IV? Если он позволяет расшифровать зашифрованный текст, как злоумышленник может это сделать?

ОБНОВЛЕНИЕ: Итак, если бы первый блок незашифрованных данных имел метку времени, которая никогда не повторялась, будет ли ИВ по-прежнему необходим?

Ответы [ 4 ]

10 голосов
/ 15 апреля 2010

Как только злоумышленник получит одно сообщение в виде открытого текста и соответствующий зашифрованный текст (возможно, он перехватил его где-то еще, например, в месте назначения), он сможет узнать, когда отправляются любые другие сообщения с той же последовательностью запуска. Поскольку она может что-то узнать о содержимом ваших зашифрованных сообщений, это небезопасно.

Также позволяет злоумышленнику выполнять частотный анализ. Например, представьте, что ваши текстовые сообщения являются командами бэкэнда платформы фондового рынка, поэтому все они начинаются с "COMMAND=BUY" или "COMMAND=SELL". Это означает, что зашифрованные сообщения начинаются только с двух разных последовательностей зашифрованного текста. Злоумышленник не может непосредственно расшифровать их - но если он сможет позже наблюдать, сколько ордеров на продажу вы разместили, наблюдая рыночные данные, он сможет вернуться и выяснить, что есть, и с этого момента она ' Вы будете точно знать, какие заказы вы размещаете по мере их размещения.

Частотный анализ - это то, как простые шифры подстановки ломаются, и это не случайно - использование фиксированного IV означает, что начальная часть ваших сообщений фактически просто использует подстановку, блок за раз.

5 голосов
/ 15 апреля 2010

Цель CBC - рандомизировать входные блоки, потому что заданный входной блок всегда шифруется одинаково с заданным ключом (AES является детерминированным). Входной блок рандомизируется путем XORing его с предыдущим выходным блоком. Первый блок, не имеющий предыдущего блока, рандомизируется с помощью XOR с IV.

Таким образом, использование неслучайного IV означает, что вы не рандомизируете первый блок. Если вы никогда не используете один и тот же ключ дважды, то есть вы используете новый ключ всякий раз, когда шифруете новое сообщение, , тогда IV с нулевым значением не является проблемой. Проблемы с нерандомизированными входными блоками актуальны только тогда, когда есть два нерандомизированных входных блока, которые зашифрованы одним и тем же ключом. Если вы используете данный ключ для одного сообщения, то только один первый блок этого сообщения будет нерандомизированным, поэтому проблем нет. Но это большое «если». В частности, если вы можете сгенерировать новый ключ для каждого сообщения, то, вероятно, вы также можете сгенерировать новый IV для каждого сообщения. Для оправдания использования полностью нулевого IV с CBC потребовался бы довольно специфический сценарий.

3 голосов
/ 15 апреля 2010

Не легко, но оно предоставляет информацию о сообщениях, чего пытается избежать шифрование.

Допустим, вы используете тот же ключ и ноль IV. Кто-то, отслеживающий трафик, может заметить, что сообщения начинаются с одного и того же зашифрованного текста. Это дает им некоторую информацию. Путем рандомизации IV эта утечка информации исчезает. Более мощные атаки могут быть начаты, зная больше о структуре незашифрованных данных. Кроме того, если вы отправляете много сообщений таким способом, злоумышленник может медленно узнать больше информации об используемом ключе из-за уменьшения дисперсии (отличается только открытый текст, вместо открытого текста и IV

1 голос
/ 15 апреля 2010

Если IV всегда равен нулю, все сообщения с общим текстом в начале (например, электронные письма с одинаковыми первыми двумя или тремя блоками шифрования для информации «От» или «От:») будут зашифрованы одинаково. Это дает атакующему рычаг над вашим ключом. Это безусловно плохо. Пока вы используете достаточно случайный IV, атакующий теряет этот рычаг. Не рискуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...