Compartir vía


Protección de contenido DASH con Microsoft PlayReady

Implementar la protección de contenido para perfiles dinámicos y a petición de streaming adaptable dinámico a través de HTTP (ISO/IEC 23009-1) mediante el cifrado común (ISO/IEC 23001-7) y Microsoft PlayReady.

de versión actual

La versión actual es versión 1.3 publicada el 15 de febrero de 2018

Consulte el historial de cambios de para obtener más información.

abstracta

Los perfiles iso/IEC 23009-1 de formato de archivo multimedia base ISO a petición y live DASH se pueden usar con la especificación ISO/IEC 23001-7, "Cifrado común en archivos de formato de archivo multimedia base ISO". Microsoft PlayReady admite ISO/IEC 23001-7 e ISO/IEC 23009-1. Esta especificación detalla cómo crear un archivo de descripción de presentación multimedia ISO/IEC 23009-1 que indica el uso de Microsoft PlayReady para representaciones multimedia ISO/IEC 14496-12 para escenarios de streaming adaptables en directo y a petición.

aviso legal

© 2018 Microsoft Corporation. Todos los derechos reservados. Este documento se proporciona "as-is". La información contenida en este documento, incluida la dirección URL y otras referencias a sitios web de Internet, puede cambiar sin previo aviso. Corre el riesgo de usarlo.

Este documento no le proporciona ningún derecho legal a ninguna propiedad intelectual en ningún producto de Microsoft. Puede copiar y usar este documento con fines internos de referencia. Es posible que no quite ningún aviso de este documento.

contenido de

Sección Título
1 introducción
1.1 ámbito de
1.2 convenciones de
1.3 terminología, abreviaturas y acrónimos de
1.4 referencias
1.5 historial de cambios
2 esquema de protección de contenido dash PlayReady DASH
2.1 elementos de descriptor de protección dash contentProtection
2.2 recomendaciones y requisitos de implementación
3 Ejemplo de descripción de presentación multimedia de
3.1 Correcto PRO en el segmento de inicialización o contenido multimedia
3.2 Incluir un objeto PlayReady en el MPD

tablas

Mesa Título
Tabla 1 de cuadro de cifrado de seguimiento de
Tabla 2 ejemplo de representación KID

1. Introducción

El streaming adaptable dinámico de MPEG a través del estándar HTTP [DASH] especifica formatos para la entrega de contenido multimedia desde servidores HTTP a clientes HTTP. En DASH, la presentación del contenido multimedia se describe mediante un archivo de descripción de presentación multimedia (MPD). MpD proporciona identificadores de recursos para segmentos junto con el contexto de estos recursos dentro de una presentación multimedia.

En DASH una presentación multimedia consta de una secuencia de tiempo de períodos ([DASH], sección 5.3.2). Dentro de un período, el contenido multimedia se organiza en un conjunto de versiones codificadas intercambiables denominadas Conjuntos de adaptación ([DASH], sección 5.3.3). Cada conjunto de adaptación consta de representaciones ([DASH], sección 5.3.5): versiones codificadas de entrega de los componentes de contenido multimedia.

Un elemento ContentProtection Descriptor puede estar asociado a un conjunto de adaptación o a una representación, para indicar el esquema de cifrado, y se pueden agregar uno o varios elementos ContentProtection Descriptor para habilitar la adquisición de licencias DRM ([DASH], sección 5.8.4.1).

1.1 Ámbito

Cómo usar Microsoft PlayReady como esquema de protección de contenido en un archivo de descripción de presentación multimedia DASH ISO/IEC 23009-1.

1.2 Convenciones

Las palabras clave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" y "OPTIONAL" en este documento se interpretarán como se describe en [RFC2119]. Es lo siguiente:

  • "MUST", "REQUIRED" y "SHALL" significan que la definición es un requisito absoluto de la especificación.

  • "NO DEBE" y "NO DEBE" significar que la definición es una prohibición absoluta de la especificación.

  • "DEBE" y "RECOMENDADO" significan que puede haber razones válidas para ignorar un elemento determinado, pero las implicaciones completas deben entenderse y ponderarse cuidadosamente antes de elegir un curso diferente.

  • "NO DEBE" y "NO RECOMENDADO" significan que puede haber razones válidas cuando el comportamiento concreto es aceptable, pero se deben entender las implicaciones completas y el caso se debe ponderar cuidadosamente antes de implementar cualquier comportamiento descrito con esta etiqueta.

  • "MAY" y "OPTIONAL" significa que el elemento es realmente opcional.

Volver al principio

1.3 Terminología, abreviaturas y acrónimos

1.3.1 Terminología

