Действительно ли SecureRandom необходим для генерации векторов инициализации или достаточно случайен?


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

Предполагая, что я использую сообщения фиксированного размера с режимом AES CBC и генерирую новый случайный для каждого IV (используя текущее нано-время в качестве затравки), увеличивает ли это вероятность повторения IV по сравнению с SecureRandom?

4 5

4 ответа:

Самая большая проблема с использованием Random для создания вашей IV заключается не в том, что она может повториться, а в том, что злоумышленник может предсказать будущие IV, и это может быть использовано для атаки CBC.

Связанные: https://crypto.stackexchange.com/q/3515/2805

Random использует 48-битный ключ, поэтому он будет повторяться приблизительно каждые 2^48 значений. Это означает, что не все возможные long будут сгенерированы. Это может быть или не быть достаточно случайным для вас. Если вы сомневаетесь в использовании SecureRandom, вы всегда можете изменить его позже.

Да, капельница должна быть полностью случайной. Если вы не используете полную случайность, вы, скорее всего, утечка информации о простом тексте. Не забывай, что случайность связана с обычным текстом. Таким образом, если IV имеет предсказуемую структуру, вы можете обнаружить повторяющиеся зашифрованные тексты и, таким образом, утечку информации таким же образом, как и ЕЦБ. Это будет еще более заметно, если злоумышленник сможет повлиять на зашифрованный простой текст.

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

Самые сильные генераторы случайных чисел в использовании генерируют только несколько десятков бит энтропии в секунду. Большинство алгоритмов рассматривают капельницу как вторичную по отношению к ключу. Таким образом, медленный и сильный ГСЧ должен быть зарезервирован для ключа и для посева быстрого, длительного периода ГСЧ для IV.