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 criptografia de chave simétrica, a mesma chave é usada para criptografar o conteúdo e descriptografá-lo. Os 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, por outro lado, usa uma chave pública publicada para criptografar e uma chave privada diferente e secreta para descriptografar. Assim, se o usuário "A" fornecer ao usuário "B" uma chave pública, B poderá criptografar 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ódigo de autenticação de mensagem única (OMAC) é um código de autenticação de mensagem construído a partir de uma criptografia 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, a fonte de dados é considerada correta e a comunicação certificada é segura.

Algoritmos de criptografia PlayReady

Algoritmos simétricos

Há suporte para os seguintes modos de criptografia do AES:

  • Modo CTR do AES 128 – os sistemas PlayReady podem proteger arquivos e fluxos em que os exemplos são criptografados na íntegra ou onde apenas um padrão dos exemplos são criptografados, no modo ctr de operação. 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'). Não há suporte para 'cens'. 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 (cbcs' dos modos de Criptografia Comum). Não há suporte para os outros modos 'cens' e 'cbc1'.

Algoritmos ECC

Microsoft PlayReady sistemas 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 — Microsoft PlayReady sistemas usam algoritmos NIST padrão para criptografia ECC quando aplicável e atualmente está usando a curva elíptica P-256.

Algoritmos de assinatura

Para licenças de assinatura, chaves transitórias ou dados, os sistemas PlayReady usam OMAC1 do AES, que é equivalente a CMAC (Código de Autenticação de Mensagem 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 hash com SHA256 e, em seguida, o hash é assinado com ECC256.

Considerações de desempenho e runtime

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, se preparar para descriptografar o conteúdo. A pilha do Cliente PlayReady leva tempo para associar uma licença a um 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 para o primeiro quadro ao iniciar uma reprodução ou a lacuna entre as faixas. O desenvolvedor do cliente, bem como o desenvolvedor de aplicativos, talvez queira considerar a otimização de seu código para problemas de desempenho e runtime, 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 é computacionalmente mais intensiva do que a descriptografia simétrica; portanto, a interpretação da licença é computacionalmente intensiva. Depois que a licença for 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. Quando isso for concluído, no entanto, os recursos serão liberados, a descriptografia poderá continuar com eficiência e poucos ciclos de CPU ou recursos do sistema são necessários.