Término Descripción
Conjunto de adaptación En DASH, un conjunto de versiones codificadas intercambiables de uno o varios componentes de contenido multimedia.
Protección de contenido (CP) Proceso de protección de un recurso protegido posterior a su entrega a un dispositivo cliente.
Licencia insertada Una licencia almacenada en el objeto PlayReady (PRO).
Almacén de licencias incrustado (ELS) Un registro en el objeto PlayReady (PRO) para almacenar licencias incrustadas.
Identificador único global (GUID) Número de referencia único, representado como un guión separado por una cadena hexadecimal de 32 caracteres, y normalmente se almacena como un entero de 128 bits.
Segmento de inicialización Un segmento DASH que contiene metadatos necesarios para presentar las secuencias multimedia encapsuladas en segmentos multimedia; en el caso de medios ISO, un encabezado de archivo.
Identificador de clave (KID) UUID que identifica de forma única una clave que protege contenido, licencias u otra información confidencial; en el caso de PlayReady, almacenado como GUID.
Rotación de claves Cambios periódicos en la clave de cifrado asociada a medios. Normalmente esto significa
Licencia hoja Una licencia cuya clave de contenido se cifra mediante una clave de contenido en una licencia raíz.
Licencia Estructura de datos de PlayReady que incluye directivas y una clave de contenido cifrada.
Dirección URL de adquisición de licencias (LAURL) Dirección URL del servicio web playReady de adquisición de licencias.
Cadena de licencias Una cadena de licencias consta de una licencia raíz y una licencia hoja. Una licencia hoja puede tener varias licencias raíz y una licencia raíz puede tener varias licencias hoja. Existe una cadena de licencias para cada par.
Perfil en directo El perfil activo del formato de archivo multimedia base ISO (consulte la sección 8.4 de [DASH]). Live Profile está optimizado para la codificación en vivo, donde cada segmento de película se puede solicitar inmediatamente después de codificarlo mediante una dirección URL generada por la plantilla.
Presentación multimedia Colección de metadatos y datos multimedia que se pueden descargar y representar como presentación multimedia, tal como se define en ISO/IEC 23009-1.
Descripción de la presentación multimedia (MPD) Descripción formal del documento XML de una presentación multimedia definida en ISO/IEC 23009-1.
Segmento multimedia Un segmento DASH que cumple con un formato multimedia y permite la reproducción, tal vez combinado con otros segmentos multimedia o un segmento de inicialización.
Caja de películas ('moov') En el formato de archivo multimedia base ISO, el cuadro cuyos subprocesos definen los metadatos de una presentación multimedia [ISOBFF].
Cuadro fragmento de película ('moof') En el formato de archivo multimedia base ISO, el cuadro Fragmento de película extiende la presentación multimedia en tiempo [ISOBFF], y se encuentra en un segmento multimedia DASH.
Perfil a petición El perfil de archivo multimedia base ISO On Demand (consulte la sección 8.3 de [DASH]). El perfil a petición proporciona compatibilidad básica con el contenido a petición. Cada representación se proporciona como un único segmento, los subsegmentos se alinean en las representaciones de un conjunto de adaptación y los subsegmentos comienzan con un punto de acceso de flujo correspondiente a un segmento de película.
Periodo Intervalo de una presentación multimedia.
Objeto PlayReady (PRO) Objeto binario que contiene un número variable de registros, incluidos los registros PRH y ELS opcionalmente. Estos registros contienen información relacionada con las licencias y la adquisición de licencias (consulte [PRO]).
Cuadro Encabezado específico del sistema de protección ('pssh') En el formato de archivo multimedia base ISO, el cuadro Encabezado específico del sistema de protección contiene metadatos necesarios para un sistema de protección de contenido específico para adquirir una licencia y descifrar el contenido multimedia [ISOBFF].
Representación Una de las opciones alternativas del componente de contenido multimedia durante un período definido, por ejemplo, un archivo multimedia ISO. Se describe mediante un elemento de representación MPD ([DASH], sección 5.3.5).
Encabezado PlayReady (PRH) Un registro del objeto PlayReady (PRO) que contiene los metadatos necesarios para descifrar el contenido multimedia, incluidos uno o varios identificadores de clave y direcciones URL de adquisición de licencias (consulte [PRH]).
Licencia raíz Licencia cuya clave de contenido se usa para cifrar una clave de contenido en una licencia hoja
Segmento En DASH, un elemento de un MPD que hace referencia a un recurso multimedia con una HTTP-URL y un intervalo de bytes opcional.
Índice de segmento Intervalo de tiempo a la asignación de índices de intervalo de bytes dentro de un segmento multimedia independiente del MPD, definido como un cuadro "sidx" de medios ISO.
Punto de acceso de stream (SAP) Posición en una representación que permite la reproducción de segmento multimedia usando solo los datos de representación de esa posición hacia delante.
Subsegmento En DASH, se trata de una unidad dentro de un segmento multimedia indexado por un índice de segmento. Un segmento de película se aborda como Subsegment en DASH On Demand Profile, pero un segmento en DASH Live Profile.
Cuadro De cifrado de seguimiento En el formato de archivo multimedia base ISO, el cuadro Track Encryption ("tenc") describe los parámetros de cifrado predeterminados para una pista [CENC], [ISOBFF].
UUID Identificador matemáticomente único representado como un número o una cadena como se especifica en [X.667]
Video On Demand (VOD) Sistema que permite al usuario final seleccionar y ver contenido de vídeo a petición. Tanto DASH Live Profile como DASH On Demand Profile se pueden usar para la presentación VOD.

