AES шифрование, как транспортировать IV - PullRequest
27 голосов
/ 10 января 2012

Я понимаю, что уникальный IV важен для шифрования, чтобы предотвратить атаки, такие как частотный анализ. Вопрос: Для шифрования AES CBC, какова важность IV? имеет довольно четкий ответ, объясняющий важность IV.

Будут ли какие-либо дыры в безопасности при отправке IV в виде открытого текста? Или его необходимо зашифровать тем же открытым / закрытым ключом, который использовался для отправки симметричного ключа?

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


Главный ответ на вопрос Секретный и несекретный вектор инициализации гласит:

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

Как два объекта получают «одну, казалось бы, случайную последовательность битов», не имея общей части информации? Является ли предположение, что общая информация была отправлена ​​в зашифрованном виде? И, если общая информация отправляется в зашифрованном виде, почему бы просто не отправить IV в зашифрованном виде?


Поскольку приложению необходимо безопасно транспортировать симметричный ключ, может показаться, что отделение IV от самого ключа по сути является оптимизацией. Или я что-то упустил?

Ответы [ 2 ]

30 голосов
/ 11 января 2012

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

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

Тем не менее, если вы используете схему соглашения о ключах, такую ​​как Диффи-Хеллман, которая в любом случае дает вам новый общий секрет для каждого сеанса, вы также можете использовать его для генерации первого вектора инициализации. На самом деле это не дает особых преимуществ в плане безопасности по сравнению с прямым выбором вектора инициализации и отправкой его вместе с сообщением, но сохраняет некоторые биты полосы пропускания и некоторые биты энтропии из вашего случайного источника. И это делает IV немного более случайным в случае, если один из партнеров имеет плохой источник случайности (хотя DH в этом случае тоже не совсем безопасен).

Как два объекта получают «одну, казалось бы, случайную последовательность битов», не имея общей части информации? Является ли предположение, что общая информация была отправлена ​​в зашифрованном виде? И, если общая информация отправляется в зашифрованном виде, почему бы просто не отправить IV в зашифрованном виде

Диффи-Хеллман основан на теоретико-групповой задаче: Ева знает (циклическую) группу 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).

29 голосов
/ 10 января 2012

Нет дыры в безопасности, посылая IV в открытом тексте - это похоже на хранение соли для хеша в открытом тексте: пока злоумышленник не имеет контроля над IV / солью, и пока он случайный,нет проблем.

...