Relojes de confianza de PlayReady

Un reloj de confianza de PlayReady es un término general para un reloj que se usa para aplicar limitaciones basadas en el tiempo establecidas en el contenido protegido de PlayReady en los clientes de PlayReady. Cualquier cliente que implemente un reloj de confianza garantiza que un cliente que restrinja la reproducción a una fecha y hora de inicio, una fecha y hora de expiración, o una fecha y hora de expiración después de la primera reproducción no se puede alterar mediante herramientas de piratería a un nivel definido en las Reglas de solidez para productos PlayReady.

Microsoft no requiere que los desarrolladores cliente usen un reloj de confianza. Sin embargo, los clientes sin un reloj de confianza no podrán administrar licencias con directivas basadas en tiempo, incluida la expiración. Dado que este escenario es muy común en el sector (como el alquiler o la suscripción), Microsoft recomienda implementar un reloj de confianza de PlayReady en cada cliente.

Los desarrolladores cliente pueden elegir entre dos tipos de relojes de confianza de PlayReady en su diseño. Ambos le permiten administrar licencias con directivas basadas en tiempo:

  • Reloj seguro de PlayReady
  • Reloj antirreversión de PlayReady

Reloj seguro de PlayReady

Un reloj seguro de PlayReady es "un reloj en tiempo real de hardware diseñado para resistir el acceso no autorizado en el nivel definido en las reglas de solidez", tal y como se define en el documento Términos definidos para las reglas de cumplimiento y solidez para productos PlayReady.

Según los requisitos de las reglas de cumplimiento para productos playReady, un reloj seguro de PlayReady debe usar un servicio de reloj seguro para establecer su valor. Microsoft opera algunos servicios de reloj seguro de PlayReady que los creadores de dispositivos pueden usar para este propósito.

PlayReady Secure Clock

Hora del servidor de licencias

A partir de PlayReady 4.5, el servicio de reloj seguro puede ser el propio servidor de adquisición de licencias donde el SDK de PlayReady Server proporciona el tiempo durante la adquisición de licencias.

Para usar esta funcionalidad, se deben cumplir los siguientes requisitos:

  • Tanto el servidor como el cliente (incluido TEE y REE) deben usar PlayReady 4.5 o superior.
  • Tanto el servidor como las aplicaciones cliente deben tener en cuenta la característica.
  • El cliente (en el TEE y REE) debe incluir la característica De tiempo seguro en tiempo de compilación e implementar los métodos de OEM_TEE asociados tal y como se documenta en los comentarios de código en el Kit de portabilidad de dispositivos PlayReady.
  • La aplicación cliente solo debe comunicarse con servidores de adquisición de licencias que admitan y habiliten esta característica O también debe ser capaz de comunicarse con un servicio de reloj seguro externo.
  • El servidor debe tener un certificado de hora del servidor de licencias proporcionado por Microsoft.
  • Si se usan varias instancias del servidor de adquisición de licencias con fines de escalabilidad, los tiempos del sistema operativo se deben sincronizar entre sí.
  • Si se adquirieron licencias persistentes con restricciones basadas en el tiempo antes de habilitar la característica (por ejemplo, el cliente se actualiza desde una versión anterior de PlayReady a PlayReady 4.5), el cliente y el servidor deben habilitar la reacquisición de esas licencias después de que la característica esté en uso.

Un servidor habilita esta funcionalidad de la siguiente manera:

  • Construya una instancia de la clase LicenseServerTimeCertificate con el certificado de hora del servidor de licencias proporcionado por Microsoft y su par de claves correspondiente.
  • Establezca la propiedad LicenseServerTimeCertificate de la clase LicenseResponse en esa instancia. Nota: Establecer esta propiedad no tiene ningún efecto si el cliente no admite la característica, por lo que no es necesario bifurcar el código de la aplicación en función de la compatibilidad con el cliente.
  • (Opcional) Si la propiedad LicenseAcquisitionChallenge de la clase LicenseServerTimeRequested devuelve true, la respuesta de licencia puede incluir opcionalmente ninguna licencia.
  • (Opcional) Si la propiedad LicenseRequested de la clase LicenseRequested de playReadyHeader devuelve false, el cliente ha indicado que no se solicitan licencias y la lógica de la aplicación de servidor puede optar por actuar sobre esta información. (Esto significa que el encabezado playReady v4.3.0.0 enviado desde el cliente tiene el atributo opcional adicional LICENSEREQUESTED en el nodo PROTECTINFO establecido en false).

Un cliente habilita esta funcionalidad de la siguiente manera:

  • Incluya (en el TEE y REE) la característica De tiempo seguro en tiempo de compilación o vínculo e implemente los métodos de OEM_TEE asociados tal y como se documenta en los comentarios de código en el Kit de portabilidad de PlayReady.
  • Cuando cualquier API de PlayReady devuelva DRM_E_SECURETIME_CLOCK_NOT_SET, realice la adquisición de licencias para establecer el reloj seguro.
  • Cuando cualquier API de PlayReady devuelve DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE, realice la adquisición de licencias para volver a adquirir una licencia persistente que se ha invalidado. Esto solo se producirá si se adquirieron licencias persistentes con restricciones basadas en el tiempo antes de habilitar la característica (por ejemplo, el cliente se actualizó desde una versión anterior de PlayReady a PlayReady 4.5).
  • (Opcional) Al realizar la adquisición de licencias exclusivamente con el fin de establecer el reloj seguro, la aplicación puede optar por usar un encabezado de PlayReady v4.3.0.0 con el atributo opcional adicional LICENSEREQUESTED en el nodo PROTECTINFO establecido en false para indicar que no se necesita ninguna licencia. Para obtener más información, consulte especificación de encabezado playReady.

Reloj antirreversión de PlayReady

Un reloj anti-reversión de PlayReady es "un reloj en tiempo real comprobado periódicamente por el producto final de PlayReady para tener avanzado", tal como se define en el documento Términos definidos para las reglas de cumplimiento y solidez para los productos PlayReady.

Según los requisitos de las reglas de cumplimiento para productos de PlayReady, un reloj anti-reversión de PlayReady puede usar cualquier origen de tiempo para establecer su valor. La confianza en el reloj la proporciona el mecanismo anti-reversión integrado en el PK. También se permite usar un servicio de reloj seguro playReady para establecer su valor. Microsoft opera algunos servicios de reloj seguro de PlayReady que los creadores de dispositivos pueden usar para este propósito.

PlayReady Anti-rollback Clock