1.3.2 Abreviaturas y acrónimos

Abreviado. Significado
CP Protección de contenido
PIZCA Streaming adaptable dinámico a través de HTTP
ELS Almacén de licencias incrustado
GUID Identificador único global
CABRITO Identificador de clave
LAURL Dirección URL de adquisición de licencias
MPD Descripción de la presentación multimedia
PRH Encabezado playReady
PRO PlayReady (objeto)
SAVIA Punto de acceso de flujo
UUID Identificador único universal
VOD Vídeo a petición

1.4 Referencias

1.4.1 Referencias normativas

Código Referencia normativa
[CENC] ISO/IEC IDFS 23001-7:2016 "Tecnologías de la información – Tecnologías de sistemas MPEG – Parte 7: Cifrado común en archivos de formato de archivo multimedia base ISO", https://www.iso.org/standard/68042.html
[DASH] ISO/IEC 23009-1:2014, Segunda Edición, "Tecnología de la información — Streaming adaptable dinámico a través de HTTP (DASH) — Parte 1: Descripción de presentación multimedia y formatos de segmento", http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
[EME] "Extensiones de medios cifradas", recomendación W3C 18 de septiembre de 2017https://www.w3.org/TR/encrypted-media/
[PRH] "de encabezado de Microsoft PlayReady , consulte especificación de encabezado PlayReady
[PRO] "Microsoft PlayReady Object, consulte especificación de encabezado PlayReady
[RFC2119] "Palabras clave para su uso en rfC para indicar niveles de requisitos", S. Bradner, marzo de 1997, http://www.ietf.org/rfc/rfc2119
[RFC3629] "UTF-8, un formato de transformación de ISO 10646", F. Yergeau, noviembre de 2003, http://tools.ietf.org/html/rfc3629
[RFC4122] "A Universally Unique IDentifier (UUID) URN Namespace", P. Leach, M. Mealling, R. Salz, july 2005,http://www.ietf.org/rfc/rfc4122.txt
[X.667] "Tecnología de la información – Interconexión de sistemas abiertos – Procedimientos para el funcionamiento de las entidades de registro de OSI: Generación y registro de identificadores únicos universales (UUID) y su uso como componentes de identificador de objeto ASN.1" Serie X ITU-T Recomendaciónhttp://www.itu.int/rec/T-REC-X.667-201210-I/en

1.4.2 Referencias informativas

Código Referencia informativa
[CPSID] foro del sector DASH, "Identificadores específicos del sistema de protección",http://dashif.org/identifiers/content_protection/
[DASHIF] foro del sector DASH, "Directrices para la implementación: puntos de interoperabilidad de DASH-IF", 07 de septiembre de 2017, versión 4.1,https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf
[ISOBFF] ISO/IEC 14496-12, Cuarta edición (versión corregida 2012-09-15), "Tecnología de la información – Codificación de objetos visuales de audio – Parte 12: Formato de archivo multimedia base ISO",http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip

Volver al principio

1.5 Historial de cambios

Versión Fecha Detalles
Versión 1.3 15 de febrero de 2018 Aclarar la compatibilidad con vectores de inicialización de 16 bytes (IVs de 16 bytes).
Versión 1.2 8 de octubre de 2014 1) Cambios para la 2ª edición de CENC
2) Cambios relacionados con los elementos dash MPD ContentProtection Descriptor
3) Cambios en la terminología para la adición de términos y aclaraciones
4) Cambios en las referencias normativas e informativas para hacer referencia a la versión más reciente
5) Aclarar la representación y endianidad de KID en los cuadros ISOBFF, PRO y PlayReady licencia.
Versión 1.1 18 de febrero de 2013 Aclarar la representación de PlayReady SystemID.
PlayReady SystemID es 9a04f079-9840-4286-ab92-e65be0885f95.
Representación big endian = {0x9A, 0x04, 0xF0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}.
Representación little endian = {0x79, 0xF0, 0x04, 0x9A, 0x40, 0x98, 0x86, 0x42, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}.
Versión 1.0 17 de julio de 2012 Versión inicial



2. Esquema de protección de contenido dash de PlayReady

Microsoft PlayReady admite los nuevos estándares ISO/IEC 23009-1 [DASH] e ISO/IEC 23001-7 [CENC]. Esta especificación detalla cómo crear un archivo DASH Media Presentation Description que indique el uso de las representaciones multimedia de formato de archivo multimedia base ISO PlayReady para representaciones multimedia de formato de archivo multimedia ISO, para escenarios de streaming adaptables de sección 8.4 ([DASH], sección 8.4).

Los cuatro escenarios que son el foco de esta especificación son VOD o presentaciones en directo de medios:

  1. cifrado con una sola clave

  2. donde se cifra algún contenido y parte del contenido está claro

  3. con rotación de claves sin licencias hoja incrustadas

  4. con rotación de claves con licencias hoja incrustadas

2.1 Elementos descriptores de protección dash

