Compartilhar via


Relógios Confiáveis do PlayReady

Um Relógio Confiável do PlayReady é um termo geral para um relógio que é usado para impor limitações baseadas no tempo definidas no conteúdo protegido do PlayReady em clientes PlayReady. Qualquer cliente que implemente um relógio confiável garante que um cliente que restrinja a reprodução a uma data e hora de início, uma data e hora de expiração ou data e hora de expiração após a primeira reprodução não possa ser adulterado usando ferramentas de hackers a um nível definido nas Regras de Robustez para Produtos PlayReady.

A Microsoft não exige que os desenvolvedores cliente usem um relógio confiável. No entanto, os clientes sem um relógio confiável não poderão gerenciar licenças com políticas baseadas em tempo, incluindo expiração. Como esse cenário é muito comum no setor (como aluguel ou assinatura), a Microsoft recomenda implementar um Relógio Confiável do PlayReady em todos os clientes.

Os desenvolvedores cliente podem escolher entre dois tipos de Relógios Confiáveis do PlayReady em seu design. Ambas permitem que você gerencie licenças com políticas baseadas em tempo:

  • Relógio Seguro do PlayReady
  • Relógio anti-reversão do PlayReady

Relógio Seguro do PlayReady

Um Relógio Seguro PlayReady é "um relógio de hardware em tempo real que foi projetado para resistir ao acesso não autorizado no nível definido nas Regras de Robustez", conforme definido no documento Termos Definidos para as Regras de Conformidade e Robustez para Produtos PlayReady.

De acordo com os requisitos das regras de conformidade para produtos PlayReady, um Relógio Seguro do PlayReady deve usar um Serviço de Relógio Seguro para definir seu valor. A Microsoft opera alguns Serviços de Relógio Seguro do PlayReady que os fabricantes de dispositivos podem usar para essa finalidade.

Relógio Seguro do PlayReady

Tempo do Servidor de Licença

A partir do PlayReady 4.5, o Serviço de Relógio Seguro pode ser o próprio servidor de aquisição de licença em que o SDK do PlayReady Server fornece o tempo durante a aquisição da licença.

Para usar essa funcionalidade, os seguintes requisitos devem ser atendidos:

  • O servidor e o cliente (incluindo TEE e REE) devem usar o PlayReady 4.5 ou superior.
  • O servidor e os aplicativos cliente devem estar cientes do recurso.
  • O cliente (no TEE e no REE) deve incluir o recurso Tempo Seguro no momento de compilação e implementar os métodos OEM_TEE associados, conforme documentado em comentários de código no Kit de Portabilidade de Dispositivo PlayReady.
  • O aplicativo cliente deve falar apenas com servidores de aquisição de licença que dão suporte e habilitam esse recurso OU também devem ser capazes de falar com um Serviço de Relógio Seguro externo.
  • O servidor deve ter um certificado de Tempo do Servidor de Licença fornecido pela Microsoft.
  • Se várias instâncias do servidor de aquisição de licença estiverem sendo usadas para fins de escalabilidade, os tempos do sistema operacional deverão ser sincronizados entre si.
  • Se licenças persistentes com restrições baseadas em tempo foram adquiridas antes do recurso ser habilitado (por exemplo, o cliente é atualizado de uma versão anterior do PlayReady para o PlayReady 4.5), o cliente e o servidor devem habilitar a reacessão dessas licenças depois que o recurso estiver em uso.

Um servidor habilita essa funcionalidade da seguinte maneira:

  • Construa uma instância da classe LicenseServerTimeCertificate com o certificado de Tempo do Servidor de Licença fornecido pela Microsoft e seu par de chaves correspondente.
  • Defina a propriedade LicenseServerTimeCertificate da classe LicenseResponse para essa instância. Observação: a definição dessa propriedade não terá efeito se o cliente não der suporte ao recurso, portanto, não será necessário bifurcar o código do aplicativo com base no suporte ao cliente.
  • (Opcional) Se a propriedade LicenseServerTimeRequested da classe LicenseAcquisitionChallenge retornar true, a resposta de licença pode, opcionalmente, não incluir licenças.
  • (Opcional) Se a propriedade somente leitura LicenseRequested da classe PlayReadyHeader retornar false, isso indica que o cliente não está solicitando nenhuma licença e pode fazer com que a lógica do aplicativo de servidor opte por agir com base nessas informações. (Isso significa que o Cabeçalho PlayReady v4.3.0.0 enviado do cliente tem o atributo opcional adicional LICENSEREQUESTED no nó PROTECTINFO definido como false.)

Um cliente habilita essa funcionalidade da seguinte maneira:

  • Inclua (tanto no TEE quanto no REE) o recurso Tempo Seguro no momento da compilação/ligação e implemente os métodos de OEM_TEE associados, conforme documentado em comentários de código no Kit de Portabilidade do PlayReady.
  • Quando qualquer API do PlayReady retornar DRM_E_SECURETIME_CLOCK_NOT_SET, realize uma aquisição de licença para definir o relógio seguro.
  • Quando qualquer API do PlayReady retornar DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE, execute a aquisição de licença para requisitar uma licença persistente que tenha sido invalidada. Isso só ocorrerá se licenças persistentes com restrições baseadas em tempo forem adquiridas antes do recurso ser habilitado (por exemplo, o cliente foi atualizado de uma versão anterior do PlayReady para o PlayReady 4.5).
  • (Opcional) Ao executar a aquisição de licença puramente com a finalidade de definir o relógio seguro, o aplicativo pode optar por usar um Cabeçalho PlayReady v4.3.0.0 com o atributo opcional adicional LICENSEREQUESTED no nó PROTECTINFO definido como false para indicar que nenhuma licença é necessária. Para obter mais informações, consulte a Especificação do Cabeçalho PlayReady.

Relógio anti-reversão do PlayReady

Um Relógio Anti-Reversão do PlayReady é "um relógio de tempo real que é verificado periodicamente pelo Produto Final do PlayReady para assegurar que ele tenha avançado", conforme definido no Documento de Termos Definidos para as Regras de Conformidade e Robustez para Produtos PlayReady

De acordo com os requisitos das Regras de Conformidade para Produtos PlayReady, um Relógio Anti-reversão do PlayReady pode usar qualquer fonte de tempo para definir seu valor. A confiança no relógio é fornecida pelo mecanismo anti-reversão interno do PK. O uso de um Serviço de Relógio Seguro do PlayReady para definir seu valor também é permitido. A Microsoft opera alguns Serviços de Relógio Seguro do PlayReady que os fabricantes de dispositivos podem usar para essa finalidade.

Relógio anti-reversão do PlayReady