Nonce

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

Однократно используемое число (от англ. nonce — «number that can only be used once» — число, которое может быть использовано один раз) в криптографии — одноразовый код, выбранный случайным или псевдослучайным образом, который используется для безопасной передачи основного пароля, предотвращая атаку повторного воспроизведения. В отличие от случайных чисел, здесь не требуется непредсказуемости числа, достаточно неповторяемости.

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

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

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

См. также

Источники