DASH define dos tipos de elementos ContentProtection Descriptor para medios ISO ([DASH] secciones 5.3.7.2-Tabla 9, 5.8.5.2 y 5.8.4.1):

  1. Con @schemeIdUri=”urn:mpeg:dash:mp4protection:2011” @value=”<scheme>”
  2. Con @schemeIdUri=”urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” @value=”DRMNAME version”

El primer tipo de descriptor indica el código de cuatro caracteres ("4CC") del esquema de cifrado que se encuentra en el cuadro de información de esquema de protección ('schi') en cada pista de medios ISO cifrada. Este tipo de descriptor siempre estará presente para que los jugadores tengan en cuenta que el contenido está cifrado y pueden determinar si pueden descifrar el esquema de cifrado antes de intentar descargarlo y reproducirlo.

El segundo tipo de descriptor indica la cadena UUID para un sistema DRM determinado que puede proporcionar una clave de licencia y descifrado para el conjunto de adaptación asociado. Las especificaciones de la aplicación, como las de DASH Industry Forum, DVB y DECE restringen todas las representaciones de un conjunto de adaptación para compartir las mismas claves y licencias para habilitar el cambio adaptable sin problemas, lo que se logra al restringir los descriptores de contentProtection desde el nivel de representación del MPD. La cadena UUID es igual al campo SystemID especificado por el cuadro de información específica del sistema de protección multimedia ISO ('pssh') que PUEDE estar presente en el cuadro de película ('moov') de un archivo o segmento de inicialización DASH.

Nota El cuadro "pssh" incluye un SystemID, un UUID [X.667] que identifica de forma única el sistema de protección de contenido. PlayReady SystemID es 9a04f079-9840-4286-ab92-e65be0885f95.

Los valores de SystemID para los sistemas DRM se registran en: https://dashif.org/identifiers/content_protection/

Cada elemento AdaptationSet PUEDE enumerar varios descriptores DRM para indicar que las licencias están disponibles para varios sistemas DRM. Cada sistema DRM puede especificar elementos y atributos en su propio espacio de nombres y convertirlos en opcionales o necesarios en Descriptores mediante su SystemID.

La segunda edición de Common Encryption ([CENC] sección 11) especifica un elemento cenc:pssh opcional que todos los descriptores de contentProtection DRM pueden usar para mejorar la interoperabilidad. También especifica un atributo cenc:default_KID recomendado para su inclusión en el descriptor mp4protection para identificar la licencia necesaria en un solo lugar para todos los sistemas. El elemento cenc:pssh contiene una estructura de cuadro "pssh" completa, por lo que la API de extensión multimedia cifrada (EME) la procesa de forma idéntica en exploradores web [EME].

Los sistemas DRM pueden proporcionar información de adquisición de licencias en:

  1. Un elemento cenc:pssh en un descriptor contentProtection en mpD
  2. Un cuadro "pssh" en el cuadro "moov" de un archivo o segmento de inicialización
  3. Ambos de los anteriores (en cuyo caso, el elemento cenc:pssh tiene prioridad)

Dependiendo del flujo de trabajo, puede ser más eficaz insertar información de adquisición de licencias en un cuadro "pssh" en cada archivo de un conjunto de adaptación durante la codificación o el empaquetado; o puede ser más eficaz insertar un elemento cenc:pssh en un MPD en el momento en que se ofrece una presentación de streaming. Para el streaming en vivo, es mejor usar cenc:pssh en MPD para habilitar la adquisición anticipada de licencias, en lugar de desencadenar muchas solicitudes de licencia simultáneas en el momento en que el primer segmento de inicialización y el cuadro "pssh" se entregan simultáneamente a millones de espectadores. La información de adquisición de licencias en MPD permite que diferentes servicios de streaming usen diferentes servidores de licencias, cámbielos con el tiempo, etcetera. sin crear y administrar archivos multimedia independientes.

En el caso de PlayReady, un objeto PlayReady (PRO) [PRO] se puede contener en un elemento cenc:pssh, un elemento mspr:pro o un cuadro "pssh" para habilitar la adquisición de licencias. Microsoft PlayReady define el elemento mspr:pro e incluye solo la información pro [PRO] , no la estructura de cuadros incluida en "pssh" y cenc:pssh. La inclusión de mspr:pro y cenc:pssh permitirá a los jugadores antiguos, incluidos un jugador basado en Silverlight, y nuevos jugadores, incluidas las páginas web que usan scripts para reproducir presentaciones DASH protegidas en exploradores HTML5.

Nota A lo largo de esta especificación "mspr" es "urn:microsoft:playready", definido por xmlns:mspr="urn:microsoft:playready".

Volver al principio

2.1.1 Corregir PRO en el segmento de inicialización o contenido multimedia

Si hay un segmento de inicialización que contiene el PRO correcto, o si el contenido multimedia incluye un cuadro "pssh" de PlayReady con el PRO correcto, el siguiente elemento ContentProtection Descriptor con el identificador específico del sistema de protección de contenido de PlayReady [CPSID] DEBE usarse en un elemento AdaptationSet de un MPD para indicar la disponibilidad de una licencia de PlayReady:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>

PlayReady admite common Encryption [CENC] estándar . Cuando los metadatos de adquisición de licencias se almacenan en el segmento de inicialización o en el contenido multimedia "pssh", el elemento ContentProtection Descriptor de PlayReady debe estar presente.

