Криптографічний нонс
Нонс (англ. nonce) — довільне число використовуване під час криптографічного зв'язку лише один раз. Нонс часто випадкове або псевдовипадкове число утворене протоколом автентифікації, для гарантування унеможливлення використання старих сеансів зв'язку в атаці повторного відтворення. Наприклад, нонс використовує дайджест автентифікація HTTP для обчислення MD5 гешу/дайджесту пароля. З кожною відповіддю 401 сервер породжує новий нонс і відсилає його як частину відповіді клієнту, той у свою чергу може відправити серверу його відповідь, включно з нонсом, і також свої ім'я і пароль. Такий підхід практично унеможливлює атаки відтворенням.
Нонс можна використати для гарантування безпеки потокових шифрів. Якщо один і той самий ключ використовують для шифрування більш як одного повідомлення, тоді використовують нонс для забезпечення того, що потік ключа буде відмінним для всіх повідомлень зашифрованих за допомогою цього ключа. Часто використовуються номер повідомлення. Наприклад, нонс використовується при утворенні потокового шифру з блочного в режимі CTR, завдяки чому вдається отримати можливість розпаралелювання.
Дехто посилається на ініціалізаційний вектор як на нонс через попередньо наведені причини. Для гарантування одноразовості використання, можна включати в нонс підхожим чином оформлений timestamp або використовувати достатньо бітів для забезпечення досить малої ймовірності повторення. Деякі автори визначають псевдовипадковість (або непередбачуваність) як вимогу до нонсу.[1]
Див. також
Посилання
- Sam Ruby Blogging on Nonce with an implementation
- RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication
- RFC 3540 - Robust Explicit Congestion Notification (ECN) Signaling with Nonces
- RFC 4418 - UMAC: Message Authentication Code using Universal Hashing