EMZETT.
Войти

Nonce и вектор инициализации (IV)

Коротко: Nonce («number used once») и вектор инициализации — дополнительные значения, благодаря которым одно и то же сообщение с одним и тем же ключом каждый раз шифруется по-разному.

Подробнее: Они не секретны, но их свойства решают всё: nonce не должен повторяться никогда, IV в зависимости от режима должен быть непредсказуемым (случайным).

Подробности

  • Зачем нужны: Без них одинаковые открытые тексты давали бы одинаковые шифртексты, и повторы были бы заметны.
  • Nonce: Часто счётчик или случайное значение. В CTR/GCM/ChaCha20 достаточно «единственности», случайность не нужна, но повтор губителен: два сообщения с одним ключом и одним nonce выдают XOR их открытых текстов, а в GCM может раскрыться ключ аутентификации.
  • IV в CBC: Должен быть случайным и непредсказуемым.
  • Передача вместе: Nonce/IV обычно дописывают перед шифртекстом и передают открыто.
  • Случайный nonce: При 96 битах и очень многих сообщениях грозит коллизия (парадокс дней рождения). Тогда лучше счётчики или смена ключа. См. случайные числа.
  • Вне шифрования: В протоколах входа и блокчейнах как одноразовое значение против повтора («replay»).

См. также: ChaCha20-Poly1305