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 deContentKeyUsageRule@intendedTrackType
será único en un contrato de cifrado y no podrá utilizarse en varios elementosContentKeyUsageRule
. -
uno o más elementos secundarios
<cpix:AudioFilter>
o<cpix:VideoFilter>
, según el valor del atributoContentKeyUsageRule@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 atributoContentKeyUsageRule@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 atributoContentKeyUsageRule@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 yContentKeyUsageRule@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 |
Sí |
minPixels, hdrmaxPixels,minFps, maxFps (atributos opcionales) |
wcg |
<cpix : >AudioFilter |
Sí |
minChannels, maxChannels (atributos opcionales) |
|
<cpix : >KeyPeriodFilter |
Sí |
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>