Partilhar via


Empacotamento e entrega de conteúdo

A funcionalidade básica do PlayReady é proteger o conteúdo contra uso não autorizado. Para fazer isso, seu conteúdo deve ser criptografado primeiro e um Cabeçalho PlayReady associado será inserido no conteúdo. O sistema que faz essa operação é o empacotador, também conhecido como criptografador, que às vezes é integrado ao codificador.

Este tópico descreve várias maneiras de criptografar e fornecer seu conteúdo usando o PlayReady.

Empacotando o conteúdo do PlayReady — Criptografando e inserindo o cabeçalho DRM

O processo de criptografar conteúdo claro consiste em definir uma ou várias chaves de criptografia, usar essas chaves para criptografar os bytes que constituem o próprio conteúdo e inserir um cabeçalho DRM no conteúdo (nos arquivos do conteúdo ou no manifesto se o conteúdo tiver um).

Todo o conteúdo criptografado protegido pelo PlayReady deve ter um Cabeçalho PlayReady inserido no arquivo criptografado. Esse Cabeçalho PlayReady é usado por um cliente PlayReady para localizar ou adquirir uma licença para esse conteúdo específico. Um Cabeçalho PlayReady é composto por XML codificado em UTF-16. Ele inclui os KIDs (identificadores de chave) que são usados para criptografar o conteúdo, uma URL padrão que o cliente usará para adquirir uma licença se nenhuma outra for fornecida e quaisquer atributos personalizados.  

Qualquer empacotador que empacota conteúdo claro precisa implementar um gerador de cabeçalho PlayReady para criar o cabeçalho e inserê-lo no conteúdo criptografado. O cabeçalho PlayReady deve ser implementado de acordo com a Especificação de Cabeçalho do PlayReady. Há várias maneiras de criar um gerador de cabeçalho PlayReady no empacotador:

  • Desenvolva-o por conta própria com base na Especificação de Cabeçalho do PlayReady
  • Use a API do SDK do PlayReady Server que gera um cabeçalho PlayReady. 
  • Use a API de Windows 10 que gera um cabeçalho PlayReady. 

Seu conteúdo criptografado pode conter vários cabeçalhos DRM, incluindo cabeçalhos PlayReady, juntamente com cabeçalhos DRM de terceiros. Para obter mais informações sobre como isso funciona, consulte Usando ferramentas de criptografia.

Tipo de conteúdo

O PlayReady pode ser usado para proteger o conteúdo de áudio e vídeo. Os tipos mais comuns de codificação usados com o PlayReady são os padrões H.264 (H.264), HEVC (Codificação de Vídeo de Alta Eficiência) H.265 e o padrão AV1. O PlayReady não se limita a esses padrões e pode ser usado com qualquer formato de áudio e vídeo com suporte no dispositivo cliente.

O PlayReady versão 1 e 2 permite que você crie um pacote protegido contendo conteúdo que não esteja limitado a conteúdos de áudio ou vídeo. Esses pacotes, conhecidos como envelopes, podem conter arquivos como uma coleção de arquivos de dados e executáveis (por exemplo, um aplicativo distribuído por um repositório de aplicativos), imagens (por exemplo, papel de parede de tela) ou ebooks. Esse conteúdo é empacotado encapsulando os arquivos em um arquivo envelope, que pode ser descriptografado de maneira semelhante ao conteúdo de áudio/vídeo.

Esses tipos de conteúdo que não são de áudio/vídeo não têm mais suporte no PlayReady 3.0 e posterior. 

Ferramentas de criptografia

A Microsoft não inclui um empacotador como parte das entregas do PlayReady. Em vez disso, o PlayReady fornece especificações baseadas em padrões comuns de criptografia para uso por codificadores. Portanto, o formato de criptografia não é específico do PlayReady, mas sim uma função do formato de arquivo. O formato de criptografia mais usado atualmente é o formato Padrão ISO de Criptografia Comum, ISO/IEC 23001-7.

Basicamente, você pode criar seu próprio empacotador ou trabalhar com qualquer tipo de criptografador código aberto (como ffmpeg). Além disso, você pode trabalhar com uma empresa de codificador profissional se quiser criptografar conteúdo com o PlayReady (como Harmonic, Elemental, Ericsson, Wowza, Allegro). Serviços de Mídia do Azure também fornece uma funcionalidade de empacotamento para conteúdo claro.