El siguiente elemento ContentProtection Descriptor DEBE estar presente en cada conjunto de adaptación protegido y una única instancia indica el esquema de cifrado para todos los DRM que admiten el esquema 'cenc'.

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>

2.1.2 Incluir un objeto PlayReady en mpD

Hay varias situaciones en las que es posible que el objeto PlayReady [PRO] deba incluirse en el elemento ContentProtection Descriptor de PlayReady. Por ejemplo:

  • Presentación en la que el cuadro "pssh" de PlayReady está ausente

  • Una presentación en la que el PRO que se encuentra en el cuadro "pssh" de PlayReady debe invalidarse.

Para identificar PlayReady como esquema de protección de contenido e incluir el PRO en el elemento ContentProtection Descriptor, se recomienda usar la sintaxis cenc:pssh según [CENC] y mspr:pro sintaxis para la compatibilidad con versiones anteriores de la siguiente manera:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
  	<cenc:pssh>
          <!-- *base64-encoded PlayReady ‘pssh’ complete box* -->
  	</cenc:pssh>
  	<mspr:pro>
          <!-- *base64-encoded PlayReady Object* -->
    </mspr:pro>
</ContentProtection>

Se debe seguir la siguiente regla al incluir un cuadro "pssh" de PlayReady y un PRO en el elemento Descriptor de contentProtection de PlayReady:

  • Si cenc:pssh o mspr:pro se incluye en el elemento PlayReady ContentProtection Descriptor:

    • Si un PRO se incluye en un cuadro Encabezado específico del sistema de protección ("pssh") en el contenido multimedia, a continuación, un valor de cadena codificado en BASE64 KID (un valor de etiqueta KID de [PRO]) en un PRO que se incluye en cenc:pssh o mspr:pro debe ser equivalente al valor de cadena codificado en BASE64 KID en ese PRO que se incluye en el cuadro "pssh".

    • Si hay un Segmento de inicialización para la representación que contiene un playReady 'pssh', un valor de cadena codificado en KID base64 en un PRO que se incluye en cenc:pssh o mspr:pro para esa representación debe ser equivalente al valor de cadena codificado en BASE64 KID en ese PRO que se incluye en el cuadro "pssh" del segmento de inicialización. Tenga en cuenta que un segmento de inicialización puede ser una copia del encabezado de archivo de un archivo de contenido multimedia almacenado contenido en un cuerpo de respuesta HTTP, pero también puede generarse dinámicamente y nunca almacenarse como un archivo.

  • Si el contenido multimedia contiene un cuadro "pssh" de PlayReady con un PRO que contiene una LAURL y que LAURL difiere de la LAURL en el PRO incluido en el elemento ContentProtection Descriptor, el elemento Descriptor contentProtection LAURL tendrá prioridad.

Volver al principio

2.1.3 Incluir campos de cuadro de cifrado de seguimiento en MPD

El cifrado común indica la clave que se usa para cifrar cada muestra multimedia (o no se usa) con identificadores de clave (KID) en cada segmento de película. Cierta información, como la default_KID en el cuadro de cifrado de seguimiento ("tenc") es útil para indicar en mpD para determinar qué licencia es necesaria.

Puede haber períodos de presentación multimedia sin cifrar, seguidos de períodos cifrados. Los archivos multimedia y las secuencias pueden incluir secciones cifradas y sin cifrar. Además, el identificador de clave (KID) puede cambiar de Período a Período o de sección a sección. Los cambios clave en las secciones de una pista se indican mediante el grupo de muestras ISO Media y los cuadros de descripción de grupo de ejemplo en cada segmento de película. Consulte [CENC] para obtener más información sobre los grupos de ejemplo y el acceso a vectores de inicialización y intervalos de cifrado de subsample mediante cuadros "saio" y "saiz" que apuntan a información auxiliar de ejemplo.

La configuración predeterminada para la información de cifrado común se codifica en el cuadro Cifrado de pistas ('tenc') (vea [ISOBFF] y [CENC]) almacenados en un cuadro de seguimiento ('trak') en un encabezado de archivo ISO y segmento de inicialización. El identificador de clave predeterminado (KID) del cuadro de cifrado de seguimiento (default_KID campo) también debe comunicarse en el elemento ContentProtection Descriptor asociado al conjunto de adaptación de presentación multimedia. El cenc:default_KID se puede usar para identificar una licencia que pueda descifrar los segmentos multimedia a los que hace referencia el elemento AdaptationSet primario.

Para incluir el identificador de clave predeterminado (KID) en el elemento Common Encryption ContentProtection Descriptor, use el siguiente atributo cenc:default_KID especificado en [CENC]:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>

El campo default_KID de 'tenc' es una matriz big endian de 16 bytes y se define anteriormente para almacenarse en el atributo cenc:default_KID en el elemento Common Encryption ContentProtection Descriptor como una cadena UUID.

