View a markdown version of this page

API SPEKE v2.1 - Personalizações e restrições à especificação DASH-IF - Especificação da API do Secure Packager and Encoder Key Exchange

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á.

API SPEKE v2.1 - Personalizações e restrições à especificação DASH-IF

A especificação CPIX 2.4 do DASH Industry Forum no DASH-IF site oferece suporte a vários casos de uso e topologias. A especificação da API SPEKE v2.1 define um perfil CPIX e uma API para CPIX. Para atingir esses dois objetivos, ele segue a especificação CPIX com as seguintes personalizações e restrições:

Perfil do CPIX
  • O SPEKE segue o fluxo de trabalho de criptografador e consumidor.

  • Para chaves de conteúdo criptografadas, o SPEKE aplica as seguintes restrições:

    • O SPEKE não oferece suporte à verificação de assinatura digital (XMLDSIG) para cargas de solicitação ou resposta.

    • O SPEKE exige 2048 certificados RSA-based .

  • O SPEKE usa somente um subconjunto de funcionalidades do CPIX:

    • O SPEKE omite a funcionalidade UpdateHistoryItemList. Se a lista estiver presente na resposta, o SPEKE vai ignorá-la.

    • O SPEKE omite a funcionalidade root/leaf principal. Se o atributo ContentKey@dependsOnKey estiver presente na resposta, o SPEKE vai ignorá-la.

    • O SPEKE omite o elemento BitrateFilter e o atributo VideoFilter@wcg. Se esses elementos ou atributos estiverem presentes na carga útil do CPIX, o SPEKE a ignorará.

  • Somente os elementos ou atributos referenciados como “Suportados” na página de componentes de carga útil padrão ou na página do contrato de criptografia podem ser usados em documentos CPIX trocados com o SPEKE v2.1.

  • Quando incluídos em uma solicitação CPIX pelo criptografador, todos os elementos e atributos devem conter um valor válido na resposta CPIX do provedor de chaves. Caso contrário, o criptografador deve parar e gerar um erro.

  • O SPEKE suporta a rotação de chaves com KeyPeriodFilter elementos. O SPEKE usa o ContentKeyPeriod@index para rastrear o período chave. No SPEKE v2.1, o criptografador também pode sinalizar o intervalo de tempo que um período chave cobre, além do. @index Para conteúdo ao vivo, use os ContentKeyPeriod@end atributos ContentKeyPeriod@start e (horários de início e término do relógio de parede). Para conteúdo VOD, use os ContentKeyPeriod@endOffset atributos ContentKeyPeriod@startOffset e.

  • Para sinalização HLS, vários DRMSystem.HLSSignalingData elementos devem ser usados: um com um valor de DRMSystem.HLSSignalingData@playlist atributo de 'media' e outro com um valor de DRMSystem.HLSSignalingData@playlist atributo de 'master'.

  • Ao solicitar chaves, o criptografador pode usar o atributo opcional @explicitIV no elemento ContentKey. O provedor de chaves pode responder com um IV usando @explicitIV, mesmo se o atributo não estiver incluído na solicitação.

  • O criptografador cria o identificador de chaves (KID), que permanece o mesmo para qualquer período de chave e ID de conteúdo. O provedor de chaves inclui o servidor KID na resposta ao documento da solicitação.

  • O criptografador deve incluir um valor para o atributo CPIX@contentId. Ao receber um valor vazio para esse atributo, o provedor da chave deve retornar um erro com a descrição 'Missing CPIX @contentId '. CPIX@contentIdo valor não pode ser substituído pelo provedor da chave.

    O valor CPIX@id, se não for nulo, deve ser ignorado pelo provedor da chave.

  • O criptografador deve incluir um valor para o atributo CPIX@version. Ao receber um valor vazio para esse atributo, o provedor da chave deve retornar um erro com a descrição “CPIX@version ausente”. Ao receber uma solicitação com uma versão não compatível, a descrição do erro retornada pelo provedor da chave deve ser “CPIX@version não compatível”.

    CPIX@versiono valor não pode ser substituído pelo provedor da chave.

  • O criptografador deve incluir um valor para o atributo ContentKey@commonEncryptionScheme para cada chave solicitada. Ao receber um valor vazio para esse atributo, o provedor da chave deve retornar um erro com a descrição 'Missing ContentKey @common EncryptionScheme for id KID'.

    Um documento CPIX exclusivo não pode misturar vários valores para atributos ContentKey@commonEncryptionScheme diferentes. Ao receber essa combinação, o provedor da chave deve retornar um erro com a descrição “Combinação ContentKey @common EncryptionScheme não compatível”.

    Nem todos os valores ContentKey@commonEncryptionScheme são compatíveis com todas as tecnologias DRM. Ao receber essa combinação, o provedor da chave deve retornar um erro com a descrição 'ContentKey@common EncryptionScheme não compatível com DRMSystemid'.

    ContentKey@commonEncryptionSchemeo valor não pode ser substituído pelo provedor da chave.

  • Ao receber valores diferentes para DRMSystem@PSSH e elemento DRMSystem.ContentProtectionData innerXML <pssh> no corpo da resposta CPIX, o criptografador deve parar e gerar um erro.

