Я хочу быть более эффективным в создании случайного ключа и случайного IV для шифрования. Но можно ли использовать случайный ключ как безопасный и безопасный?Можем ли мы использовать ключ как IV для AES?
ответ
Вы могли бы, но это было бы не безопасно.
Обычная практика заключается в использовании криптографически безопасной случайной последовательности байтов для iv и добавления iv к зашифрованным данным. Это позволяет функции дешифрации иметь одинаковый iv.
Используя случайный iv, если одно и то же сообщение зашифровано с помощью того же ключа, текст шифрования будет другим, usia ключ предоставит один и тот же шифрованный текст. Наличие одного и того же шифрованного текста может дать важную информацию.
Эффективность торговли для безопасности - это не очень хорошая идея, и если не доказано, что для повышения производительности необходима эталонная проверка, это преждевременная оптимизация.
Дональд Кнут:
Реальная проблема заключается в том, что программисты потратили слишком много времени, беспокоясь об эффективности в неправильных местах и в неподходящее время; преждевременная оптимизация - это корень всего зла (или, по крайней мере, большей части) в программировании.
Вы удваиваете свою проблему безопасности. Обычный IV может быть отправлен как есть с сообщением cyphertext, обычно добавленным к нему. Если ваш IV такой же, как ключ, тогда вы должны держать IV таким же безопасным, как ключ, а это значит, что вы не можете делать обычное добавление. Вам нужно будет добавить процесс обмена «IV» в ваш процесс «обмена ключами».
Все это дополнительная работа. Легче использовать стандартный CSPRNG для создания вашего IV и добавить его.
Правда, но он пропускает точку IV, что позволяет использовать один ключ для разных сообщений. С ключом = IV вам нужно перейти на новый ключ для каждого сообщения для обеспечения безопасности. IV полезен только для одного сообщения; ключ может использоваться для многих сообщений, если они не слишком велики. – rossum
Да, и это не сообщение ответа. Ответ заключается в том, чтобы сохранить что-то лишнее, когда на самом деле нет ничего лишнего. – zaph
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет не о программировании. Это также межсайтовый дубликат [Проблемы с использованием AES Key как IV в режиме CBC] (http://crypto.stackexchange.com/questions/16161/problems-with-using-aes-key-as-iv- в-CBC-режиме). –