Можем ли мы использовать ключ в качестве IV для AES?
Я хочу быть более эффективным в генерации случайного ключа и случайного IV для шифрования. Но реально ли и безопасно ли использовать случайный ключ в качестве IV?
2 ответа
Вы могли бы, но это не было бы безопасно.
Обычная практика заключается в использовании криптографически безопасной случайной последовательности байтов для iv и добавлении iv к зашифрованным данным. Это позволяет функции дешифрования иметь тот же iv.
При использовании случайного iv, если одно и то же сообщение зашифровано одним и тем же ключом, текст шифра будет другим, при условии, что ключ разрешит один и тот же текст шифра. Наличие одного и того же зашифрованного текста может дать важную информацию.
Эффективность торговли для обеспечения безопасности не является хорошей идеей, и если не доказано, что при тестировании производительности требуется дополнительная эффективность, это преждевременная оптимизация.
Дональд Кнут:
Настоящая проблема заключается в том, что программисты слишком много времени уделяют заботам об эффективности в неправильных местах и в неподходящее время; преждевременная оптимизация - корень всего зла (или, по крайней мере, большей его части) в программировании.
Вы удваиваете свою проблему безопасности. Обычный IV может быть отправлен как есть с сообщением зашифрованного текста, обычно перед ним. Если ваш IV такой же, как ключ, то вы должны сохранять IV таким же безопасным, как и ключ, а это значит, что вы не можете выполнять обычные действия. Вам нужно будет добавить процесс "Обмен IV" в процесс "Обмен ключами".
Все это дополнительная работа. Проще использовать стандартный CSPRNG для создания вашего IV и добавления его.