Partilhar via


Embalagem e Entrega de Conteúdo

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

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

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

O processo de encriptação de conteúdo limpo consiste em definir uma ou várias chaves de encriptação, utilizar essas chaves para encriptar os bytes que constituem o próprio conteúdo e inserir um cabeçalho DRM no conteúdo (nos ficheiros do conteúdo ou no manifesto se o conteúdo tiver um).

Todo o conteúdo encriptado protegido por PlayReady deve ter um cabeçalho PlayReady inserido no ficheiro encriptado. Este cabeçalho PlayReady é usado por um cliente PlayReady para localizar ou adquirir uma licença para essa parte específica do conteúdo. Um cabeçalho PlayReady é composto de XML codificado em UTF-16. Ele inclui os identificadores de chave (KIDs) 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 empacote conteúdo limpo precisa implementar um gerador de cabeçalho PlayReady para criar o cabeçalho e incorporá-lo ao 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 seu empacotador:

  • Desenvolva-o você mesmo com base na especificação de cabeçalho PlayReady
  • Use a API do SDK do servidor PlayReady que gera um cabeçalho PlayReady. 
  • Use a API do 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 conteúdo de áudio e vídeo. Os tipos mais comuns de codificação usados com PlayReady são MPEG-4 AVC (H.264), High Efficiency Video Coding (HEVC), padrões 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 suportado no dispositivo cliente.

PlayReady versão 1 e 2 permite que você crie um pacote protegido contendo conteúdo que não está limitado a cargas úteis de áudio ou vídeo. Esses pacotes, chamados de envelopes, podem conter arquivos como uma coleção de arquivos de dados e executáveis (por exemplo, um aplicativo distribuído por uma loja de aplicativos), imagens (por exemplo, papel de parede de tela) ou ebooks. Este conteúdo é embalado encapsulando os ficheiros num ficheiro envelope, que pode ser desencriptado de forma semelhante ao conteúdo de áudio/vídeo.

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

Ferramentas de encriptação

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

Basicamente, você pode criar seu próprio empacotador ou trabalhar com qualquer tipo de criptografador de código aberto (como ffmpeg). Além disso, você pode trabalhar com uma empresa de codificadores profissional se quiser criptografar conteúdo com PlayReady (como Harmonic, Elemental, Ericsson, Wowza, Allegro).

Usando ferramentas de criptografia

O PlayReady suporta a norma de encriptação comum ISO IEC. Este processo é o mesmo descrito em Processo básico de criptografia e licenciamento, exceto que cabeçalhos serão incluídos para outros DRMs — cada um como a carga útil do elemento 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.

Diagrama de criptografia comum

Usando chaves de criptografia

Há muitas maneiras diferentes de criptografar seus ativos. O mais simples ao mais sofisticado depende de quanta complexidade você deseja projetar no sistema e quais são as necessidades do serviço.

Tomemos, por exemplo, um ativo de streaming adaptável, como mostra a figura abaixo. Tem quatro qualidades de vídeo diferentes, uma faixa de áudio e uma faixa de legenda. É codificado em ficheiros MP4 segmentados, com segmentos de 2,0 segundos cada. É um ativo que é servido em vários formatos, dependendo do que o cliente preferiria reproduzir. Smooth Streaming, HLS e DASH são as variantes mais comuns. Durante a reprodução, o cliente (o player de vídeo) vai 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 alta possível, dadas as restrições da largura de banda da rede, a velocidade de reprodução e outros recursos limitados, como as capacidades do jogador. Esta lógica é conhecida como reprodução adaptativa de streaming, regida por algumas regras heurísticas implementadas no leitor. 

Ativos de conteúdo e transmissã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 claro). Usar uma chave de conteúdo facilita a vida do Servidor de Licenças porque o Servidor de Licenças precisa entregar uma chave {KID, CK}. Essa chave normalmente é adquirida pelo cliente antes da reprodução iniciar.

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

Observação

Os clientes PlayReady podem adquirir licenças de forma proativa ou reativa. 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 algumas melhorias nos últimos anos para usar várias chaves por ativo, principalmente impulsionadas pela exigência de permitir que apenas certos clientes de maior robustez consumam conteúdo da mais alta qualidade. Com a chegada do conteúdo Ultra HD (4K), e com a adição de alta faixa dinâmica (HDR) para conteúdo de cores mais altas, houve uma necessidade por parte dos estúdios e serviços de permitir a mais alta qualidade apenas em determinados clientes, que normalmente têm hardware DRM embutido. Nesse cenário, o ativo é criptografado usando uma chave de conteúdo {kid1, ck1} para todas as faixas, exceto para a faixa 4K que é criptografada usando uma chave de conteúdo diferente {kid2, ck2}. Isso é:

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

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

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

Criptografando o ativo com uma chave por faixa

O serviço pode ter um mapa mais complexo de direitos a serem aplicados. 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 aplicaçã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 tenha permissão para jogar apenas 720p receberá uma licença PlayReady, incluindo {kid1, ck1}, {kid2, ck2} e {kidA, ckA}. 
  • Um cliente que tenha permissão para jogar até 4K receberá uma licença PlayReady, incluindo {kid1, ck1}, {kid2, ck2}, {kid3, ck3}, {kid4, ck4} e {kidA, ckA}. 
  • Um cliente que jogue 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ças

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 a assinantes. A alteração das chaves de encriptação nos limites do programa permite que o serviço entregue as chaves gratuitas {KIDi1, CKi1} a todos os utilizadores sem quaisquer restrições e entregue as chaves de conteúdo {kidi2, cki2} apenas aos subscritores que iniciaram sessão com êxito no serviço.

Observe que essa rotação de licença não é muito escalável: toda vez 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 alto pico de solicitações de licença em sistemas com um grande número de clientes. 

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

Alterar as chaves de criptografia com frequência — rotação de chaves escalável

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

Digamos que esse ativo seja a TV linear ao vivo. Quando o cliente tenta reproduzir, ele encontra kidRA no cabeçalho PlayReady do manifesto de fluxo e solicita uma licença para kidRA. O Servidor de Licenças 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}, ele pode obter o valor de ckA1 e descriptografar e renderizar o segmento A1. 

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

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

Ver também

Chaves e IDs de chave (KIDs)