Sistema de ponta a ponta simples

Em uso típico, 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 entregá-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 clientes à direita.

Video Service Architecture

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, além de pagar pelo conteúdo (autenticar, pagar). E também há um Servidor de Licenças PlayReady.

No lado direito da ilustração estão os clientes. Os clientes podem ser Windows aplicativos, aplicativos de smartphone ou dispositivos específicos, como caixas superiores definidas, receptores 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. Outras pessoas podem vir com um cliente integrado ao aplicativo 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.

What PlayReady Does For The Service

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 o PlayReady faz é entregar direitos e restrições corretas 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 corretas 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 do cliente para descriptografar o conteúdo para renderização, mas não permitir o salvamento de conteúdo na limpeza e compartilhá-la com outros usuários.

Para garantir que os clientes 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 o 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 é totalmente compatível com o provedor de conteúdo e não é fornecido como parte do PlayReady.

Encrypting the Content File

  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 do 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á ajustar o KeyID a um empacotador, que 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, instalado na clareza 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 que está pronto para ser entregue a um cliente.

    Authenticating the User

  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á bom. 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, ele é inteiramente até o serviço como o usuário é autenticado; O PlayReady não fornece essa tecnologia.

    Content Delivery

  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 que contém uma KeyID.

    License Acquisition

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

  7. O Servidor de Licença então interface 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 menor 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 no KeyID, do sistema de gerenciamento de chaves que armazena as chaves e o sistema de gerenciamento de chaves responde a essa solicitação. Apenas 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ça PlayReady para qualquer componente criado pelo serviço para armazenar as chaves.

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

    Embora essa demonstração mostre que o Servidor de Licença do PlayReady fornece apenas uma chave, é possível que o Servidor de Licença forneça uma pilha de licenças em uma resposta 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 entregar várias chaves com antecedência porque, por exemplo, o serviço sabe que o usuário ouvirá oito faixas seguidas.

    License Store

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

    O Repositório de Licenças normalmente é chamado de HDS porque a estrutura do Repositório de Licenças é um armazenamento de dados com hash. Pode haver vários tipos de Repositórios de Licenças em um dispositivo — um aplicativo pode conter seu próprio HDS apenas para garantir que o HDS de uma empresa não esteja no mesmo arquivo que o HDS de outra empresa. Cabe inteiramente ao desenvolvedor cliente fazer essa escolha de design. Por exemplo, usando o PlayReady no Windows, a Microsoft optou por ter um HDS para Internet Explorer e outro para Microsoft Edge por site, bem como um para cada Windows Aplicativo Universal.

    O HDS pode ser armazenado de maneira persistente, como no disco rígido ou memória persistente do dispositivo, ou pode ser armazenado de maneira não persistente, como na memória não persistente. Portanto, quando o Servidor de Licença emite uma licença, ele pode definir uma propriedade da licença indicando que a licença não deve ser armazenada no disco rígido do cliente, ou no caso de uma caixa superior definida ou telefone, que ela não deve ser armazenada em memória persistente porque, como um serviço, você não deseja ter suas licenças armazenadas em memória persistente. Nesse caso, basta armazenar o HDS na memória no contexto do aplicativo player, portanto, assim que o usuário fechar o aplicativo player, a licença e seus direitos desaparecerão.