Compartir a través de


DRM de hardware

En este tema se proporciona información general sobre cómo agregar la administración de derechos digitales (DRM) basada en hardware de PlayReady a la aplicación de Plataforma universal de Windows (UWP).

Nota:

Drm de PlayReady basado en hardware se admite en una gran cantidad de dispositivos, incluidos los dispositivos Windows y que no son Windows, como los conjuntos de TV, los teléfonos y las tabletas. Para que un dispositivo Windows admita DRM de hardware playReady, debe ejecutar Windows 10 y tener una configuración de hardware compatible.

Cada vez más, los proveedores de contenido se mueven hacia protecciones basadas en hardware para conceder permiso para reproducir contenido de alto valor completo en aplicaciones. Se ha agregado compatibilidad sólida para una implementación de hardware del núcleo criptográfico a PlayReady para satisfacer esta necesidad. Esta compatibilidad permite la reproducción segura de contenido de alta definición (1080p) y ultra alta definición (UHD) en varias plataformas de dispositivos. El material de clave (incluidas las claves privadas, las claves de contenido y cualquier otro material de clave usado para derivar o desbloquear dichas claves) y los ejemplos de vídeo comprimidos y sin comprimir se protegen aprovechando la seguridad de hardware.

Implementación de Windows TEE

En este tema se proporciona información general breve sobre cómo Windows 10 implementa el entorno de ejecución de confianza (TEE).

Los detalles de la implementación de Windows TEE están fuera del ámbito de este documento. Sin embargo, una breve explicación de la diferencia entre el puerto TEE del kit de portabilidad estándar y el puerto de Windows será beneficioso. Windows implementa la capa de proxy oem y transfiere las llamadas de funciones PRITEE serializadas a un controlador de modo de usuario en el subsistema de Windows Media Foundation. Esto finalmente se enrutará al controlador TrEE de Windows (entorno de ejecución de confianza) o al controlador de gráficos del OEM. Los detalles de cualquiera de estos enfoques están fuera del ámbito de este documento. En el diagrama siguiente se muestra la interacción del componente general para el puerto de Windows. Si desea desarrollar una implementación de TEE de Windows PlayReady, puede ponerse en contacto con WMLA@Microsoft.com.

Diagrama de componentes de windows tee

Consideraciones para usar DRM de hardware

En este tema se proporciona una breve lista de elementos que se deben tener en cuenta al desarrollar aplicaciones diseñadas para usar DRM de hardware. Como se explica en DRM de PlayReady, con PlayReady HWDRM para Windows 10, todas las protecciones de salida se aplican desde la implementación de Windows TEE, lo que tiene algunas consecuencias en los comportamientos de protección de salida:

  • Compatibilidad con el nivel de protección de salida (OPL) para vídeo digital sin comprimir 270: PlayReady HWDRM para Windows 10 no admite la resolución descendente y aplicará que HDCP esté activado. Se recomienda que el contenido de alta definición para HWDRM tenga un OPL mayor que 270 (aunque no es necesario). Además, se recomienda establecer la restricción de tipo HDCP en la licencia (HDCP versión 2.2 en Windows 10).
  • A diferencia de DRM de software (SWDRM), las protecciones de salida se aplican en todos los monitores basados en el monitor menos capaz. Por ejemplo, si el usuario tiene dos monitores conectados donde uno de los monitores admite HDCP y el otro no, se producirá un error en la reproducción si la licencia requiere HDCP aunque el contenido solo se represente en el monitor que admita HDCP. En DRM de software, el contenido se reproduciría siempre y cuando solo se represente en el monitor que admita HDCP.
  • El cliente no garantiza que HWDRM los use y proteja, a menos que las claves de contenido y las licencias cumplan las condiciones siguientes:
    • La licencia usada para la clave de contenido de vídeo debe tener una propiedad de nivel de seguridad mínimo de 3000.
    • El audio debe cifrarse en una clave de contenido diferente a la de vídeo y la licencia usada para el audio debe tener una propiedad de nivel de seguridad mínimo de 2000. Como alternativa, el audio podría dejarse claro.

Además, debe tener en cuenta los siguientes elementos al usar HWDRM:

  • No se admite el proceso de medios protegidos (PMP).
  • Windows Media Video (también conocido como VC-1) no se admite (consulte Invalidar DRM de hardware).
  • No se admiten varias unidades de procesamiento de gráficos (GPU) para licencias persistentes.

