SPEKEAPIv2 - Contrato de cifrado - Especificación de intercambio seguro de claves de empaquetador y codificador API

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

SPEKEAPIv2 - Contrato de cifrado

El contrato de cifrado define qué claves de contenido protegen a qué pistas dentro de un conjunto de streamset determinado, en función de las características de las pistas.

El uso de varias claves de contenido para diferentes pistas de un streamset, a pesar de ser una práctica recomendada en el sector, no es obligatorio, pero sí recomendable: al menos dos claves de contenido diferentes, una para las pistas de audio y otra para las pistas de vídeo. Es posible utilizar una única clave de contenido para cifrar varias pistas, pero el cifrador debe indicarlo explícitamente en el CPIX documento que envíe el cifrador al proveedor de la clave. En términos generales, el encriptador siempre describe con precisión cuántas claves de contenido se necesitan y cómo se aprovechan para cifrar las distintas pistas multimedia.

Principios

El contrato de cifrado se encuentra en la <cpix:ContentKeyUsageRuleList> sección del documento. CPIX En esta sección, cada clave de contenido definida en la sección <cpix:ContentKeyList> corresponde a un elemento <cpix:ContentKeyUsageRule> específico, que incluirá lo siguiente:

  • un atributo ContentKeyUsageRule@intendedTrackType que puede hacer referencia a uno o más subcomponentes, separados por el signo “+” si se utilizan varios subcomponentes. El valor de ContentKeyUsageRule@intendedTrackType será único en un contrato de cifrado y no podrá utilizarse en varios elementos ContentKeyUsageRule.

  • uno o más elementos secundarios <cpix:AudioFilter> o <cpix:VideoFilter>, según el valor del atributo ContentKeyUsageRule@intendedTrackType.

Las reglas que rigen esta relación son las siguientes:

  • Si todas las pistas de audio y vídeo del streamset deben protegerse con una clave de contenido única, la cadena 'ALL' debe utilizarse como valor de atributo ContentKeyUsageRule@intendedTrackType. El ejemplo 1 muestra un caso de uso de este tipo. En esta situación, deberán incluirse los elementos secundarios <cpix:AudioFilter /> y <cpix:VideoFilter /> sin ningún atributo. No es válida en este contexto concreto ninguna otra combinación de elementos <cpix:AudioFilter> y <cpix:VideoFilter>.

  • Para todos los demás casos de uso, el valor del atributo ContentKeyUsageRule@intendedTrackType se puede definir libremente y el número de elementos secundarios <cpix:AudioFilter /> y <cpix:VideoFilter /> deben corresponder al número de subcomponentes agregados mediante el signo “+”. Los ejemplos 2/3/4/5/6/7/9/10 ilustran este requisito cuando un único subcomponente está presente en el valor del atributo ContentKeyUsageRule@intendedTrackType. El ejemplo 8 lo ilustra cuando se utilizan varios subcomponentes: ContentKeyUsageRule@intendedTrackType="SD+HD" se describe mediante dos elementos secundarios <cpix:VideoFilter> distintos con valores de atributos diferentes y ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD" se describe mediante tres elementos secundarios <cpix:VideoFilter> distintos con valores de atributos diferentes.

Filtros

CPIXdefine varios elementos y atributos de filtrado, pero solo SPEKE admite un subconjunto de ellos. Se resumen en la siguiente tabla:

CPIXtipo de filtro SPEKESoporte general Filtra los atributos compatibles con SPEKE Los atributos de filtro no son compatibles con SPEKE

<cpix : >VideoFilter

minPixels, hdrmaxPixels,minFps, maxFps (atributos opcionales)

wcg

<cpix : >AudioFilter

minChannels, maxChannels (atributos opcionales)

<cpix : >KeyPeriodFilter

periodId (atributo obligatorio)

<cpix : >BitrateFilter

No

N/A

N/A

<cpix : >LabelFilter

No

N/A

N/A

Según la CPIX especificación VideoFilter, [minPixels,maxPixels] es un rango completo en ambas dimensiones, mientras que (minFps,maxFps] es inclusivo solo para la dimensión. maxFps Pues AudioFilter, [minChannels,maxChannels] es un rango inclusivo en ambas dimensiones.

Situaciones problemáticas

Hay situaciones en las que la información proporcionada en el contrato de cifrado puede ser parcial, ambigua o errónea. En estos casos, es importante que el encriptador y el proveedor de claves actúen de forma adecuada y garanticen una protección adecuada del contenido. En la siguiente tabla se presenta el comportamiento recomendado en estas situaciones:

En esta situación El encriptador debería/deberá... El proveedor de claves debería/deberá...

No se aplica ninguna regla a una o más pistas del streamset (consulte el ejemplo 3 a continuación)

El cifrador debe comprobar su configuración (externa a la CPIX carga útil) y comprobar que las pistas en cuestión no requieren cifrado. Si no es lo esperado, el encriptador debería generar un error y detener el procesamiento.

