Sistema simples de ponta a ponta

Em uso típico, o Microsoft PlayReady protege o conteúdo fornecendo licenças para arquivos de mídia. Não é necessário ocultar arquivos, torná-los inacessíveis ou colocar proteção especial em vigor quando os arquivos são transmitidos do sistema para o sistema. Em outras palavras, não há requisitos do sistema operacional ou mecanismos de transporte de arquivos de alta segurança necessários. No entanto, copiar um arquivo e dá-lo a um amigo não permitirá que esse amigo use o arquivo se ele estiver protegido pelo PlayReady. Para usar um arquivo de mídia, os usuários precisam de uma licença. Essa licença é o principal meio de exercer controle sobre o conteúdo (o arquivo de mídia). Uma licença é concedida a um único cliente (como um player de mídia) ou a um domínio. A licença não funcionará em outros clientes ou em outros domínios.

Cada licença contém direitos e restrições, definindo exatamente como o conteúdo pode ser usado e sob quais condições. Por exemplo, uma licença de arquivo de música pode habilitar um "direito de reprodução", mas restringir o nível de segurança do aplicativo no qual o conteúdo pode ser reproduzido. A licença pode ser válida para o período entre 1º de outubro de 2017 e 1º de novembro de 2017. Pode haver várias licenças para um único arquivo. Um usuário poderá acessar e usar seu conteúdo desde que uma das licenças conceda os direitos apropriados e as restrições não impeçam o acesso.

Visão geral de um serviço de vídeo de ponta a ponta

A ilustração a seguir contém uma visão de alto nível de um serviço de vídeo de ponta a ponta, incluindo o back-end do serviço à esquerda e os clientes à direita.

Arquitetura do Serviço de Vídeo

No lado esquerdo da ilustração, você pode ver que o serviço tem alguns servidores para transmitir o vídeo (rede de distribuição de conteúdo). Há também alguns Servidores que permitem que os usuários naveguem pelo conteúdo e escolham o conteúdo que desejam reproduzir (interface do usuário). Além disso, há alguns servidores que permitem que os usuários façam logon e sejam autenticados, bem como pagar por conteúdo (autenticar, pagar). Além disso, há também um Servidor de Licenças Do PlayReady.

No lado direito da ilustração estão os clientes. Os clientes podem ser aplicativos do Windows, aplicativos para smartphones ou dispositivos específicos, como decodificadores, receptores de sinal de rede e assim por diante. Alguns desses clientes podem vir com um cliente integrado do PlayReady em seus players, por exemplo, o OEM pode ter integrado o PlayReady no sistema operacional ou no hardware. Outros aplicativos podem vir com um cliente integrado ao aplicativo que é publicado na loja de aplicativos. Há muitas opções diferentes para os jogadores integrarem o PlayReady no lado do cliente.

Este tópico se concentrará no que o PlayReady faz para um serviço, conforme mostrado na figura a seguir.

O que o PlayReady faz para o serviço

O que o PlayReady fornece é uma maneira de um cliente solicitar licenças de um servidor, que fornece as chaves que protegem o conteúdo em um formulário protegido em uma rede aberta. A segunda coisa que PlayReady faz é entregar direitos e restrições de direitos ao cliente. Com o PlayReady, o serviço tem a capacidade de fornecer uma chave para reprodução de conteúdo, mas, por exemplo, só permite que o cliente use essa chave por dois dias em um cenário de aluguel. Portanto, o PlayReady fornece uma maneira de declarar direitos e restrições de direito com a chave.

O PlayReady também fornece uma maneira de armazenar com mais segurança a chave de conteúdo no lado do cliente para que o cliente possa usar essa chave de cliente para descriptografar o conteúdo para renderização, mas não permitir salvar conteúdo no modo claro e compartilhá-lo com outros usuários.

Para garantir que os clientes do PlayReady se comportem de maneira correta, o PlayReady requer implementações de hardware e software para seguir as regras de conformidade e robustez. Essas regras regem como um cliente deve se comportar quando descriptografa ou processa o conteúdo do PlayReady.  Eles também exigem que os clientes processem as restrições encontradas em uma licença corretamente.  Portanto, se um cliente receber instruções para usar a chave de conteúdo por no máximo 48 horas, o cliente deverá seguir essas instruções. Essas regras são fornecidas pela Microsoft nas Regras de Conformidade e Robustez e cabe ao desenvolvedor cliente impor essas regras em seus clientes.

Processo básico de criptografia e licenciamento

As etapas a seguir ilustram o processo de criptografia e licenciamento de ponta a ponta para conteúdo e como o PlayReady está envolvido no processo.

A figura a seguir contém um ativo - um arquivo de áudio/vídeo - que não foi criptografado. O método usado para criptografar o conteúdo é inteiramente compatível com o provedor de conteúdo e não é fornecido como parte do PlayReady.

