В чем смысл временной метки в OAuth, если Nonce может использоваться только один раз?

Сначала я неправильно интерпретировал реализацию OAuth с отметкой времени, полагая, что это означает отметка времени, которая не была в пределах 30 секунд от текущего времени, будет отклонена, оказалось, что это неправильно по нескольким причинам, включая тот факт, что мы не могли гарантировать, что все системные часы были достаточно синхронизированы с точностью до минут и секунд независимо от часовой пояс. Затем я прочитал его еще раз, чтобы прояснить:

«Если иное не указано поставщиком услуг, метка времени выражается в секундах, прошедших с 00:00:00 GMT 1 января 1970 года. Значение отметки времени ДОЛЖНО быть положительным целым числом и ДОЛЖНО быть равным или больше, чем временная метка, использованная в предыдущих запросах . "

источник: http://oauth.net/core/1.0/#nonce

Это означает, что временные метки сравниваются только относительно предыдущих запросов от тот же источник, а не в сравнении с системными часами моего сервера.

Затем я прочитал более подробное описание здесь: http://hueniverse.com/2008/10/beginners-guide-to-oauth-part- iii-security-architecture /

( TL; DR? - переходите к выделенным жирным шрифтом частям ниже)

Чтобы предотвратить повторное использование (воспроизведение) скомпрометированных запросов, OAuth использует одноразовый номер и временную метку. Термин nonce означает "использованное число Once ’и представляет собой уникальную и обычно случайную строку, предназначенную для однозначно идентифицируйте каждый подписанный запрос. Имея уникальный идентификатор для каждого запроса поставщик услуг может предотвратить запросы от использования более одного раза. Это означает, что Потребитель генерирует уникальная строка для каждого запроса, отправленного поставщику услуг, и Поставщик услуг отслеживает все одноразовые номера, используемые для их предотвращения от повторного использования. Поскольку значение nonce включено в подпись, злоумышленник не может изменить ее, не зная общий секрет.

Использование одноразовых номеров может быть очень дорогостоящим для провайдеров услуг, поскольку они требуют постоянное хранение всех полученных значений nonce. Делать реализации проще, OAuth добавляет значение отметки времени к каждому запросу что позволяет поставщику услуг сохранять только значения nonce для ограниченный срок. Когда приходит запрос с более старой меткой времени чем оставшийся срок, он отклоняется как Поставщик услуг больше не имеет одноразовых номеров за этот период времени. Можно с уверенностью предположить, что запрос, отправленный после разрешенного лимита времени, является атакой воспроизведения. OAuth предоставляет общий механизм для реализации меток времени, но оставляет фактическая реализация до каждого поставщика услуг (область, полагаю, следует пересмотреть спецификацию). Из ценной бумаги с точки зрения реального одноразового номера - это комбинация значений отметки времени и строка nonce. Только вместе они обеспечивают вечную уникальную ценность злоумышленник никогда не сможет использовать его снова.

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

может кто-нибудь прояснить это для меня? В чем смысл метки времени, если одноразовый номер используется один раз, и я не сравниваю метку времени с моими собственными системными часами (потому что это, очевидно, было бы ненадежным). Имеет смысл, что отметки времени будут относиться друг к другу, но с учетом требования уникального одноразового номера это кажется несущественным.

35
задан MetaGuru 28 July 2011 в 21:08
поделиться