Para controlar licencias persistentes en máquinas con varias GPU, tenga en cuenta el siguiente escenario:

  1. Un cliente compra una nueva máquina con una tarjeta gráfica integrada.
  2. El cliente usa una aplicación que adquiere licencias persistentes mientras usa DRM de hardware.
  3. La licencia persistente ahora está enlazada a las claves de hardware de esa tarjeta gráfica.
  4. A continuación, el cliente instala una nueva tarjeta gráfica.
  5. Todas las licencias del almacén de datos hash (HDS) están enlazadas a la tarjeta de vídeo integrada, pero el cliente ahora quiere reproducir contenido protegido con la tarjeta gráfica recién instalada.

Para evitar que se produzca un error en la reproducción porque el hardware no puede descifrar las licencias, PlayReady usa un HDS independiente para cada tarjeta gráfica que encuentre. Esto hará que PlayReady intente adquirir licencias para un fragmento de contenido donde PlayReady normalmente ya tendría una licencia (es decir, en el caso drm de software o en cualquier caso sin un cambio de hardware, PlayReady no tendría que volver a adquirir una licencia). Por lo tanto, si la aplicación adquiere una licencia persistente mientras usa DRM de hardware, la aplicación debe ser capaz de controlar el caso en el que esa licencia se "pierde" eficazmente si el usuario final instala (o desinstala) una tarjeta gráfica. Dado que no es un escenario común, puede decidir controlar las llamadas de soporte técnico cuando el contenido ya no se reproduce después de un cambio de hardware en lugar de averiguar cómo tratar un cambio de hardware en el código de cliente o servidor.

Invalidación de DRM de hardware

En esta sección se describe cómo invalidar DRM de hardware (HWDRM) si el contenido que se va a reproducir no admite DRM de hardware.

De forma predeterminada, se usa DRM de hardware si el sistema lo admite. Sin embargo, algunos contenidos no se admiten en DRM de hardware. Un ejemplo de esto es contenido de Cóctel. Otro ejemplo es cualquier contenido que use un códec de vídeo distinto de H.264 y HEVC. Otro ejemplo es el contenido hevc, ya que algunos DRM de hardware admitirán HEVC y algunos no lo harán. Por lo tanto, si desea reproducir un fragmento de contenido y DRM de hardware no lo admite en el sistema en cuestión, puede que desee no participar en DRM de hardware.

En el ejemplo siguiente se muestra cómo no participar en DRM de hardware. Solo tiene que hacerlo antes de cambiar. Además, asegúrese de que no tiene ningún objeto PlayReady en la memoria; de lo contrario, el comportamiento no está definido.

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;

Para volver a DRM de hardware, establezca el valor de SoftwareOverride en 0.

Para cada reproducción multimedia, debe establecer MediaProtectionManager en:

mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;

La mejor manera de saber si está en DRM de hardware o DRM de software es examinar C:\Users\<username>\AppData\Local\Packages\<nombre> de aplicación\LocalCache\PlayReady\*

  • Si hay un archivo mspr.hds, está en DRM de software.
  • Si tiene otro archivo *.hds, está en DRM de hardware.
  • También puede eliminar toda la carpeta PlayReady y volver a intentar la prueba.

Detección del tipo de DRM de hardware

En esta sección se describe cómo detectar qué tipo de DRM de hardware se admite en el sistema.

Puede usar el método PlayReadyStatics.CheckSupportedHardware para determinar si el sistema admite una característica DRM de hardware específica. Por ejemplo:

bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);

La enumeración PlayReadyHardwareDRMFeatures contiene la lista válida de valores de características DRM de hardware que se pueden consultar. Para determinar si se admite DRM de hardware, use el miembro HardwareDRM en la consulta. Para determinar si el hardware admite el códec De codificación de vídeo de alta eficiencia (HEVC)/H.265, use el miembro HEVC en la consulta.

También puede usar la propiedad PlayReadyStatics.PlayReadyCertificateSecurityLevel para obtener el nivel de seguridad del certificado de cliente para determinar si se admite DRM de hardware. A menos que el nivel de seguridad del certificado devuelto sea mayor o igual que 3000, el cliente no se individualiza ni aprovisiona (en cuyo caso esta propiedad devuelve 0) o DRM de hardware no está en uso (en cuyo caso esta propiedad devuelve un valor inferior a 3000).

Detección de compatibilidad con DRM de hardware de AES128CBC

A partir de Windows 10, versión 1709, puedes detectar la compatibilidad con el cifrado de hardware AES128CBC en un dispositivo llamando a PlayReadyStatics.CheckSupportedHardware y especificando el valor de enumeración PlayReadyHardwareDRMFeatures.Aes128Cbc. En versiones anteriores de Windows 10, especificar este valor provocará una excepción. Por este motivo, debe comprobar la presencia del valor de enumeración llamando a ApiInformation.IsApiContractPresent y especificando la versión 5 del contrato principal antes de llamar a CheckSupportedHardware.

bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);

if (supportsAes128Cbc)
{
    supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}

Consulte también