Cuando un elemento ContentProtection Descriptor hace referencia a varias pistas, y usan diferentes identificadores de clave predeterminados en diferentes cuadros "tenc", el atributo cenc:default_KID debe almacenar una lista delimitada por espacio de esos distintos valores default_KID.

El atributo cenc:default_KID también puede estar incluido en el elemento ContentProtection Descriptor de PlayReady.

En la tabla 1 siguiente se enumeran los campos especificados en el cuadro de cifrado de seguimiento de medios ISO ("tenc") (consulte la sección 9.2, [CENC]). Los elementos siguientes Table 1 donde se definen en el espacio de nombres "mspr" para la primera edición de Common Encryption (mspr:IsEncrypted, mspr:IV_size y mspr:kid), pero están en desuso y se reemplazan funcionalmente por cenc:default_KID especificado en la segunda edición de Common Encryption [CENC]. Los campos IV_size e IsEncrypted del cuadro de cifrado de seguimiento ('tenc') se usan durante el descifrado, pero no son necesarios en los elementos ContentProtection Descriptor de MPD.

Nota valor KID en mspr:kid es una interpretación GUID little endian codificada en base64 de la matriz de bytes "tenc" default_KID definida para almacenar un UUID de endian grande. Todos los campos del cuadro de cifrado de seguimiento se pueden copiar en mpD, pero solo es necesario default_KID para exponer la adquisición de licencias.

Tabla 1: Seguimiento de campos de cuadro de cifrado

elemento predeterminado descripción
default_IsEncrypted 1 Marca que indica el estado de cifrado de los ejemplos del grupo de ejemplo. Los valores permitidos son 0 (no cifrado) y 1 (cifrado).
default_IV_size 8 Tamaño en bytes del campo Vector de inicialización (IV).
- PlayReady versión 1, 2, 3 admite 0 y 8.
- PlayReady versión 4 y versiones posteriores admiten 0, 8 y 16.
Si default_IsEncrypted =1, default_IV_size NO DEBE establecerse en 0.

Puesto que no todos los reproductores habilitados para PlayReady admiten vectores de inicialización de 16 bytes, se RECOMIENDA que solo se use un default_IV_size de 8 para contenido cifrado, si el servicio necesita llegar a los reproductores de PlayReady versión 1/2/3.
default_KID Ninguno Identificador de clave de 16 bytes (128 bits) que identifica de forma única la clave necesaria para descifrar las muestras asociadas. El identificador de clave se trata como UUID según [CENC]
Tenga en cuenta que, a diferencia de KID en el encabezado PlayReady [PRH], "tenc" default_KID se almacena como una matriz de 16 bytes que contiene un byte grande endian ordenado, entero de 128 bits equivalente a binario (sección 6.2) y número (sección 6.3) representaciones UUID especificadas en [X.667].

Nota: El formato del default_KID en el cuadro de cifrado de pista es diferente del formato del valor KID incrustado en PRO en cenc:pssh, mspr:pro y mspr:kid. Consulte la sección 2.2.5, [CENC] y [PRO] para obtener más información.

Para identificar PlayReady como esquema de protección de contenido e incluir campos Track Encryption Box en MPD, use la sintaxis siguiente:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
  <mspr:IsEncrypted>1</mspr:IsEncrypted>
  <mspr:IV_size>8</mspr:IV_size>
  <mspr:kid>2ptZlGAMKtD5bfEnJXgJeA==</mspr:kid>
</ContentProtection>

Se deben seguir las reglas siguientes al incluir el atributo cenc:default_KID en el elemento Common Encryption ContentProtection Descriptor y track Encryption Box en el elemento PlayReady ContentProtection Descriptor:

  • La cadena KID del atributo cenc:default_KID del elemento Common Encryption ContentProtection Descriptor DEBE ser equivalente al UUID de default_KID en el cuadro Track Encryption (Seguimiento de cifrado) para esa pista.

  • El valor mspr:IsEncrypted, mspr:IV_size y/o mspr:kid en el elemento PlayReady ContentProtection Descriptor DEBE ser equivalente a los que se encuentran en default_IsEncrypted, default_IV_size o default_KID campos del cuadro Cifrado de pista para esa pista.

  • Si mspr:pro y cenc:pssh se incluyen en el elemento PlayReady ContentProtection Descriptor (consulte la sección 2.1.2) con campos Track Encryption Box:

    • Los elementos KID insertados en PRO en mspr:pro y cenc:pssh deben ser equivalentes a la default_KID en el cuadro de cifrado de pista de esa pista.

    • El KID del atributo cenc:default_KID del elemento Common Encryption ContentProtection Descriptor y mspr:kid del elemento PlayReady ContentProtection DescriptorShall equivalen al default_KID en el cuadro de cifrado de pista de esa pista.

Nota Tenga en cuenta que default_KID en el cuadro de cifrado de seguimiento se interpreta como un UUID binario o numérico almacenado como una matriz de bytes big endian de 16 bytes, como una cadena con guiones UUID en cenc:default_KID y como una cadena base64 codificada a partir de una representación GUID de orden de bytes poco endian en PRO y mspr:kid; pero todas deben ser representaciones alternativas del mismo UUID. Consulte la sección 2.2.5.

