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