Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico fornece uma visão geral sobre os modos de criptografia de conteúdo em sistemas PlayReady. Para obter uma visão geral sobre o PlayReady e a criptografia de conteúdo, consulte PlayReady Content Encryption. Consulte o Glossário para obter termos e definições de criptografia.
PlayReady versão 1.0 introduziu o modo de criptografia de conteúdo AES-128 CTR, além do modo de criptografia COCKTAIL específico da Microsoft usado anteriormente no WMDRM (Windows Media Digital Rights Management). O modo de criptografia de conteúdo AES-128 CTR usa chaves AES com comprimento de 128 bits nos arquivos de conteúdo no Modo de Contador (CTR).
A partir da versão 4.0, os sistemas PlayReady dão suporte a chaves de 128 bits do AES no Modo Contador (CTR) e no Modo de Encadeamento de Blocos (CBC).
Essa alteração garante que os serviços que usam o PlayReady possam aproveitar totalmente um fluxo exclusivo e um formato de arquivo em todos os dispositivos. Além disso, a Microsoft dá suporte ao padrão CMAF (Common Media Application Format), conforme definido no ISO/IEC FDIS 23000-19.
Modos comuns de criptografia
O ISO/IEC 23001-7 padrão ISO define quatro modos de Criptografia Comum.

Os clientes PlayReady que começam com a versão 4.0 dão suporte a chaves CBC do AES, que permitem suporte para o modo de Criptografia Comum 'cbcs', além das chaves CTR do AES para o modo de Criptografia Comum 'cenc'. Antes da versão 4.0, o modo CTR do AES era o principal suporte para os clientes PlayReady, permitindo o modo de Criptografia Comum 'cenc'. Observe que os modos de Criptografia Comum 'cens' e 'cbc1' são permitidos e tecnicamente factíveis em um ecossistema do PlayReady, mas não têm suporte.
Suporte para o esquema de criptografia 'AES-CBC cbcs'
Todos os clientes criados com base ou após o PlayReady PK versão 4.0 podem dar suporte a chaves CBC. No entanto, o suporte é opcional para clientes e sinalizado para servidores de licença por meio de uma propriedade adicional no protocolo de aquisição de licença.
| Versão | COCKTAIL | 'cenc' | 'cbcs' |
|---|---|---|---|
| PlayReady Client 1.0 | com suporte | com suporte | sem suporte |
| PlayReady Client 2.0 | com suporte | com suporte | sem suporte |
| PlayReady Client 2.5 | com suporte | com suporte | sem suporte |
| PlayReady Client 3.0 | sem suporte | com suporte | sem suporte |
| PlayReady Client 3.3 | sem suporte | com suporte | sem suporte |
| PlayReady Client 4.0 | sem suporte | com suporte | com suporte |
Observação
- Todas as unidades do Xbox One atualizadas com a versão 1709 ou superior dão suporte a 'cbcs'.
- Todos os Servidores de Licença do PlayReady a partir da versão 4.0 dão suporte à emissão de licenças com chaves CBC.
Sinalizando o ALGID no cabeçalho PlayReady
O Cabeçalho PlayReady é um documento XML geralmente incluído no cabeçalho de um arquivo de conteúdo ou fluxo. Ele descreve os atributos PlayReady necessários para um cliente descriptografar esse conteúdo. O header PlayReady tem sua própria especificação e controle de versão. Para obter mais informações, consulte PlayReady Header Specification.
| Versão | Cabeçalho PlayReady 4.3 | Cabeçalho PlayReady 4.2 | Cabeçalho PlayReady 4.1 | Cabeçalho PlayReady 4.0 |
|---|---|---|---|---|
| PlayReady Client 4.0 (consulte a observação 4) |
✔ | ✔ | ✔ | ✔ |
| PlayReady Client 3.3 (consulte a observação 3) |
✔ | ✔ | ✔ | |
| PlayReady Client 3.0 (consulte a observação 3) |
✔ | ✔ | ✔ | |
| PlayReady Client 2.5 (ver nota 2) |
✔ | ✔ | ||
| PlayReady Client 2.0 (ver nota 2) |
✔ | ✔ | ||
| PlayReady Client 1.0 (consulte a observação 1) |
✔ |
Observação
- (4) Xbox One versão 1709 ou superior são clientes PlayReady 4.X.
- (3) Windows 10, todas as versões, e Xbox One versão 1703 ou inferior são clientes do PlayReady 3.X. Os dispositivos não Windows mais recentes (por exemplo, Smart TVs) lançados após 2017 são clientes PlayReady 3.X.
- (2) Silverlight e Windows 8, 8.1 são clientes Do PlayReady 2.X. A maioria dos dispositivos não Windows (por exemplo, Smart TVs) lançados entre 2011 e 2017 são clientes Do PlayReady 2.X.
- (1) A maioria dos dispositivos não Windows (por exemplo, Smart TVs) lançados entre 2008 e 2011 são clientes PlayReady 1.X.
A seguir, um exemplo de um cabeçalho PlayReady v4.2.
<WRMHEADER
version="4.2.0.0"
xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
<KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
O ALGID (identificador de algoritmo) é uma propriedade do elemento KID e especifica o algoritmo de criptografia que foi usado para criptografar o conteúdo. A partir do PlayReady Header versão 4.2, o ALGID é necessário e deve ser definido como "AESCTR" ou "COCKTAIL". No entanto, a partir da versão 4.3, o ALGID também pode ser definido como o valor "AESCBC". O exemplo a seguir mostra a versão 4.3 do Cabeçalho PlayReady com os valores ALGID definidos como "AESCBC".
<WRMHEADER
version="4.3.0.0"
xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
<DATA>
<PROTECTINFO>
<KIDS>
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"/>
<KID VALUE="tuhDoKUN7EyxDPtMRNmhyA==" ALGID="AESCBC"/>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
A figura a seguir mostra um fluxo de conteúdo, em que a solicitação de licença é baseada no Cabeçalho PlayReady e o ALGID é especificado.

