Compartilhar via


Criptografia de conteúdo do PlayReady

Este tópico fornece uma visão geral dos algoritmos de criptografia usados para proteger o conteúdo no ecossistema do PlayReady.

Observação

Consulte o Glossário para obter termos e definições de criptografia.

Noções básicas de criptografia

A criptografia de chave simétrica é o tipo mais simples de criptografia. Com a criptografia de chave simétrica, a mesma chave é usada para criptografar o conteúdo e descriptografá-lo. Algoritmos de chave simétrica geralmente são pequenos e rápidos. Normalmente, a maior parte de qualquer tarefa de criptografia é tratada por alguma forma de criptografia de chave simétrica.

A criptografia de chave pública, em contraste, usa uma chave pública publicada para criptografar e uma chave privada secreta diferente para descriptografar. Portanto, se o usuário "A" fornecer ao usuário "B" uma chave pública, B poderá criptografar o conteúdo para A sem nenhuma outra informação. Não importa como o conteúdo seja transmitido, somente A poderá lê-lo. Os interceptadores de conteúdo não têm a chave privada (chave secreta) e não conseguem descriptografar a mensagem. Como a chave pública é disponibilizada abertamente, qualquer pessoa pode criptografar para A, mas somente A pode descriptografar. A criptografia de chave pública requer algoritmos computacionalmente complexos.

A criptografia de curva elíptica (ECC) é um algoritmo de criptografia de chave pública usado para criptografar e descriptografar conteúdo. É uma função computacionalmente complexa que descreve uma curva elíptica. Os componentes desse algoritmo são compartilhados como uma chave pública. Outros componentes, usados para descriptografia, formam a chave privada.

Códigos de autenticação de mensagem de uma chave (OMAC) é um código de autenticação de mensagem construído a partir de uma cifra de bloco. Há dois algoritmos OMAC, OMAC1 e OMAC2.

Os certificados são usados para garantir a autenticidade de entidades que não são confiáveis. O remetente de um certificado assina seu nome (identificador de dispositivo) usando sua chave privada. Em seguida, o destinatário do certificado verifica a assinatura do certificado com a chave pública do remetente para garantir a identidade do remetente. Como o remetente é o único proprietário da chave privada, é difícil criar uma chave privada dada uma chave pública e o certificado não será verificado corretamente, a menos que seja assinado com a chave privada; nesse caso, supõe-se que a fonte de dados esteja correta e a comunicação certificada seja segura.

Algoritmos de criptografia PlayReady

Algoritmos simétricos

Há suporte para os seguintes modos de criptografia AES:

  • Modo CTR do AES 128 – os sistemas PlayReady podem proteger arquivos e fluxos em que as amostras são criptografadas inteiramente ou em que apenas um padrão das amostras é criptografado, no modo de operação CTR. Eles incluem os modos de Criptografia Comum 'cenc' (Common Encryption Scheme) e 'cens' (Common Encryption Scheme usando um padrão de bytes não criptografados/criptografados), que são definidos no ISO/IEC 23001-7.

  • Modo CBC do AES 128 – os sistemas PlayReady que começam com a versão 4.0 podem proteger arquivos e fluxos totalmente ou parcialmente criptografados com uma chave de conteúdo do AES 128, no modo CBC de operação. Eles incluem os modos de Criptografia Comum 'cbc1' e 'cbcs' conforme definido no ISO/IEC 23001-7 e qualquer outro formato criptografado com uma chave de conteúdo AES 128 no modo CBC.

Observação

Os sistemas PlayReady com as versões 1.X, 2.X e 3.X só podem proteger arquivos criptografados no modo CTR (modo de Criptografia Comum 'cenc'). 'cens' não tem suporte. Os sistemas PlayReady com a versão 4.0 e superior podem proteger arquivos criptografados no modo CTR (modos de Criptografia Comum 'cenc') e no modo CBC (modos de Criptografia Comum 'cbcs'). Não há suporte para os outros modos 'cens' e 'cbc1'.

Algoritmos ECC

Os sistemas Microsoft PlayReady usam ECC (criptografia de curva elíptica) para criptografar chaves de conteúdo e assinar mensagens de protocolo.

  • Algoritmo ECC ElGamal – usado para chaves de conteúdo criptografadas.
  • ECDSA (algoritmo de assinatura digital de curva elíptica) – usado para assinar mensagens sempre que aplicável nos protocolos PlayReady.
  • NIST — Os sistemas Microsoft PlayReady usam algoritmos NIST padrão para criptografia ECC, quando aplicável e atualmente, estão usando a curva elíptica P-256.

Algoritmos de assinatura

Para licenças de assinatura, chaves transitórias ou dados, os sistemas PlayReady usam o AES OMAC1, que é equivalente a CMAC (Código de Autenticação de Mensagens baseada em Criptografia) e se tornou uma recomendação NIST em maio de 2005. As chaves são geradas aleatoriamente, mas os dados são hashados com SHA256 e, em seguida, o hash é assinado com ECC256.

Considerações sobre tempo de execução e desempenho

Quando a reprodução de conteúdo é disparada, o Cliente PlayReady deve executar algumas etapas antes que a reprodução inicial possa começar. Isso inclui localizar uma licença, associar ou interpretar a licença, descriptografar a chave de conteúdo e, por fim, preparar para descriptografar o conteúdo. A pilha do cliente PlayReady leva tempo para associar uma licença a um determinado conteúdo, e essa operação é necessária antes de iniciar a descriptografia e a renderização de conteúdo. Isso significa que o tempo para associar uma licença afeta o tempo até o primeiro quadro ao iniciar uma reprodução ou o intervalo entre uma faixa e outra. O desenvolvedor cliente, bem como o desenvolvedor de aplicativos, talvez queira considerar a otimização de seu código para problemas de runtime e desempenho, para reduzir o tempo para o primeiro quadro e permitir a reprodução sem lacunas.

Contêineres protegidos usam criptografia de chave simétrica para criptografar a maior parte do conteúdo. No entanto, a criptografia de chave pública é usada dentro da licença. Isso ocorre porque a licença contém a chave simétrica do conteúdo e o Servidor usa a chave pública do cliente para criptografar a chave simétrica do conteúdo.

Quando é hora de descriptografar o conteúdo, a chave privada do cliente é usada para descriptografar a chave simétrica da licença. Somente o cliente ao qual a licença está associada pode extrair a chave simétrica.

A descriptografia de chave privada é mais intensiva computacionalmente do que a descriptografia simétrica; portanto, a interpretação da licença é computacionalmente intensiva. Depois que a licença tiver sido tratada corretamente, a chave simétrica será descriptografada e o conteúdo poderá ser descriptografado usando algoritmos pequenos e rápidos.

Para aplicativos ou dispositivos restritos a recursos, a inicialização requer tempo e recursos significativos. No entanto, depois que isso for concluído, os recursos serão liberados, a descriptografia poderá continuar com eficiência e poucos ciclos de CPU ou recursos do sistema serão necessários.