В криптографии одноразовый номер — это произвольное число, которое может быть использовано только один раз в криптографической коммуникации. [1] Часто это случайное или псевдослучайное число, выдаваемое в протоколе аутентификации для обеспечения уникальности каждого сеанса коммуникации, и, следовательно, невозможности повторного использования старых коммуникаций в атаках с повторным воспроизведением . Номера одноразового номера также могут быть полезны в качестве векторов инициализации и в криптографических хэш-функциях .
Nonce — это произвольное число, используемое только один раз в криптографической коммуникации, в духе nonce-слова . Они часто являются случайными или псевдослучайными числами. Многие nonce также включают временную метку для обеспечения точной своевременности, хотя это требует синхронизации часов между организациями. Добавление клиентского nonce (« cnonce ») помогает улучшить безопасность в некоторых отношениях, как это реализовано в аутентификации доступа к дайджесту . Чтобы гарантировать, что nonce используется только один раз, он должен быть изменчивым во времени (включая достаточно мелкозернистую временную метку в своем значении) или генерироваться с достаточным количеством случайных битов, чтобы гарантировать незначительно низкую вероятность повторения ранее сгенерированного значения. Некоторые авторы определяют псевдослучайность (или непредсказуемость) как требование для nonce. [2]
Nonce — слово, восходящее к среднеанглийскому языку и обозначающее что-то, используемое только один раз или временно (часто с конструкцией «for the nonce»). Оно происходит от конструкции «then anes» («the one [purpose]»). [3] Ложная этимология, утверждающая, что оно означает «число, используемое один раз», неверна. [4] В Британии этот термин можно избегать, поскольку «nonce» в современном британском английском означает педофила. [3] [5]
Протоколы аутентификации могут использовать одноразовые числа, чтобы гарантировать, что старые сообщения не могут быть повторно использованы в атаках с повторным воспроизведением . Например, одноразовые числа используются в аутентификации HTTP- дайджеста для вычисления MD5- дайджеста пароля . Одноразовые числа различны каждый раз, когда представляется код ответа на вызов аутентификации 401, что делает атаки с повторным воспроизведением практически невозможными. Сценарий заказа продуктов через Интернет может служить примером полезности одноразовых чисел в атаках с повторным воспроизведением. Злоумышленник может взять зашифрованную информацию и — без необходимости расшифровывать — продолжить отправлять поставщику определенный заказ, тем самым заказывая продукты снова и снова под тем же именем и информацией о покупке. Одноразовый номер используется для придания «оригинальности» данному сообщению, так что если компания получит какие-либо другие заказы от того же человека с тем же одноразовым номером, она отклонит их как недействительные заказы.
Для обеспечения безопасности потокового шифра можно использовать одноразовый код . Когда один и тот же ключ используется для нескольких сообщений, а затем используется другой одноразовый код, чтобы гарантировать, что поток ключей отличается для разных сообщений, зашифрованных этим ключом; часто используется номер сообщения.
Секретные значения nonce используются схемой подписи Лампорта в качестве секрета стороны подписчика, который может выборочно раскрываться для сравнения с публичными хэшами для создания и проверки подписи.
Векторы инициализации можно называть одноразовыми числами, поскольку они обычно являются случайными или псевдослучайными.
Нонсы используются в системах доказательства работы для изменения ввода в криптографическую хэш-функцию , чтобы получить хэш для определенного ввода, который удовлетворяет определенным произвольным условиям. При этом становится гораздо сложнее создать «желаемый» хэш, чем проверить его, перекладывая бремя работы на одну сторону транзакции или системы. Например, доказательство работы с использованием хэш-функций рассматривалось как средство борьбы со спамом в электронной почте , заставляя отправителей электронной почты находить значение хэша для электронной почты (которое включало временную метку для предотвращения предварительного вычисления полезных хэшей для последующего использования), которое имело произвольное количество начальных нулей, путем хэширования того же ввода с большим количеством значений до тех пор, пока не будет получен «желаемый» хэш.
Аналогично, алгоритм хеширования блокчейна Bitcoin может быть настроен на произвольную сложность путем изменения требуемого минимального/максимального значения хеша, так что количество биткойнов, присуждаемых за новые блоки, не увеличивается линейно с ростом вычислительной мощности сети по мере присоединения новых пользователей. Это также достигается путем принуждения майнеров Bitcoin добавлять значения nonce к хешируемому значению для изменения выходных данных алгоритма хеширования. Поскольку криптографические алгоритмы хеширования не могут быть легко предсказаны на основе их входных данных, это делает процесс хеширования блокчейна и возможность получения биткойнов чем-то вроде лотереи, где первый «майнер», который найдет nonce, который обеспечивает желаемый хеш, получает биткойны.
Среднеанглийский: от then anes 'один (цель)' (от then, устаревшая косвенная форма the + ane 'один' + -s), измененная неправильным делением