ALGIDs ausentes
A partir da versão 4.3 do cabeçalho PlayReady, o ALGID pode estar ausente. O exemplo a seguir mostra um Cabeçalho PlayReady versão 4.3 com valores ALGID ausentes.
<WRMHEADER
version="4.3.0.0"
xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader">
<DATA>
<PROTECTINFO>
<KIDS>
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="/>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
<DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
</DATA>
</WRMHEADER>
A figura a seguir mostra um fluxo de conteúdo, em que a solicitação de licença está usando o módulo CDMi e o ALGID está ausente.

Observação
Cada Cabeçalho PlayReady pode ter:
- Apenas um tipo de criptografia. Por exemplo, se ALGID="AESCTR", todas as chaves do cabeçalho serão usadas no modo CTR. Quando ALGID="AESCBC", todas as chaves para esse cabeçalho são usadas no modo CBC.
- Quando o ALGID está ausente, todas as chaves para esse cabeçalho são usadas no Modo de Contador ou Encadeamento de Bloco de Cifras, mas o valor não é inserido no cabeçalho.
- Fazer uma solicitação de aquisição de licença com um Cabeçalho PlayReady v4.3 para um Servidor de Licença abaixo da v4.0 gerará uma exceção.
- Uma resposta de licença pode incluir uma ou muitas licenças, em que cada licença contém uma chave e qualquer número de políticas.
Por que o valor de ALGID está ausente
A Microsoft recomenda que os criptografadores sempre incluam o mesmo valor ALGID no Cabeçalho PlayReady que eles incluíram ao processar o conteúdo.
Em um cenário padrão, o criptografador criptografa o conteúdo e gera o Cabeçalho PlayReady para o conteúdo. O criptografador sabe qual modo AES ele usou para criptografia; assim, ele inclui essas informações na propriedade ALGID do Cabeçalho PlayReady. Os clientes iniciam solicitações de licença com base em Cabeçalhos PlayReady analisados de conteúdo real, portanto, o valor ALGID é presente e válido.
Em alguns cenários, o cliente inicia uma solicitação de licença com base em um valor KID simples (um GUID de 128 bits). Nesse caso, o valor de ALGID no Cabeçalho PlayReady inserido na solicitação de licença estará ausente (também conhecido como não especificado). Um exemplo é quando o cliente faz uma solicitação de licença usando APIs EME HTML5.
Como o cliente lida com um ALGID ausente
Se o cliente iniciar uma solicitação de licença com base em um Cabeçalho PlayReady recebido, o valor ALGID na solicitação de licença refletirá o valor encontrado no cabeçalho, pois o processo de aquisição de licença inclui uma cópia do Cabeçalho PlayReady. Nesse caso:
- Para todos os Cabeçalhos PlayReady v4.2 ou inferiores, o valor ALGID é necessário e deve ser válido.
- Para cabeçalhos PlayReady v4.3 ou superiores, o valor ALGID pode estar presente e válido ou ausente.
Como o SDK do Servidor lida com um ALGID ausente
Todas as licenças entregues por meio de uma resposta de licença devem incluir um valor DEGID válido.
Se o ALGID não estiver especificado na solicitação de licença de entrada, o Servidor de Licença deverá obter essas informações do back-end do serviço e colocar o valor certo na resposta da licença.
IVs (Vetores de inicialização)
Nas versões 3.3 e anteriores do PlayReady, apenas IVs de 64 bits (IVs de 8 bytes) são suportados no modo CTR. A partir do PlayReady versão 4.0, há suporte para IVs de 64 bits e 128 bits (IVs de 8 bytes e 16 bytes) nos modos CTR e CBC.
Exemplos:
- Agora há suporte para fluxos compatíveis com HLS que usam frequentemente IVs de 128 bits no modo CBC.
- Agora há suporte para alguns fluxos compatíveis do HbbTV que usam IVs de 128 bits no modo CTR.
Limitações
- Um cabeçalho PlayReady deve usar apenas um valor ALGID para todos os elementos KID. Em outras palavras, todas as chaves usadas para criptografar as diferentes faixas e qualidades de um ativo devem ser AES CTR ou AES CBC. Se o ALGID estiver ausente em qualquer elemento KID, ele deverá estar ausente de todos os elementos KID.
- Antes do PlayReady versão 4.4, gerar uma licença com uma chave CBC quando o Certificado do Cliente de entrada for Windows e SL2000 gera uma exceção. Isso ocorre porque os clientes Windows dão suporte apenas ao CBC em unidades SL3000. Pode ser possível entregar uma licença com uma chave CBC para um Cliente SL2000; no entanto, isso se esse cliente for no mínimo a versão 4.0 do PlayReady e declarar suporte para o modo CBC.
- Gerar uma licença com uma chave CBC quando o Certificado do Cliente de entrada for um dispositivo que usa uma versão do Kit de Portabilidade antes da 4.0 gerará uma exceção.
- Gerar uma licença com uma chave CBC quando a solicitação de licença de entrada não indicar suporte para o AES CBC gerará uma exceção.
Importante
Os serviços não devem criptografar um único conteúdo no modo CTR e no modo CBC usando o mesmo {KID, Ck}.
- Por motivos funcionais, um cliente que adquiriu uma licença para {KID, Ck, AESCTR} e para {KID, Ck, AESCBC} não funcionaria.
- Por motivos de robustez, um invasor que tem acesso ao mesmo conteúdo criptografado com a mesma chave nos modos CBC e CTR poderia descriptografar conteúdo com mais facilidade sem autorização.