Ответ 1
Нет дыры в безопасности, отправляя IV в открытом виде - это похоже на сохранение соли для хеша в открытом тексте: до тех пор, пока атакующий не имеет контроля над IV/солью, и до тех пор, пока он является случайным, нет проблем.
Я понимаю, что уникальный IV важен для шифрования, чтобы предотвратить атаки, такие как частотный анализ. Вопрос: Для шифрования AES CBC, в чем важность IV? имеет довольно четкий ответ, объясняющий важность IV.
Будут ли какие-либо дыры в безопасности при отправке IV в ясный текст? Или он должен быть зашифрован с помощью того же открытого/закрытого ключа, который использовался для отправки симметричного ключа?
Если IV необходимо отправить зашифрованным, то почему бы не генерировать новый симметричный ключ каждый раз и рассматривать IV как часть ключа? Это значит, что генерация симметричного ключа слишком дорогостоящая? Или это позволяет свести к минимуму количество транспортируемых данных?
Верхний ответ Секретный и несекретный вектор инициализации гласит:
Типичный протокол установления ключа приведет к тому, что обе стороны соберут часть данных, которую они, но только они, оба знают. С Diffie-Hellman (или любым вариантом этой эллиптической кривой) упомянутая общая часть данных имеет фиксированную длину и не имеет никакого контроля над ее значением (они просто получают одну и ту же, казалось бы, случайную последовательность бит).
Как два объекта получают "такую же, казалось бы, случайную последовательность бит", не имея общей информации? Предполагается ли, что общая информация была отправлена зашифрованной? И, если общая информация отправляется зашифрованной, почему бы просто не отправить зашифрованный IV?
Поскольку приложение должно безопасно переносить симметричный ключ, казалось бы, разделение IV с самим ключом по существу является оптимизацией. Или я что-то упускаю?
Нет дыры в безопасности, отправляя IV в открытом виде - это похоже на сохранение соли для хеша в открытом тексте: до тех пор, пока атакующий не имеет контроля над IV/солью, и до тех пор, пока он является случайным, нет проблем.
Основное отличие между вектором инициализации и ключом состоит в том, что ключ должен храниться в секрете, в то время как IV не должен быть - он может быть доступен для чтения злоумышленнику без какой-либо опасности для безопасности рассматриваемой схемы шифрования.
Идея состоит в том, что вы можете использовать один и тот же ключ для нескольких сообщений, используя только разные (случайные) векторы инициализации для каждого, поэтому отношения между обычными текстами не отображаются в соответствующих зашифрованных текстах.
Тем не менее, если вы используете схему ключевых соглашений, такую как Diffie-Hellman, которая дает вам новый общий секрет для каждого сеанса, вы также можете использовать его для генерации первого вектора инициализации. Это не дает особых преимуществ для обеспечения безопасности по сравнению с выбором вектора инициализации напрямую и отправкой его с помощью сообщения, но сохраняет некоторые биты полосы пропускания и некоторые биты энтропии из вашего случайного источника. И это делает IV более случайным, если у одного из партнеров есть источник плохой случайности (хотя в этом случае DH тоже не очень безопасен).
Как два объекта получают "такую же, казалось бы, случайную последовательность бит", не имея общей информации? Предполагается ли, что общая информация была отправлена зашифрованной? И, если общая информация отправляется зашифрованной, почему бы просто не отправить зашифрованный IV?
Diffie-Hellman основан на теоретико-групповой задаче: Ева знает (циклическую) группу G
с генератором G
и видит два значения g^a
(переданные от Алисы к Бобу) и g^b
(переданный от Боба к Алисе), где a
и b
- случайные большие целые числа, выбранные Алисой и Бобом, и неизвестные Еве и даже другому партнеру). Общий секрет - это (g^a)^b = g^(a·b) = (g^b)^a
. Очевидно, что Боб (который знает b
) может вычислить секрет как (g^a)^b
, в то время как Алиса (кто знает a
) может вычислить (g^b)^a
. Еве как-то нужно вывести этот секрет, чтобы взломать протокол.
В некоторых группах эта (известная как вычислительная проблема Диффи-Хеллмана) представляется трудной проблемой, и мы используем эти группы в криптографии. (В исходном DH мы используем подгруппу простого порядка мультипликативной группы некоторого большого конечного простого поля, в эллиптической кривой DH мы используем группу эллиптических кривых над конечным полем. Другие группы тоже работают.)
Затем оба Алиса и Боб используют функцию деривации ключа для получения фактического материала манипуляции (то есть ключей шифрования для обоих направлений, MAC-ключей и стартовых IV).