Compartir a través de


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 PlayReady Products.

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 alquiler o suscripción), Microsoft recomienda implementar un reloj de confianza de PlayReady en todos los clientes.

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 antireversió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 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.

Reloj seguro de PlayReady

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 del servidor PlayReady 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 (tanto en TEE como en REE) debe incluir la característica de Tiempo Seguro en tiempo de compilación e implementar los métodos OEM_TEE asociados, tal como se documenta en los comentarios de código del Kit de portabilidad de dispositivos PlayReady.
  • La aplicación cliente solo debe comunicarse con los servidores de adquisición de licencias que admiten y habilitan esta característica O también deben ser capaces de comunicarse con un servicio de reloj seguro externo.
  • El servidor debe tener un Certificado de Tiempo 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 deben sincronizarse entre sí.
  • Si se han adquirido licencias persistentes con restricciones basadas en el tiempo antes de habilitar la característica (por ejemplo, el cliente se actualiza de 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 de solo lectura LicenseServerTimeRequested de la clase LicenseAcquisitionChallenge devuelve true, la respuesta de licencia puede, opcionalmente, no incluir ninguna licencia.
  • (Opcional) Si la propiedad de solo lectura LicenseRequested de la clase PlayReadyHeader devuelve false, el cliente ha indicado que no se solicita ninguna licencia y que la lógica de la aplicación del servidor puede decidir actuar con base en 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 falso).

Un cliente habilita esta funcionalidad de la siguiente manera:

  • Incluya (en el TEE y REE) la característica Secure Time en tiempo de compilación/vínculo e implemente los métodos de OEM_TEE asociados, tal como se documenta en los comentarios de código del PlayReady Porting Kit.
  • Cuando cualquier API de PlayReady devuelve 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 haya 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 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 más información, consulte la Especificación del Encabezado de PlayReady.

Reloj antireversión de PlayReady

Un reloj antireversión de PlayReady es "un reloj en tiempo real que el producto final de PlayReady comprueba periódicamente si ha avanzado", tal como se define en el documento de términos definidos para las reglas de cumplimiento y solidez de 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 antireversión integrado en la 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.

Reloj anti-retroceso de PlayReady