Compartilhar 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 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 do Cabeçalho 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 do Windows 10 que gera um cabeçalho PlayReady. 

O 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 PlayReady são os padrões MPEG-4 AVC (H.264), HEVC (Codificação de Vídeo de Alta Eficiência) H.265 e o padrão AV1. O PlayReady não está limitado 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 de envelope, que pode ser descriptografado de maneira semelhante ao conteúdo de áudio/vídeo.

Esses tipos de conteúdo não á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 amplamente 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 de software livre (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).

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 a carga útil da caixa 'pssh', identificada pelo SystemID do 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. As chaves de conteúdo desse ativo serão as mesmas para todos os sistemas DRM.

Diagrama de Criptografia Comum

Usando chaves de criptografia

Há muitas 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 da 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 as funcionalidades do player. Essa lógica é conhecida como reprodução de streaming adaptável, regida por algumas regras de heurística implementadas no player. 

Ativos de conteúdo e reprodução

Criptografando 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 sigilo). O uso de uma chave de conteúdo facilita a vida útil do Servidor de Licenças porque o Servidor de Licença tem que entregar uma chave {KID, CK}. Essa chave normalmente seria adquirida pelo cliente antes de a reprodução ocorrer.

Ativos de conteúdo e chaves de criptografia (I)

Observação

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

Criptografando 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 alta robustez consumissem o conteúdo de mais alta 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 altas, 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 reproduzir 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 reproduzir 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 sejam capazes de descriptografar a faixa de 4K e que a faixa de 4K pode ser reservada apenas para os clientes em que o serviço mais confia. 

Ativos de conteúdo e chaves de criptografia (II)

Criptografar o ativo com uma chave por faixa

O serviço pode ter um mapa de direitos mais complexo a ser aplicado. Alguns clientes, dependendo do tamanho da tela, da robustez, das saídas e da 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 reproduzir apenas 720p receberá uma licença do PlayReady, incluindo {kid1, ck1}, {kid2, ck2} e {kidA, ckA}. 
  • Um cliente que tem 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 executando offline a versão 4K do ativo (baixado anteriormente) receberá uma licença PlayReady, incluindo {kid4, ck4} e {kidA, ckA}. 

Ativos de conteúdo e chaves de criptografia (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 gratuito ao 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 nenhuma restrição 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 são alteradas, 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. 

Ativos de conteúdo e chaves de criptografia (IV)

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

Existe um mecanismo avançado no PlayReady, chamado rotação escalonável de chaves (em oposição à rotação de licenças). 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 ela mesma 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 pelo fato de 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 identifica o kidRA no header PlayReady do manifesto de 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 de folha {kidA1, ckA1} neste ELS. Usando a chave raiz {kidRA, ckRA} e a licença folha {kidA1, ckA1}, ela 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 no menor nível possível, pois um cliente precisa apenas de uma licença raiz do Servidor de Licença por fluxo ou faixa. Ele permite que as chaves de criptografia sejam rotacionadas com a frequência de cada segmento, normalmente a cada dois segundos, se necessário. 

Ativos de conteúdo e chaves de criptografia (V)

Consulte também

Chave e IDs de Chave (KIDs)