API para CPIX
  • O provedor da chave deve incluir um valor para o cabeçalho da resposta X-Speke-User-Agent HTTP.

  • Um SPEKE-compliant criptografador atua como um cliente e envia operações POST para o endpoint do provedor de chaves.

  • O criptografador deve incluir um valor para o cabeçalho da solicitação X-Speke-Version HTTP, com a versão SPEKE usada com a solicitação, formulada como, por exemplo MajorVersion.MinorVersion, '2.1' para SPEKE v2.1. Se o provedor da chave não for compatível com a versão SPEKE usada pelo criptografador para a solicitação atual, ele retornará um erro com a descrição “Versão SPEKE não compatível” e não tentará processar o documento CPIX da melhor maneira possível.

    O valor do cabeçalho X-Speke-Version definido pelo criptografador não pode ser modificado pelo provedor da chave na resposta à solicitação.

  • Ao receber erros no corpo da resposta, o criptografador deve gerar um erro e não repetir a solicitação com um versionamento do SPEKE v1.0.

    Se o provedor da chave não retornar um erro, mas falhar em retornar um documento CPIX que inclua as informações obrigatórias, o criptografador deverá parar e gerar um erro.

A tabela a seguir resume as mensagens padrão que devem ser retornadas pelo provedor da chave no corpo da mensagem. O código de resposta HTTP em casos de erro deve ser 4XX ou 5XX, nunca 200. O código de erro 422 pode ser usado para todos os erros relacionados a. SPEKE/CPIX

Caso de erro Mensagem de erro

CPIX@contentId não está definido

CPIX@contentId ausente

CPIX@version não está definido

CPIX@version ausente

CPIX@version não é suportado

CPIX@version não compatível

ContentKey@common não EncryptionScheme está definido

Falta ContentKey @common EncryptionScheme para KID id (onde id é igual ao valor ContentKey @kid)

Vários EncryptionScheme valores ContentKey @common usados em um único documento CPIX

Combinação ContentKey @common EncryptionScheme não compatível

ContentKey@common não EncryptionScheme é compatível com a tecnologia DRM

ContentKey@common EncryptionScheme não compatível com DRMSystem id (onde é id igual ao valor DRMSystem @systemId)

X-Speke-Version o valor do cabeçalho não é uma versão SPEKE suportada

Versão de SPEKE não compatível

O contrato de criptografia está malformado

Contrato de criptografia malformado

O contrato de criptografia contradiz as restrições dos níveis de segurança do DRM

O contrato de criptografia CPIX solicitado não é compatível

O contrato de criptografia não inclui VideoFilter nenhum AudioFilter elemento

Contrato de criptografia CPIX ausente