As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
SPEKEAPIv2 - Contrato de criptografia
O contrato de criptografia define quais chaves de conteúdo estão protegendo quais faixas dentro de um determinado streamset, com base nas características das faixas.
O uso de várias chaves de conteúdo para faixas diferentes em um streamset, apesar de ser uma prática recomendada do setor, não é obrigatório, mas recomendado: pelo menos duas chaves de conteúdo diferentes, uma para faixas de áudio e outra para faixas de vídeo. É possível usar uma única chave de conteúdo para criptografar várias faixas, mas precisa ser explicitamente sinalizado no CPIX documento enviado pelo criptografador ao provedor da chave. De um modo geral, o criptografador sempre descreve com precisão quantas chaves de conteúdo são necessárias e como elas são usadas para criptografar as várias faixas de mídia.
Princípios
O contrato de criptografia está localizado na <cpix:ContentKeyUsageRuleList>
seção do CPIX documento. Nesta seção, cada chave de conteúdo definida na <cpix:ContentKeyList>
seção corresponde a um <cpix:ContentKeyUsageRule>
elemento específico, que deve incluir:
-
um
ContentKeyUsageRule@intendedTrackType
atributo que pode referenciar um ou mais subcomponentes, separados pelo sinal '+' se vários subcomponentes forem usados. O valor deContentKeyUsageRule@intendedTrackType
deve ser exclusivo em um contrato de criptografia e não pode ser usado em múltiplos elementosContentKeyUsageRule
. -
Um ou mais elementos
<cpix:AudioFilter>
ou elemento<cpix:VideoFilter>
secundário, dependendo do valor doContentKeyUsageRule@intendedTrackType
atributo.
As regras que regem esse relacionamento são as seguintes:
-
Quando todas as faixas de áudio e vídeo do streamset precisarem ser protegidas com uma chave de conteúdo exclusiva, a string
'ALL'
deve ser usada como valor do atributoContentKeyUsageRule@intendedTrackType
. O exemplo 1 mostra esse caso de uso. Nesta situação, elementos<cpix:AudioFilter />
e<cpix:VideoFilter />
secundários sem nenhum atributo devem ser incluídos. Qualquer outra combinação de<cpix:AudioFilter>
e/ou<cpix:VideoFilter>
elementos é inválida nesse contexto específico. -
Para todos os outros casos de uso, o valor do atributo
ContentKeyUsageRule@intendedTrackType
pode ser definido livremente, e o número de elementos<cpix:AudioFilter />
e<cpix:VideoFilter />
secundários devem corresponder ao número de subcomponentes agregados por meio do sinal “+”. Os exemplos 2/3/4/5/6/7/9/10 ilustram esse requisito, quando um único subcomponente está presente no valor do atributoContentKeyUsageRule@intendedTrackType
. O exemplo 8 ilustra isso quando vários subcomponentes são usados:ContentKeyUsageRule@intendedTrackType="SD+HD"
é descrito por dois elementos<cpix:VideoFilter>
secundários distintos com valores de atributos diferentes eContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"
é descrito por três elementos<cpix:VideoFilter>
secundários distintos com valores de atributos diferentes.
Filtros
CPIXdefine vários elementos e atributos de filtragem, mas SPEKE suporta somente um subconjunto deles. A tabela a seguir resume essas diferenças:
CPIXtipo de filtro | SPEKESuporte geral | Atributos de filtro suportados por SPEKE | Atributos de filtro não suportados pelo SPEKE |
---|---|---|---|
<clix : >VideoFilter |
Sim |
minPixels,maxPixels, hdr,minFps, maxFps (atributos opcionais) |
wcg |
<clix : >AudioFilter |
Sim |
minChannels, maxChannels (atributos opcionais) |
|
<clix : >KeyPeriodFilter |
Sim |
periodId (atributo obrigatório) |
|
<clix : >BitrateFilter |
Não |
N/D |
N/D |
<clix : >LabelFilter |
Não |
N/D |
N/D |
De acordo com a CPIX especificação de VideoFilter, [minPixels,maxPixels] é um intervalo com tudo incluído em ambas as dimensões, enquanto (minFps,maxFps] é inclusivo somente para a maxFps dimensão. Pois AudioFilter, [minChannels,maxChannels] é um intervalo inclusivo em ambas as dimensões.
Situações problemáticas
Há situações em que as informações fornecidas no contrato de criptografia podem ser parciais, ambíguas ou errôneas. Nesses casos, é importante que o criptografador e o provedor da chave se comportem adequadamente e garantam a proteção adequada do conteúdo. A tabela a seguir apresenta o comportamento recomendado nessas situações:
Nessa situação | O criptografador deve... | O provedor da chave deve... |
---|---|---|
Nenhuma regra se aplica a uma ou mais faixas no streamset (veja o exemplo 3 abaixo) |
O criptografador deve examinar sua configuração (externa à CPIX carga) e verificar se as faixas em questão não exigem criptografia. Se não corresponder à expectativa, o criptografador deve gerar um erro e interromper o processamento. |
Não relevante: o provedor da chave não tem conhecimento da estrutura do streamset. |
Várias regras se sobrepõem e sugerem várias chaves de conteúdo para criptografar uma faixa específica |
O criptografador deve aplicar a última avaliação ContentKeyUsageRule bem-sucedida na ordem do documento. |
Não relevante: o provedor da chave não tem conhecimento da estrutura do streamset. |
O contrato de criptografia muda em um único ciclo de SPEKE solicitação/resposta |
O criptografador deve levantar uma exceção e interromper o processamento, pois o provedor da chave não é responsável pela definição do contrato de criptografia. |
Para evitar que essa situação ocorra em primeiro lugar, o provedor da chave não deve modificar um contrato de criptografia recebido na CPIX carga útil da SPEKE solicitação. |
Contrato de criptografia malformado: intendedTrackType /Filters, exceção de restrição de cardinalidade, filtros ou atributos não suportados |
O criptografador deve gerar uma exceção, interromper o processamento e não enviar a SPEKE solicitação ao provedor da chave, pois isso provavelmente resultaria em proteção de conteúdo incorreta ou deixaria alguns rastros desprotegidos. |
O provedor da chave deve gerar uma exceção e retornar um erro de “contrato de criptografia malformado”. |
Contrato de criptografia bem formado, mas que viola as restrições dos níveis de DRM segurança: por exemplo, uma única chave de conteúdo sendo solicitada para proteger as faixas de áudio e as faixas de vídeo UHD |
Se o criptografador tiver conhecimento das restrições dos níveis de DRM segurança, ele deverá gerar uma exceção, interromper o processamento e não enviar a SPEKE solicitação ao provedor da chave, pois isso provavelmente resultaria em proteção de conteúdo incorreta. |
O provedor da chave deve gerar uma exceção e retornar um erro de “Contrato de CPIX criptografia solicitado não suportado”. |
Contrato de criptografia ausente |
O criptografador não deve enviar CPIX documentos que não contenham nenhum AudioFilter elemento VideoFilter ou. |
O provedor da chave deve gerar uma exceção e retornar um erro de “Contrato de CPIX criptografia ausente”. |
Exemplos de contratos de criptografia
Exemplo 1: uma chave de conteúdo para todas as faixas de áudio e 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>
Exemplo 2: uma chave de conteúdo para todas as faixas de vídeo, uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 3: uma chave de conteúdo para todas as faixas de vídeo e faixas de áudio não criptografadas
<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>
Exemplo 4: várias chaves de conteúdo para diferentes faixas de vídeo (SD/HD), uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 5: várias teclas de conteúdo para diferentes faixas de vídeo (SD/HD/UHD), uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 6: várias teclas de conteúdo para diferentes faixas de vídeo (SD/HD/UHD1/UHD2), uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 7: várias teclas de conteúdo para diferentes faixas de vídeo (SD///HD1/HD2UHD1/UHD2), uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 8: várias chaves de conteúdo para diferentes faixas de vídeo (baseadas em múltiplos tipos de atributos), uma chave de conteúdo para todas as faixas de áudio
<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>
Exemplo 9: uma chave de conteúdo para todas as faixas de vídeo, várias chaves de conteúdo para faixas de áudio estéreo e 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>
Exemplo 10: uma chave de conteúdo para todas as faixas de vídeo, várias chaves de conteúdo para estéreo e dois tipos de faixas de áudio 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>