одноразовое использование в аутентификации - PullRequest
12 голосов
/ 19 февраля 2011

В дайджест-аутентификации одноразовый номер генерируется сервером. Однако в аутентификации на основе OAuth одноразовый номер генерируется клиентом. Я хочу знать, если кто-нибудь знает причину разницы?

Ответы [ 2 ]

29 голосов
/ 19 февраля 2011

Одноразовые номера используются, чтобы сделать запрос уникальным.В схеме аутентификации без одноразового номера злонамеренный клиент может сгенерировать запрос ОДИН РАЗ и воспроизвести его МНОГИЕ раз, даже если вычисления являются дорогостоящими.Если схема аутентификации требует, чтобы клиент выполнял дорогостоящие вычисления для каждого отдельного запроса, поскольку запрос делается уникальным с помощью одноразового номера, атака воспроизведения свернута, поскольку ее скорость только что изменилась с O (1) до O (N).

Причиной использования одноразового номера клиента является предотвращение повторных атак со стороны вредоносных клиентов.
Причиной использования одноразового номера сервера является предотвращение атак типа «человек посередине» в случае захвата злоумышленником.действительный ответ сервера и пытается воспроизвести его для клиента.

http://en.wikipedia.org/wiki/Cryptographic_nonce содержит хорошее объяснение и схему использования одноразового номера.

http://en.wikipedia.org/wiki/Digest_access_authentication есть хороший пример того, как одноразовые выражения используются в реальном мире.

1 голос
/ 19 февраля 2011

Во-первых, иногда клиенты предоставляют одноразовый номер в дайджест-аутентификации, но в основном это зависит от сервера (см. RFC2617)

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

Или обратное. У меня уже есть токен, так почему я должен связаться с сервером, чтобы получить одноразовый номер, чтобы я мог снова связаться с сервером с моим запросом на обслуживание? Я мог бы сделать 1000 запросов на обслуживание, создавая свои собственные одноразовые номера, он сокращает 2000 бит сетевого трафика, который был ненужным.

...