Какова угроза нарушения безопасности всегда использования, все обнуляет для IV? Если это позволяет зашифрованному тексту быть дешифрованным, как взломщик мог сделать это?
ОБНОВЛЕНИЕ: Таким образом, если бы первый блок незашифрованных данных имел метку времени, которая никогда не повторялась, то IV все еще был бы необходим?
Как только злоумышленник получит одно сообщение с открытым текстом и соответствующий зашифрованный текст (возможно, он перехватил его где-то еще, например, в пункте назначения), он сможет узнать, когда будут отправлены любые другие сообщения с такой же начальной последовательностью. Поскольку она может узнать что-то о содержимом ваших зашифрованных сообщений, это небезопасно.
Это также позволяет злоумышленнику выполнять частотный анализ. Например, представьте, что ваши сообщения в виде открытого текста представляют собой команды для серверной части платформы фондового рынка, поэтому все они начинаются либо с «КОМАНДА = КУПИТЬ»
, либо «КОМАНДА = ПРОДАЖА»
. Это означает, что зашифрованные сообщения начинаются только с двух различных последовательностей зашифрованного текста. Злоумышленник не может напрямую их расшифровать, но если он сможет позже увидеть, сколько ордеров на ПРОДАЖУ вы разместили, наблюдая за рыночными данными, он сможет вернуться и решить, что есть что, и с этого момента она сможет. Буду точно знать, какие заказы вы размещаете, когда вы их размещаете.
Частотный анализ - это то, как ломаются простые шифры подстановки, и это не случайно - использование фиксированного IV означает, что начальная часть ваших сообщений фактически просто использует подстановку, блок за раз.
Если IV всегда равен нулю, все сообщения с общим текстом в начале (например, электронные письма с одинаковыми первыми двумя или тремя блоками шифра для 'From' или 'From: ') будут зашифрованы одинаково. Это дает злоумышленнику рычаг влияния на ваш ключ. Это безоговорочно плохо. Пока вы используете достаточно случайный IV, атакующий теряет этот рычаг. Не рискуйте.
Непросто, но он раскрывает информацию о сообщениях, чего пытается избежать шифрование.
Допустим, вы используете тот же ключ и нулевой IV. Кто-то, перехватывающий трафик, может заметить, что сообщения начинаются с одного и того же зашифрованного текста. Это дает им некоторую информацию. Путем рандомизации IV утечка информации устраняется. Более мощные атаки могут быть запущены, зная больше о структуре данных открытого текста. Кроме того, если вы отправляете много сообщений таким образом, злоумышленник может постепенно узнать больше информации об используемом ключе из-за уменьшения дисперсии (отличается только открытый текст, а не открытый текст и IV
{{ 1}}Смысл CBC - рандомизировать входные блоки, потому что данный входной блок всегда шифруется одинаково с заданным ключом (AES детерминирован). Входной блок рандомизируется с помощью операции XOR с предыдущим выходным блоком. Первый блок, не имеющий предыдущего блока, рандомизируется путем XOR с IV.
Таким образом, использование неслучайного IV означает, что вы не рандомизируете первый блок. Если вы никогда не используете один и тот же ключ дважды, т.е. вы используете новый ключ всякий раз, когда вы шифруете новое сообщение, тогда нулевой IV не является проблемой. Проблемы с нерандомизированными входными блоками актуальны только тогда, когда есть два нерандомизированных входных блока, которые зашифрованы одним и тем же ключом. Если вы используете заданный ключ для одного сообщения, то только один первый блок этого сообщения не будет рандомизирован, так что проблем нет. Но это большое «если». В частности, если вы можете сгенерировать новый ключ для каждого сообщения, вы, вероятно, также сможете сгенерировать новый IV для каждого сообщения. Потребуется вполне конкретный сценарий, чтобы оправдать использование нулевого IV с CBC.