Криптографический одноразовый номер - Cryptographic nonce

Типичное взаимодействие клиент-сервер во время процесса аутентификации на основе одноразового номера, включая одноразовый идентификатор сервера и одноразовый номер клиента.

В криптографии , A Nonce ( число раз ) произвольное число , которое может быть использовано только один раз в криптографической связи. Часто это случайное или псевдослучайное число, выдаваемое протоколом аутентификации, чтобы гарантировать, что старые коммуникации не могут быть повторно использованы в атаках воспроизведения . Они также могут быть полезны в качестве векторов инициализации и в криптографических хэш-функциях .

Определение

Одноразовый номер - это произвольное число, которое используется только один раз в криптографическом сообщении в духе одноразового слова . Часто это случайные или псевдослучайные числа. Многие одноразовые номера также включают метку времени для обеспечения точной своевременности, хотя для этого требуется синхронизация часов между организациями. Добавление клиентского одноразового номера (« cnonce ») в некоторых случаях помогает улучшить безопасность, как это реализовано в дайджест-аутентификации доступа . Чтобы гарантировать, что одноразовый номер используется только один раз, он должен быть зависящим от времени (включая подходящую точную метку времени в своем значении) или генерироваться с достаточным количеством случайных битов, чтобы гарантировать вероятностно незначительную вероятность повторения ранее сгенерированного значения. Некоторые авторы определяют псевдослучайность (или непредсказуемость) как требование для одноразового номера.

использование

Аутентификация

Протоколы аутентификации могут использовать одноразовые номера, чтобы гарантировать, что старые коммуникации не могут быть повторно использованы в атаках воспроизведения . Например, одноразовые номера используются в аутентификации доступа к дайджесту HTTP для вычисления дайджеста пароля MD5 . Одноразовые номера различаются каждый раз, когда представляется код ответа на запрос аутентификации 401 , что делает практически невозможными повторные атаки . Сценарий заказа продуктов через Интернет может служить примером полезности одноразовых номеров в атаках воспроизведения. Злоумышленник может взять зашифрованную информацию и - без необходимости расшифровывать - может продолжать отправлять конкретный заказ поставщику, тем самым заказывая продукты снова и снова под тем же именем и информацией о покупке. Одноразовый номер используется для придания «оригинальности» данному сообщению, так что, если компания получит какие-либо другие заказы от того же человека с таким же одноразовым номером, она отклонит их как недействительные заказы.

Одноразовый номер может использоваться для обеспечения безопасности потокового шифра . Если один и тот же ключ используется более чем для одного сообщения, а затем используется другой одноразовый номер, чтобы гарантировать, что поток ключей отличается для разных сообщений, зашифрованных этим ключом; часто используется номер сообщения.

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

Векторы инициализации

Векторы инициализации могут называться одноразовыми номерами, поскольку они обычно являются случайными или псевдослучайными.

Хеширование

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

Точно так же алгоритм хеширования цепочки блоков биткойнов может быть настроен на произвольную сложность путем изменения требуемого минимального / максимального значения хеш-функции, чтобы количество биткойнов, присуждаемых за новые блоки, не увеличивалось линейно с увеличением вычислительной мощности сети по мере присоединения новых пользователей. Это также достигается за счет принуждения майнеров биткойнов добавлять значения nonce к хешируемому значению, чтобы изменить вывод алгоритма хеширования. Поскольку алгоритмы криптографического хеширования нелегко предсказать на основе их входных данных, это делает процесс хеширования блокчейна и возможность присуждения биткойнов чем-то вроде лотереи, когда первый «майнер», который найдет одноразовый номер, который обеспечивает желаемый хэш, получает биткойны. .

Смотрите также

использованная литература

внешние ссылки

  • RFC  2617 - HTTP-аутентификация: базовая и дайджест-аутентификация доступа
  • RFC  3540 - передача сигналов надежного явного уведомления о перегрузке (ECN) с одноразовыми номерами
  • RFC  4418 - UMAC: код аутентификации сообщения с использованием универсального хеширования
  • Безопасность веб-сервисов