Usando ferramentas de criptografia

O PlayReady dá suporte ao padrão de criptografia comum iso IEC. Esse processo é o mesmo descrito no processo básico de criptografia e licenciamento, exceto que os cabeçalhos serão incluídos para outros DRMs , cada um como o conteúdo da caixa Cabeçalho Específico do Sistema de Proteção ('pssh'), identificado pelo SystemID desse DRM. Todos esses cabeçalhos terão sua própria sintaxe que designa os KIDs ou as informações necessárias para acessar as chaves de conteúdo. E as chaves de conteúdo para esse ativo serão as mesmas para todos os DRMs.

Common Encryption Diagram

Usando chaves de criptografia

Há várias maneiras diferentes de criptografar seus ativos. A mais simples para a mais sofisticada depende de quanta complexidade você deseja projetar no sistema e quais são as necessidades do serviço.

Vamos usar, por exemplo, um ativo de streaming adaptável, conforme mostrado na figura abaixo. Ele tem quatro qualidades de vídeo diferentes, uma faixa de áudio e uma faixa de subtítulo. Ele é codificado em arquivos MP4 segmentados, com segmentos de 2,0 segundos cada. É um ativo que é servido em vários formatos, dependendo do que o cliente prefere reproduzir. Smooth Streaming, HLS e DASH são as variantes mais comuns. Durante a reprodução, o cliente (o player de vídeo) baixará sucessivamente os segmentos do ativo pela rede, selecionando para cada tempo de reprodução o segmento de vídeo da faixa de vídeo adequada, a fim de manter a qualidade de reprodução o mais alto possível, considerando as restrições da largura de banda da rede, a velocidade de reprodução e outros recursos limitados, como os recursos do player. Essa lógica é conhecida como reprodução de streaming adaptável, regida por algumas regras de heurística implementadas no player. 

Content Assets and Playback

Criptografar o ativo com apenas uma chave

A maneira mais simples de criptografar esses ativos seria usar uma única chave de conteúdo para criptografar tudo (normalmente, as legendas não são criptografadas — não é contra nenhuma regra, mas geralmente são mantidas em segredo). O uso de uma chave de conteúdo facilita a vida do Servidor de Licença porque o Servidor de Licença tem que fornecer uma chave {KID, CK}. Normalmente, essa chave seria adquirida pelo cliente antes da reprodução.

Content Assets and Encryption Keys (I)

Observação

Os Clientes PlayReady podem adquirir licenças proativa ou reativamente. Consulte a página Aquisição de Licença para obter uma descrição desses dois modos.

Criptografar o ativo com duas chaves, dedicando uma à mais alta qualidade

Houve alguns aprimoramentos nos últimos anos para usar várias chaves por ativo, impulsionados principalmente pela exigência de permitir que apenas determinados clientes de maior robustez consumam o conteúdo de maior qualidade. Com a chegada do conteúdo ultra HD (4K) e com a adição de HDR (alto intervalo dinâmico) para conteúdo de cores mais alto, havia a necessidade de estúdios e serviços para permitir a mais alta qualidade somente em determinados clientes, que normalmente têm o DRM de hardware interno. Nesse cenário, o ativo é criptografado usando uma chave de conteúdo {kid1, ck1} para todas as faixas, exceto para a faixa de 4K criptografada usando uma chave de conteúdo diferente {kid2, ck2}. Ou seja:

  • Um cliente que tem permissão para jogar somente até o Full HD (não a faixa de 4K) receberá uma licença do PlayReady, incluindo apenas {kid1, ck1}. 
  • Um cliente com permissão para jogar até 4K receberá uma licença do PlayReady, incluindo {kid1, ck1} e {kid2, ck2}.

Usando essa complexidade adicional, o serviço pode garantir que alguns clientes não consigam descriptografar a faixa de 4K e que a faixa de 4K pode ser reservada somente aos clientes em que o serviço mais confia. 

Content Assets and Encryption Keys (II)

Criptografar o ativo com uma chave por faixa

