Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico fornece uma visão geral dos algoritmos de criptografia usados para proteger o conteúdo no ecossistema PlayReady.
Observação
Consulte Glossário para termos e definições de criptografia.
Noções básicas de criptografia
A criptografia de chave simétrica é o tipo mais simples de encriptação. Com criptografia de chave simétrica, a mesma chave é usada para criptografar o conteúdo e descriptografá-lo. Os algoritmos de chave simétrica são geralmente 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. Assim, se o usuário "A" dá ao usuário "B" uma chave pública, B pode criptografar o conteúdo para A sem qualquer outra informação. Independentemente da forma como o conteúdo é transmitido, apenas A poderá lê-lo. Os intercetadores de conteúdo não têm a chave privada (chave secreta) e não conseguem desencriptar a mensagem. Como a chave pública é disponibilizada abertamente, qualquer pessoa pode criptografar para A, mas apenas 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 que é 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 desencriptação, formam a chave privada.
One-key Message Authentication Codes (OMAC) é um código de autenticação de mensagem construído a partir de uma cifra de bloco. Existem dois algoritmos OMAC, OMAC1 e OMAC2.
Os certificados são usados para garantir a autenticidade de entidades nã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; Neste caso, presume-se que a fonte de dados está correta e que a comunicação certificada é segura.
Algoritmos de encriptação PlayReady
Algoritmos simétricos
Os seguintes modos de encriptação AES são suportados:
Modo CTR AES 128 — Os sistemas PlayReady podem proteger arquivos e fluxos onde as amostras são criptografadas na íntegra ou onde apenas um padrão das amostras é criptografado, no modo CTR de operação. Estes incluem os modos de encriptação comum «cenc» (Esquema Comum de Encriptação) e «cens» (Esquema Comum de Encriptação utilizando um padrão de bytes não encriptados/encriptados), definidos na norma ISO/IEC 23001-7.
Modo CBC AES 128 — Os sistemas PlayReady a partir da versão 4.0 podem proteger arquivos e fluxos total ou parcialmente criptografados com uma chave de conteúdo AES 128, no modo de operação CBC. Estes incluem os modos de encriptação comum 'cbc1' e 'cbcs', conforme definido na ISO/IEC 23001-7, e qualquer outro formato encriptado com uma chave de conteúdo AES 128 no modo CBC.
Observação
Os sistemas PlayReady com versões 1.X, 2.X e 3.X só podem proteger ficheiros encriptados no modo CTR (Common Encryption mode 'cenc'). 'cens' não é suportado. Os sistemas PlayReady com versão 4.0 e superior podem proteger os ficheiros encriptados no modo CTR (modos de encriptação comum 'cenc') e no modo CBC (modos de encriptação comum 'cbcs'). Os outros modos 'cens' e 'cbc1' não são suportados.
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 criptografado.
- ECDSA (Elliptic curve digital signature algorithm) — 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á usando a curva elíptica P-256.
Algoritmos de assinatura
Para assinar licenças, chaves transitórias ou dados, os sistemas PlayReady usam AES OMAC1, que é equivalente ao CMAC (Código de Autenticação de Mensagens Baseado em Cifra) e se tornou uma recomendação do NIST em maio de 2005. As chaves são geradas aleatoriamente, mas os dados são colocados em hash 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 é acionada, o Cliente PlayReady deve executar algumas etapas antes que a reprodução inicial possa começar. Isso inclui encontrar uma licença, vincular ou interpretar a licença, descriptografar a chave de conteúdo e, finalmente, preparar-se para descriptografar o conteúdo. A stack do PlayReady Client demora um pouco a vincular uma licença ao conteúdo, e essa operação é necessária antes de iniciar a descodificação e renderização do conteúdo. Isso significa que o tempo para associar uma licença afeta o tempo até o primeiro frame ao iniciar uma reprodução ou o intervalo entre as faixas. O desenvolvedor cliente, bem como o desenvolvedor de aplicativos, pode querer considerar a otimização de seu código para problemas de tempo de execução e desempenho, para reduzir o tempo até o primeiro quadro e permitir a reprodução sem interrupções.
Os 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 desencriptar o conteúdo, a chave privada do cliente é usada para desencriptar a chave simétrica da licença. Somente o cliente ao qual a licença está vinculada pode extrair a chave simétrica.
A desencriptação de chave privada é computacionalmente mais intensiva do que a desencriptação simétrica; portanto, a interpretação da licença é computacionalmente intensiva. Uma vez que a licença tenha sido tratada corretamente, a chave simétrica é desencriptada e o conteúdo pode ser desencriptado usando algoritmos pequenos e rápidos.
Para aplicações ou dispositivos com recursos limitados, o arranque requer tempo e recursos significativos. Uma vez que isso esteja concluído, no entanto, os recursos são liberados, a descriptografia pode prosseguir de forma eficiente e poucos ciclos de CPU ou recursos do sistema são necessários.