Рейтинг:2

AES CBC: когда использовать новый IV

флаг cn

Я пытаюсь выяснить, когда использовать новый IV для связи AES-CBC и безопасен ли мой подход.

Вот цитировать от Томаса Порнина из аналогичного вопроса:

Итак, подводя итог: вы должны выбрать новый, случайный IV (с криптографически стойкий генератор) всякий раз, когда вы собираетесь шифровать открытые текстовые данные, которые были получены после отправки по сети предыдущий зашифрованный блок.

Мне нужно разъяснение по этому поводу. Моя текущая установка - это два устройства, которые взаимодействуют друг с другом, используя схему команда/ответ (главное и подчиненное). Ведомый имеет настоящий генератор случайных чисел.

Моя идея состоит в том, что мастер запрашивает IV у ведомого, который затем использует для шифрования команды. Подчиненное устройство расшифровывает команду, а затем использует последний зашифрованный текст команды в качестве IV для ее шифрования, в основном рассматривая команду и ответ как непрерывный поток. После передачи ответа ведомое устройство создает новый IV, который затем снова может быть запрошен ведущим.

Это безопасно? Спасибо!

флаг cn
Поскольку вы, похоже, не установили безопасный канал между ведущим и ведомым, запрос IV от ведомого по незащищенному каналу означает, что злоумышленник может манипулировать (-> выбрать) IV. Это хуже, чем любой псевдослучайный генератор, который вы могли бы использовать локально.
earthling avatar
флаг cn
Вы имеете в виду использование аутентификации, такой как HMAC? Я пренебрег этим для этого примера, считайте, что он присутствует.
kelalaka avatar
флаг in
Опасность.... [Почему CBC с предсказуемым IV считается небезопасным против атаки с выбранным открытым текстом?] (https://crypto.stackexchange.com/q/3883/18298)
earthling avatar
флаг cn
Если запрошенный IV передается с аутентификацией, например. HMAC, противник не может заставить повторно использовать IV, верно?
foreverska avatar
флаг cn
Лучшее, что я могу интерпретировать, это то, что вы имеете в виду, что ведомое устройство должно отправлять IV под HMAC, а ведущее устройство не продолжает работу, если HMAC выходит из строя. Если атакующий (притворяющийся ведомым) просто воспроизводит одно и то же сообщение HMAC снова и снова, это приведет к прохождению этой проверки и принудительному повторному использованию IV. Если только мастер не выдал вызов, который нужно было включить в IV. Таким образом, у вас есть механизм ответа на вызов для вашего механизма ответа на вызов в качестве пластыря для плохо используемого шифрования. Лучше всего использовать шифрование, как предписано (с полностью случайным IV), и включить вызов в виде открытого текста.
Рейтинг:3
флаг cn

Вероятно, неразумно позволять другому участнику выбирать ваш IV. Если ничего другого, злоумышленник может заставить IV повторно использовать.

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

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

Рейтинг:2
флаг fr

Если у вас нет безопасного канала, вы не можете доверять IV, который отправляет вам другая сторона, потому что злоумышленник вполне может подделать его. Даже если у вас есть безопасный канал, другая сторона может не считаться особенно надежной.

Если на вашем главном устройстве есть какой-то CSPRNG, независимо от того, питается ли он генератором случайных чисел или нет, вы можете его использовать. В противном случае, если у вас может быть какой-то постоянный счетчик, одним из простых способов справиться с этим является использование функции вывода ключа, такой как HKDF. Просто используйте свой общий ключ в качестве ввода энтропии в функции вывода ключа, используйте счетчик в качестве соли, а затем сгенерируйте обе новый ключ и IV для каждого сообщения. Отправьте счетчик вместо IV вместе с сообщением, и другая сторона сможет получить ваш ключ.

Это может работать, даже если у вас нет постоянного счетчика, если на ведущем устройстве есть доверенные часы. Вы можете использовать отметку времени плюс более эфемерный счетчик или любой другой тип данных, которые гарантированно не повторяются, и использовать это в HKDF. Затем вы просто отправляете это вместе с сообщением, и обе стороны могут согласовать секретный ключ и IV.

Как упоминалось навсегда, вы также можете использовать протокол двойного храповика, хотя он более сложный. Это также требует, чтобы обе стороны, по крайней мере изначально, имели CSPRNG, поскольку он вам понадобится для ключей Диффи-Хеллмана.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.