Nonce

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

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

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

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

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

См. также править

Источники править