Вектор инициализации
Вектор инициализации — несекретный вход режима шифрования, предотвращающий опасное повторение шифротекста для одинаковых данных.
Определение
Вектор инициализации задаёт начальное состояние режима шифрования. Благодаря ему одинаковый открытый текст под одним ключом может давать разный шифротекст, а закономерности не повторяются между сообщениями.
Требования зависят от режима
IV обычно передают вместе с шифротекстом и не скрывают. CBC требует свежий непредсказуемый IV, а режимам типа CTR прежде всего нужна уникальность счётчика или nonce. Неправильное правило генерации разрушает безопасность.
IV и nonce
Термины пересекаются, но не всегда взаимозаменяемы. Nonce подчёркивает отсутствие повторов, а IV — вход инициализации режима. API иногда называет IV поле, для которого важна уникальность, а не случайность.
Да, это нормально. Важно выполнить требование режима к уникальности или непредсказуемости, а не скрыть IV.
Обычно нет. В зависимости от режима это раскрывает совпадения, открытый текст или позволяет подделку.
IV генерируют по правилам режима независимо от ключа из пароля, если проверенный протокол не требует иного.