Criptografando o arquivo de conteúdo

  1. Para criptografar esse arquivo, o serviço precisa usar um gerador de chaves em seu criptografador de conteúdo que gere uma nova chave de conteúdo que será usada para criptografar o conteúdo. Essa chave de conteúdo será entregue posteriormente do Servidor de Licença do PlayReady para o cliente para permitir a descriptografia do conteúdo e a renderização para o usuário. Junto com a chave de conteúdo, que é um valor privado, os serviços de criptografia também associam um KeyID (identificador de chave) - que é um GUID - à chave de conteúdo. O KeyID é um valor público.

  2. A chave e o KeyID são projetados no momento da criptografia e são armazenados em um sistema de gerenciamento de chaves, que normalmente é algum tipo de banco de dados. O PlayReady não fornece o sistema de gerenciamento de chaves, portanto, cabe ao serviço ou parceiro que cria o serviço com a emissora fornecer o sistema de gerenciamento de chaves.

  3. Além de armazenar a chave e o KeyID no sistema de gerenciamento de chaves, você também precisará atribuir o KeyID a um empacotador, que então gera um cabeçalho. Esse cabeçalho é formatado pelo serviço ou parceiro de acordo com a Especificação de Cabeçalho PlayReady e, em seguida, colocado em texto claro no cabeçalho do arquivo de conteúdo.

    Neste ponto, o áudio e o vídeo serão criptografados usando o KeyID e você terá um arquivo de conteúdo criptografado pronto para ser entregue a um cliente.

    Autenticando o usuário

  4. Agora, o cliente pode começar a consumir o conteúdo. A primeira coisa que o cliente provavelmente fará é autenticar o usuário no serviço, normalmente fornecendo um nome de logon e senha, mas qualquer outro mecanismo para autenticar o usuário e o dispositivo está bem. Normalmente, um token de sessão é retornado ao cliente depois que o usuário é verificado. Observe que qualquer mecanismo usado para autenticação de usuário, cabe inteiramente ao serviço como o usuário é autenticado; O PlayReady não fornece essa tecnologia.

    Distribuição de conteúdo

  5. Em seguida, o conteúdo é entregue ao cliente (por exemplo, o cliente começou a baixar parte do fluxo de dados que compõe o conteúdo). Em seguida, o cliente começa a analisar esse conteúdo e descobre que ele é criptografado e usa uma chave desconhecida, mas contém uma KeyID.

    Aquisição de licença

  6. Nesse ponto, o cliente enviará uma solicitação de aquisição de licença para o Servidor de Licenças.

  7. Em seguida, o servidor de licença interage com o serviço de autenticação para verificar o usuário. Normalmente, a primeira coisa que o Servidor de Licença faz é verificar se o cliente/usuário tem o direito para essa licença específica. E, novamente, o PlayReady não fornece esse layout (autenticação), apenas fornecemos o Servidor de Licença. O serviço de autenticação normalmente responderá com sim ou não, ou talvez sim com restrições (por exemplo, esse usuário tem o direito para este filme específico, mas apenas em uma qualidade inferior de vídeo porque o usuário não tem o nível de assinatura de maior qualidade - com base no valor que o usuário paga por mês).

  8. Em seguida, o Servidor de Licença solicita o valor da chave, com base na KeyID, do sistema de gerenciamento de chaves que armazena as chaves e o sistema de gerenciamento de chaves responde a essa solicitação. Só para reiterar, o PlayReady não fornece os componentes do sistema de gerenciamento de chaves, portanto, haverá uma solicitação proveniente do Servidor de Licenças do PlayReady para qualquer componente que o serviço tenha criado para armazenar as chaves.

  9. A chave é recebida pelo Servidor de Licenças e o Servidor de Licença pode entregar a licença. A resposta de licença protegida do PlayReady inclui o valor da chave e uma lista de direitos e suas restrições para o cliente aplicar.

    Embora essa demonstração mostre o servidor de licenças PlayReady fornecendo apenas uma chave, é possível que o servidor de licenças forneça um conjunto de licenças em uma resposta de concessão de licença. Várias licenças podem ser incluídas em uma transação, com cada licença fornecendo uma chave se o conteúdo estiver protegido com várias chaves ou se o serviço quiser fornecer várias chaves com antecedência porque, por exemplo, o serviço sabe que o usuário vai ouvir oito faixas em uma linha.

    Repositório de Licenças

  10. A outra parte da tecnologia que o PlayReady fornece é uma maneira de armazenar a chave e os direitos no cliente, que é chamado de Repositório de Licenças.

  The License Store is typically called the HDS because the structure of the License Store is a *hashed data store*. There can be multiple types of License Stores on a device — one application could contain its own HDS just to ensure that one company's HDS is not in the same file as another company's HDS. It is entirely up to the client developer to make this design choice. For example, using PlayReady on Windows, Microsoft chose to have one HDS for Internet Explorer and another for Microsoft Edge per site, as well as one for each Windows Universal App.

   The HDS can be stored in a persistent way, such as on the hard drive or persistent memory of the device, or it can be stored in a non-persistent way, such as in non-persistent memory. Therefore, when the License Server issues a license, it could set a property of the license indicating that the license should not be stored on the hard drive of the client, or in the case of a set top box or phone, that it should not be stored in persistent memory because, as a service, you don't want to have your licenses stored in persistent memory. In that case, just store the HDS in memory in the context of the player application, so as soon as the user closes the player application, the license and its rights will vanish.