2012-03-18 4 views
2


У меня есть вопрос относительно того, как вектор инициализации работает над криптографией.
Инициализация вектора в криптографии

У меня есть немного знаний о создании IV и мой вопрос будет таким,
Я знаю о SecureRandom классе так, как только я создаю IV через это будет прекрасно шифровать данные, что я не понимаю, как вы можете получить тот же IV для процесса дешифрования? (Пожалуйста, объясните, что мне нужно знать об этом, чтобы создать алгоритм для назначения).

ответ

4

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

+0

Когда вы говорите, что это не должно быть предсказуемым, это означает, что способ генерации IV не должен быть предсказуемым? И это нормально просто добавить IV (как открытый текст), так как IV не секрет? – sYl3r

+1

Да, добавление IV в порядке, но не как открытый текст, а как зашифрованный текст. Если вы добавите IV в открытый текст перед шифрованием, вы отправите IV зашифрованный (который невозможно расшифровать, не зная, в первую очередь, IV). Высказывание IV не должно быть предсказуемым, примерно такое же, как и высказывание IV должно генерироваться случайным образом. Есть несколько атак, которые работают только в том случае, если злоумышленник знает IV заранее, чтобы иметь возможность выбирать конкретный открытый текст. Примером является атака с выбранным открытым текстом на CBC (которая была основой недавней атаки BEAST на SSL). –