No es relevante: el proveedor de claves no conoce la estructura del streamset.

Varias reglas se superponen y sugieren múltiples claves de contenido para cifrar una pista específica

El cifrador debe aplicar las últimas que se hayan evaluado ContentKeyUsageRule correctamente en el orden del documento.

No es relevante: el proveedor de claves no conoce la estructura del streamset.

El contrato de cifrado cambia en un único ciclo de SPEKE solicitud/respuesta

El encriptador establecerá una excepción y detendrá el procesamiento, ya que el proveedor de claves no es responsable de definir el contrato de cifrado.

Para evitar que se produzca esta situación, el proveedor de claves no debe modificar un contrato de cifrado recibido en la CPIX carga útil de la solicitud. SPEKE

Contrato de cifrado mal formado: intendedTrackType /Filters, excepción de restricción de cardinalidad, filtros o atributos no compatibles

El cifrador deberá establecer una excepción, detener el procesamiento y no enviar la SPEKE solicitud al proveedor de claves, ya que lo más probable es que la protección del contenido sea errónea o que algunas pistas queden desprotegidas.

El proveedor de claves emitirá una excepción y devolverá un error de “Malformed encryption contract” (contrato de cifrado incorrecto).

Contrato de cifrado bien estructurado, pero que infringe las restricciones de los niveles de DRM seguridad: por ejemplo, se solicita una clave de contenido única para proteger tanto las pistas de audio como las pistas de vídeo UHD

Si el cifrador conoce las limitaciones de los niveles de DRM seguridad, debería hacer una excepción, detener el procesamiento y no enviar la SPEKE solicitud al proveedor de la clave, ya que lo más probable es que se traduzca en una protección del contenido errónea.

El proveedor de claves deberá establecer una excepción y devolverá el mensaje de error «No se admite el contrato de CPIX cifrado solicitado».

Contrato de cifrado faltante

El cifrador no enviará CPIX documentos que no contengan ningún elemento o elemento. VideoFilter AudioFilter

El proveedor de claves hará una excepción y devolverá el mensaje de error «Falta el contrato de CPIX cifrado».

Ejemplos de contratos de cifrado

Ejemplo 1: una clave de contenido para todas las pistas de audio y vídeo

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 2: una clave de contenido para todas las pistas de vídeo y una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 3: una clave de contenido para todas las pistas de vídeo y pistas de audio sin cifrar

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 4: varias claves de contenido para diferentes pistas de vídeo (SD/HD), una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 5: varias claves de contenido para diferentes pistas de vídeo (SD/HD/UHD), una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD video tracks (more than 1920x1080) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 6: varias claves de contenido para diferentes pistas de vídeo (SD/HD/UHD1/UHD2), una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" maxPixels="8847360" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD2 video tracks (more than 4096x2160) --> <cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="8847361" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 7: varias claves de contenido para diferentes pistas de vídeo (SD///HD1HD2UHD1/UHD2), una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD1 video tracks (more than 1024x576, up to 1280x720) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="921600" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD2 video tracks (more than 1280x720, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="cda406d8-9d87-4f76-92da-31110e756176" intendedTrackType="HD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="921601" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" maxPixels="8847360" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD2 video tracks (more than 4096x2160) --> <cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="8847361" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 8: varias claves de contenido para diferentes pistas de vídeo (basadas en varios tipos de atributos), una clave de contenido para todas las pistas de audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD and HD video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD+HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="442368" maxFps="30" hdr="false"/> <cpix:VideoFilter minPixels="442369" maxPixels="2073600" maxFps="30" hdr="false"/> </cpix:ContentKeyUsageRule> <!-- Rule for HDR, HFR and UHD video tracks--> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HDR+HFR+UHD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter hdr="true" /> <cpix:VideoFilter minFps="30" /> <cpix:VideoFilter minPixels="20736001" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 9: una clave de contenido para todas las pistas de vídeo y varias claves de contenido para las pistas de audio estéreo y audio multicanal

<cpix:ContentKeyUsageRuleList> <!-- Rule for video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <!-- Rule for stereo audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter maxChannels="2"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks--> <cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <AudioFilter minChannels="3"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Ejemplo 10: una clave de contenido para todas las pistas de vídeo, varias claves de contenido para audio estéreo y dos tipos de pistas de audio multicanal

<cpix:ContentKeyUsageRuleList> <!-- Rule for video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <!-- Rule for stereo audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter maxChannels="2"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks (3 to 6 channels)--> <cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO_3_6"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter minChannels="3" maxChannels="6"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks (7 channels and more)--> <cpix:ContentKeyUsageRule kid="81eb3761-55ff-4d22-a31d-94f01bbfd8ba" intendedTrackType="MULTICHANNEL_AUDIO_7"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter minChannels="7"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>