Relógios Confiáveis do PlayReady
Um Relógio Confiável PlayReady é um termo geral para um relógio que é usado para impor limitações baseadas em tempo definidas no conteúdo protegido do PlayReady em clientes PlayReady. Qualquer cliente que implementa 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 hacking para 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 PlayReady em cada cliente.
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 PlayReady
- Relógio anti-reversão do PlayReady
Relógio Seguro 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 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.
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 tempo de compilação e implementar os métodos de 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 deve ser capaz 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 de servidor de aquisição de licenças 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 requisiçã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 configuração dessa propriedade não terá efeito se o cliente não oferecer suporte ao recurso, portanto, não é 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 poderá incluir, opcionalmente, nenhuma licença.
- (Opcional) Se a propriedade licenseRequested somente leitura da classe PlayReadyHeader retornar false, o cliente indicou que nenhuma licença está sendo solicitada e a lógica do aplicativo de servidor pode optar por agir sobre essas informações. (Isso significa que o Cabeçalho do 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 tempo de compilação/link 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, execute a 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 requisir uma licença persistente que foi 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 de Cabeçalho do PlayReady.
Relógio anti-reversão do PlayReady
Um Relógio Anti-reversão do PlayReady é "um relógio em tempo real que é verificado periodicamente pelo Produto Final do PlayReady para ter avançado", 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 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.