Volver al principio

2.2 Recomendaciones y requisitos de implementación

El objeto PlayReady (PRO) [PRO] PUEDE incluirse en el cuadro Encabezado específico del sistema de protección de medios codificado ('pssh') [ISOBFF], el segmento de inicialización o codificado en el propio MPD.

Se puede insertar un cuadro "pssh" en el cuadro Película ("moov") o en el cuadro Fragmento de película ("moof"). Por ejemplo, se puede insertar un cuadro "pssh" en el cuadro "moov" para habilitar el uso de segmentos de inicialización ([DASH], sección 5.3.9.5.2). Se puede insertar un cuadro "pssh" en cada cuadro "moof" para transmitir licencias hoja indexadas por KID para la rotación de claves.

El grupo de muestras y la información auxiliar de muestra se almacenarán dentro de cualquier segmento de película que haga referencia a él. Un cuadro de descripción de grupo de ejemplo ("sgdp") estará presente en cada cuadro "moof" cuando esté presente un cuadro de ejemplo para agrupar ("sbgp". El cuadro de desplazamiento de información auxiliar de muestra ('saio') y el cuadro de tamaño de información auxiliar de muestra ('saiz') estarán presentes en cada segmento de película de cada pista que contenga un cuadro de cifrado de pista ('tenc'), con punteros válidos a información auxiliar de ejemplo.

2.2.1 General

El elemento PlayReady ContentProtection Descriptor puede estar asociado a los conjuntos de adaptación o a sus representaciones, pero para el cambio de velocidad de bits adaptable sin problemas y la conformidad con las especificaciones de la aplicación DASH, el elemento PlayReady ContentProtection Descriptor debe estar incluido en un elemento AdaptiveSet en lugar de en elementos Representation. Esto garantiza que se puede usar una única configuración de licencia y descifrador para todos los segmentos de un conjunto de adaptación.

Se RECOMIENDA incluir el descriptor contentProtection de PlayReady y, OBLIGATORIO para incluir el descriptor contentProtection DASH MP4 con un valor de "cenc" en mpD.

Esto permite a los DRM que son capaces de "cenc" y tienen información de adquisición de licencias en una aplicación, o en el MPD, o en un "pssh" en el segmento de inicialización para identificar que el contenido es Common Encrypted, identificar la licencia necesaria (mediante default_KID), adquirir una licencia y descifrar los medios.

Se recomienda incluir el atributo @value con el nombre y la versión "MSPR 2.0" además del UUID en el Descriptor de contentProtection de PlayReady para el reconocimiento humano. Por ejemplo:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>

2.2.2 Precedencia de la ubicación PRO

Cuando una aplicación cliente encuentra un PRO en mpD, debe tener prioridad sobre un PRO contenido en el segmento de inicialización (consulte los requisitos adicionales de Initialization Segment PRO en 2.2.3).

Cuando una aplicación cliente encuentra un PRO en el MPD, el encabezado de Rights Management contenido en ese PRO DEBE tener prioridad sobre el encabezado rights Management en un pro incluido en un cuadro "pssh" en el cuadro "moov" del contenido multimedia.

Cuando una aplicación cliente encuentra un PRO en el segmento de inicialización, debe tener prioridad sobre un PRO contenido en un cuadro "pssh" en el encabezado de cuadro "moov" del contenido multimedia (vea requisitos adicionales de Initialization Segment PRO en 2.2.3).

2.2.3 Dónde incluir pro

El PRO debe estar presente en MPD o en el segmento de inicialización. Puede estar presente en ambos. En mpD, debe estar presente tanto en un elemento mspr:pro como en un elemento cenc:pssh en el descriptor de protección de contenido de PlayReady (mspr:pro para reproductores heredados).

Un PRO en el segmento de inicialización o el MPD PUEDE incluir un encabezado de Rights Management.

Tanto si se usa un segmento de inicialización como si no, se recomienda que el MPD incluya el PRO correcto para que se pueda adquirir la información del encabezado de Rights Management sin descargar el segmento de inicialización.

2.2.4 Qué incluir en MPD PRO

El PRO puede incluir el encabezado Rights Management o un almacén de licencias incrustado (ELS).

Se recomienda que MPD PRO incluya el encabezado Rights Management.

No se recomienda incluir un ELS a menos que se necesite como parte de un dominio DRM o un esquema de cadena de licencias.

2.2.5 Pedido de bytes KID

Los identificadores de clave (KID) de PlayReady se almacenan en una matriz de bytes con formato GUID (DWORD, WORD, WORD, matriz de 8 BYTES) en orden de bytes little endian, que a continuación se codifica en base64 para el almacenamiento como una cadena en pro. Tanto los servidores de licencias de PlayReady como los clientes de PlayReady en un ecosistema de PlayReady esperan que la licencia KID en pro y PlayReady sea una representación de orden de bytes poco endian de [GUID].

El KID equivalente se puede representar como una cadena UUID ([X.667] sección 6.4) o matriz de bytes que contiene un UUID en binario de orden de bytes big endian (sección 6.2) o número (sección 6.3) tal como se especifica en [X.667]. El cifrado común [CENC] y DASH usan estas representaciones en el atributo cenc:default_KID (cadena 6.4), cuadro de cifrado de seguimiento ('tenc') y 'seig' Cuadro de descripción de grupo de ejemplo ('sgpd') (matriz binaria de 6.2 o 6.3 bytes).

Como resultado, a menos que haya un cambio, el cliente debe convertir la endianidad de la matriz de bytes KIDs para que coincida con la licencia de PlayReady.

Para convertir los KID en el atributo cenc:default_KID y [ISOBFF] cuadros en PlayReady KID, use el código de ejemplo siguiente:

// Create a PlayReady GUID from the KID value in ISOBFF box.
// Since the PlayReady Server always runs on an Intel processor,
// this will be a little endian representation.
// e.g. KID in Track Encryption Box is:
//      {f81d4fae-7dec-11d0-a765-00a0c91e6bf6}

byte[] tencKidBytes = new byte[] {
    0xf8, 0x1d, 0x4f, 0xae,
    0x7d, 0xec,
    0x11, 0xd0,
    0xa7, 0x65,
    0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6
};

Byte[] prKidBytes = new byte[16];

// Swap the endianness of the GUID value:
// - Reverse bytes 0 to 3,
// - swap bytes 4 and 5,
// - swap bytes 6 and 7, and
// - copy bytes 8-15 as-is without swapping

ConvertEndianness(tencKidBytes, prKidBytes);
Guid prKid = new Guid(prKidBytes);
void ConvertEndianness(byte[] original, byte[] guidBytes)
{
    System.Array.Copy(original, guidBytes, 16);
    Swap(ref guidBytes, 0, 3);
    Swap(ref guidBytes, 1, 2);
    Swap(ref guidBytes, 4, 5);
    Swap(ref guidBytes, 6, 7);
}

void Swap(ref byte[] bytes, int pos1, int pos2)
{
    byte temp = bytes[pos1];
    bytes[pos1] = bytes[pos2];
    bytes[pos2] = temp;
}

tabla 2: ejemplo de representación KID

de parámetro KID tipo de de representación de
KID UUID BE Número hexadecimal f81d4fae7dec11d0a76500a0c91e6bf6
Sección 6.3 de [X.667 ]
de atributo cenc:default_KID UUID Cadena hexadecimal con guiones "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
Sección 6.4 de [X.667]
KID en cuadros ISOBFF UUID BE Byte Array La representación hexadecimal es { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }
Sección 6.2 de [X.667]
KID en PRO Cadena base64 de matriz de bytes LE GUID "rk8d+Ox90BGnZQCgyR5r9g=="
(Representación hexadecimal de los datos antes de la codificación base64 es { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 })
mspr:kid Cadena base64 de default_KID matriz de bytes en el cuadro "tenc" "+B1Prn3sEdCnZQCgyR5r9g=="
(Representación hexadecimal de los datos antes de la codificación base64 es { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 })
licencia KID en PlayReady Matriz de bytes LE GUID La representación hexadecimal es { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }

Volver al principio



3. Ejemplo de descripción de presentación multimedia

3.1 Correcto PRO en el segmento de inicialización o contenido multimedia

Consulte la sección 2.1.1 anterior.

<?xml version="1.0" encoding="utf-8"?>

<MPD
  xmlns="urn:mpeg:DASH:schema:MPD:2011"
  xmlns:cenc="urn:mpeg:cenc:2013"
  minBufferTime="PT2.00S"
  profiles="urn:mpeg:dash:profile:isoff-live:2011"
  type="static">
  <Period>
    <AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
      <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
      </ContentProtection>
      <Representation bandwidth="134878" id="audio">
        <SegmentList duration="4000" timescale="1000">
          <Initialization sourceURL="audio/init.mp4"/>
          <SegmentURL media="audio/seg-0000.m4f"/>
          <SegmentURL media="audio/seg-0001.m4f"/>
          <SegmentURL media="audio/seg-0002.m4f"/>
        </SegmentList>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

3.2 Incluir un objeto PlayReady (PRO) en mpD

Consulte la sección 2.1.2 anterior.

<?xml version="1.0" encoding="utf-8"?>

<MPD
  xmlns="urn:mpeg:DASH:schema:MPD:2011"
  xmlns:cenc="urn:mpeg:cenc:2013"
  xmlns:mspr="urn:microsoft:playready"
  minBufferTime="PT4.00S"
  profiles="urn:mpeg:dash:profile:isoff-live:2011"
  type="static">
  <Period>
    <AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
      <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
<cenc:pssh>AAAAAJoE8HmYQEKGq5LmW+CIX5UAAALq6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
<mspr:pro>6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</mspr:pro>
      </ContentProtection>
      <Representation bandwidth="134878" id="audio">
        <SegmentList duration="4000" timescale="1000">
          <Initialization sourceURL="audio/init.mp4"/>
          <SegmentURL media="audio/seg-0000.m4f"/>
          <SegmentURL media="audio/seg-0001.m4f"/>
          <SegmentURL media="audio/seg-0002.m4f"/>
        </SegmentList>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>