Можем ли мы использовать ключ в качестве IV для AES?

Я хочу быть более эффективным в генерации случайного ключа и случайного IV для шифрования. Но реально ли и безопасно ли использовать случайный ключ в качестве IV?

2 ответа

Решение

Вы могли бы, но это не было бы безопасно.

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

При использовании случайного iv, если одно и то же сообщение зашифровано одним и тем же ключом, текст шифра будет другим, при условии, что ключ разрешит один и тот же текст шифра. Наличие одного и того же зашифрованного текста может дать важную информацию.

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

Дональд Кнут:

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

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

Все это дополнительная работа. Проще использовать стандартный CSPRNG для создания вашего IV и добавления его.

Другие вопросы по тегам