Итак, прав ли этот человек, делает ли использование ключа для шифрования только один раз безопасным использование предсказуемого IV?
Да, он прав.
Эта атака работает, когда злоумышленник получает зашифрованный текст в режиме CBC и хочет проверить содержимое открытого текста определенного блока открытого текста. Для этого он вычисляет, что ввод для блочного шифра был бы правильным, если бы это предположение было верным (и соответствующий вывод), и на основе этого создает открытое текстовое сообщение, которое с предсказуемым IV отправляет этот ввод в блочный шифр. . Затем он просит, чтобы это открытое текстовое сообщение было зашифровано тем же ключом. Если соответствующее зашифрованное сообщение имеет ожидаемый выходной блок, то он знает, что его предположение было правильным.
Если мы зашифруем только одно сообщение, то он не сможет провести эту атаку — он сможет узнать исходный шифротекст, но тогда он не сможет запросить шифрование второго сообщения тем же ключом.
Теперь это справедливо, если шифровальщик берет весь открытый текст и шифрует его полностью, и этот полный зашифрованный текст отправляется получателю (и противнику). Если вы запускаете режим CBC постепенно, например, вы берете первую часть открытого текста, шифруете ее, отправляете, а затем берете вторую часть открытого текста, а затем шифруете ее, то это небезопасно — если злоумышленник может прослушать первую часть зашифрованного текста, а затем (на основе этого) изменить вторую часть открытого текста, он может реализовать атаку «предсказуемый IV» - даже если это может не выглядеть так, как будто вы отправляете второй IV, из-за как работает режим CBC, вы фактически.
Кроме того, в этом случае злоумышленник не может контролировать весь зашифрованный простой текст, а только его небольшую часть.
Не имеет значения — это по-прежнему безопасно, даже если злоумышленник имеет произвольный контроль. Например, если злоумышленник может указать все сообщение целиком, кроме одного бита, он все равно не сможет узнать, что это за бит.