Бөлісу құралы:


Надежные часы PlayReady

Доверенные часы PlayReady — это общий термин для часов, которые используются для применения ограничений на основе времени, установленных для защищенного содержимого PlayReady на клиентах PlayReady. Любой клиент, реализующий доверенные часы, обеспечивает невозможность изменения клиента, который ограничивает воспроизведение до начальной даты и времени, даты и времени истечения срока действия или даты и времени после первого воспроизведения, с использованием средств взлома, что соответствует уровню, указанному в правилах надежности для продуктов PlayReady.

Корпорация Майкрософт не требует, чтобы разработчики клиентов использовали доверенные часы. Однако клиентам без надежного таймера не разрешено управлять лицензиями, связанными с временными политиками, включая истекшие сроки. Так как этот сценарий очень распространен в отрасли (например, аренда или подписка), корпорация Майкрософт рекомендует реализовать доверенные часы PlayReady в каждом клиенте.

Разработчики клиентов могут выбрать один из двух типов надежных часов PlayReady в своем дизайне. Обе позволяют управлять лицензиями с помощью временных политик.

  • PlayReady Secure Clock
  • PlayReady Anti-rollback Clock

PlayReady Защищённые Часы

PlayReady Secure Clock — это "аппаратные часы в режиме реального времени, предназначенные для защиты от несанкционированного доступа на уровне, определенном в правилах надежности", как определено в документе определенных условий для правил соответствия и надежности для продуктов PlayReady.

В соответствии с требованиями правил соответствия для продуктов PlayReady, служба PlayReady Secure Clock должна использовать службу безопасных часов , чтобы задать его значение. Корпорация Майкрософт использует некоторые службы PlayReady Secure Clock Services , которые производители устройств могут использовать для этой цели.

PlayReady Secure Clock

Время сервера лицензий

Начиная с PlayReady 4.5, Служба безопасного времени может быть сервером приобретения лицензий, где PlayReady Server SDK предоставляет время по мере получения лицензии.

Чтобы использовать эту функцию, необходимо выполнить следующие требования:

  • Сервер и клиент (включая TEE и REE) должны использовать PlayReady 4.5 или более поздней версии.
  • Сервер и клиентские приложения должны учитывать эту функцию.
  • Клиент (в TEE и REE) должен включать функцию безопасного времени во время сборки и реализовывать связанные OEM_TEE методы, как описано в комментариях кода в комплекте портов устройств PlayReady.
  • Клиентское приложение должно либо взаимодействовать только с серверами приобретения лицензий, которые поддерживают и активируют эту возможность, либо также иметь возможность взаимодействовать с внешней службой безопасных часов.
  • Сервер должен иметь сертификат времени сервера лицензирования, предоставленный корпорацией Майкрософт.
  • Если для масштабируемости используются несколько экземпляров сервера приобретения лицензий, их системное время операционной системы должно быть синхронизировано друг с другом.
  • Если постоянные лицензии с ограничениями на основе времени были получены до включения функции (например, клиент обновляется с предыдущей версии PlayReady до PlayReady 4.5), клиент и сервер должны включить повторное определение этих лицензий после использования функции.

Сервер включает эту функцию следующим образом:

  • Создайте экземпляр класса LicenseServerTimeCertificate с сертификатом времени сервера лицензий, предоставленным корпорацией Майкрософт и соответствующей парой ключей.
  • Задайте свойству LicenseServerTimeCertificate класса LicenseResponse значение этого экземпляра. Примечание: Установка этого свойства не влияет, если клиент не поддерживает эту функцию. Поэтому нет необходимости разделять код приложения в зависимости от поддержки клиентом данной функции.
  • (Необязательно) Если свойство LicenseAcquisitionChallenge класса LicenseServerTimeRequested только для чтения возвращает значение true, ответ лицензии может не включать лицензии.
  • (Необязательно) Если свойство LicenseRequested класса PlayReadyHeader возвращает значение false, это означает, что клиент указал, что лицензии не запрашиваются, и логика серверного приложения может принять решение о действиях на основе этой информации. (Это означает, что заголовок PlayReady версии 4.3.0.0, отправляемый клиентом, имеет дополнительный дополнительный атрибут LICENSEREQUESTED на узле PROTECTINFO с значением false.)

Клиент включает эту функцию следующим образом:

  • Включите (как в TEE, так и REE) функцию безопасного времени во время компиляции и связывания и реализуйте связанные OEM_TEE методы, как описано в комментариях кода в комплекте портов PlayReady.
  • Когда любой API PlayReady возвращает DRM_E_SECURETIME_CLOCK_NOT_SET, выполните приобретение лицензии, чтобы задать безопасные часы.
  • Когда любой API PlayReady возвращает DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE, выполните процесс получения лицензии, чтобы заново получить устойчивую лицензию, которая была аннулирована. Это происходит только в том случае, если постоянные лицензии с ограничениями на основе времени были получены до включения функции (например, клиент был обновлен с предыдущей версии PlayReady до PlayReady 4.5).
  • (Необязательно) При приобретении лицензии исключительно для настройки безопасных часов приложение может использовать заголовок PlayReady версии 4.3.0.0 с дополнительным необязательным атрибутом LICENSEREQUESTED на узле PROTECTINFO значение false, чтобы указать, что лицензия не требуется. Для получения дополнительной информации обратитесь к спецификации PlayReady Header.

PlayReady Anti-rollback Clock

Функция PlayReady Anti-rollback Clock — это "часы в режиме реального времени, которые периодически проверяются конечным продуктом PlayReady", как определено в документе определенных условий для правил соответствия и надежности для продуктов PlayReady.

В соответствии с требованиями правил соответствия для продуктов PlayReady, функция PlayReady Anti-rollback Clock может использовать любой источник времени для задания его значения. Доверие к часам обеспечивается антиоткатным механизмом, встроенным в PK. Использование службы PlayReady Secure Clock для задания его значения также разрешено. Корпорация Майкрософт использует некоторые службы PlayReady Secure Clock Services , которые производители устройств могут использовать для этой цели.

PlayReady Anti-rollback Clock