Nonce

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Типичный обмен между клиентом и сервером при аутентификации, использующей nonce сервера и cnonce клиента.

Однократно используемое число (от англ. nonce — оказия) в криптографии — одноразовый код, выбранный случайным или псевдослучайным образом, который используется для безопасной передачи основного пароля, предотвращая атаку повторного воспроизведения. В отличие от случайных чисел, здесь не требуется непредсказуемости числа, достаточно неповторяемости.

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

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

Чтобы обеспечить уникальность nonce для сеанса аутентификации, nonce часто генерируется на основе системного времени, из достаточно точного источника timestamp.