Разумно предположить, что можно попытаться взломать nonce грубой силой. Отметка времени уменьшает вероятность того, что кто-то может добиться успеха.

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

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

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

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

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

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

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

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

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

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

Ответы на вопрос(4)

Ваш ответ на вопрос