O serviço pode ter um mapa mais complexo dos direitos a serem aplicados. Alguns clientes, dependendo do tamanho da tela, sua robustez, suas saídas e sua localização, podem ter permissão para acessar apenas algumas faixas de vídeo, algumas qualidades de vídeo e algumas faixas de áudio. Para garantir que o serviço tenha total flexibilidade na imposição de um conjunto arbitrário de restrições no futuro, ele pode criptografar um ativo com uma chave de conteúdo específica para cada faixa. Por exemplo:

  • Um cliente que tem permissão para jogar apenas 720p receberá uma licença do PlayReady, incluindo {kid1, ck1}, {kid2, ck2}, e {kidA, ckA}. 
  • Um cliente com permissão para jogar até 4K receberá uma licença do PlayReady, incluindo {kid1, ck1}, {kid2, ck2}, {kid3, ck3}, {kid4, ck4} e {kidA, ckA}. 
  • Um cliente que joga offline a versão 4K do ativo (baixado anteriormente) receberá uma licença do PlayReady, incluindo {kid4, ck4} e {kidA, ckA}. 

Content Assets and Encryption Keys (III)

Alterando as chaves de criptografia periodicamente (ativo de vários períodos)— rotação de licença

Em alguns cenários, o serviço deseja alterar as chaves de criptografia ocasionalmente, normalmente nos limites do programa. Por exemplo, uma transmissão linear ao vivo tem vários períodos com conteúdo livre para o ar ao qual você deseja que todos tenham acesso, seguido por algum conteúdo restrito aos assinantes. Alterar as chaves de criptografia nos limites do programa permite que o serviço forneça as chaves de ar gratuitas {KIDi1, CKi1} para todos os usuários sem restrições e forneça as chaves de conteúdo {kidi2, cki2} somente para os assinantes que fizeram logon com êxito no serviço.

Observe que essa rotação de licença não é muito escalonável: sempre que as chaves de criptografia mudam, todos os clientes solicitam as novas chaves de criptografia usando sua própria solicitação de licença. Isso pode resultar em um pico alto de solicitações de licença em sistemas com um grande número de clientes. 

Content Assets and Encryption Keys (IV)

Alterando as chaves de criptografia com frequência – rotação de chave escalonável

Há um mecanismo avançado no PlayReady chamado rotação escalonável de chaves (em vez da rotação de licença). Esse método armazena um ELS (Embedded License Store) no fluxo do conteúdo real. Nesse mecanismo, a chave usada para criptografar o segmento A2 em si é chamada de chave folha {kidA2, ckA2}, e é entregue no ELS do segmento A2, sendo criptografada com uma chave separada que é a mesma para todos os segmentos da faixa A, chamada de chave raiz {kidRA, ckRA}. Se você estiver familiarizado com o MPEG-2 TS e a criptografia do Control Word, esse é um mecanismo semelhante, exceto que a criptografia é muito mais forte e também é mais flexível.

Digamos que esse ativo seja tv linear ao vivo. Quando o cliente tenta a reprodução, ele encontra o kidRA no Cabeçalho PlayReady do manifesto do fluxo e solicita uma licença para kidRA. O Servidor de Licença retorna uma licença raiz para a chave raiz {kidRA, ckRA}. Em seguida, o cliente analisa o segmento A1 e descobre o ELS no cabeçalho do segmento. Analisando este ELS, ele encontra a licença folha {kidA1, ckA1} neste ELS. Usando a chave raiz {kidRA, ckRA} e a licença folha {kidA1, ckA1}, ele pode obter o valor de ckA1 e descriptografar e renderizar o segmento A1. 

O recurso de rotação de chaves escalonável do PlayReady é extremamente escalonável porque não exige que os clientes entrem em contato com o Servidor de Licença sempre que as chaves de criptografia forem alteradas. Ele mantém o volume de solicitações de licença para o menor possível, pois um cliente precisa apenas de uma licença raiz do Servidor de Licença por fluxo ou acompanhar. Ele permite que as chaves de criptografia girem com a mesma frequência que cada segmento, normalmente a cada dois segundos, se necessário. 

Content Assets and Encryption Keys (V)

Confira também

KIDs (IDs de chave e chave)