Caminho de mídia protegido

Este tópico discute três tópicos inter-relacionados: ambiente protegido, gateway de interoperabilidade de mídia e revogação e renovação.

  • Um PE (ambiente protegido) é um conjunto de tecnologias que permite que o conteúdo protegido flua de e para o Windows Vista de forma protegida. Todos os componentes dentro de um ambiente protegido são confiáveis e o processo é protegido contra adulteração.
  • O PMP (caminho de mídia protegido) é um executável executado em um ambiente protegido.
  • Se um componente confiável no PE for comprometido, após o devido processo, ele será revogado. No entanto, a Microsoft fornece um mecanismo de renovação para instalar uma versão confiável mais recente do componente quando se torna disponível.

Para obter informações sobre componentes de mídia protegida de assinatura de código, consulte o white paper Assinatura de código para componentes de mídia protegida no Windows Vista.

Este tópico contém as seguintes seções:

Ambiente protegido

A proteção de conteúdo abrange várias tecnologias, cada uma das quais tenta garantir que o conteúdo não possa ser usado de maneira inconsistente com a intenção do proprietário ou do provedor de conteúdo. Essas tecnologias incluem proteção de cópia, proteção de link, acesso condicional e DRM (gerenciamento de direitos digitais). A base de cada um é a confiança: o acesso ao conteúdo é concedido somente a componentes de software que aderem aos termos de uso atribuídos a esse conteúdo.

Para minimizar ameaças contra conteúdo protegido, o Windows Vista e o Media Foundation Software permitem que o código confiável seja executado em um ambiente protegido. Um PE é um conjunto de componentes, diretrizes e ferramentas projetados para aumentar a proteção contra a pirataria de conteúdo.

Antes de examinar o PE mais de perto, é importante entender as ameaças que ele foi projetado para minimizar. Suponha que você esteja executando um aplicativo de mídia em um processo de modo de usuário. O aplicativo está vinculado às várias DLLs (bibliotecas de vínculo dinâmico) que contêm plug-ins de mídia, como decodificadores. Outros processos também estão em execução no modo de usuário e vários drivers são carregados no kernel. Se nenhum mecanismo de confiança estiver em vigor, as seguintes ameaças existirão:

  • O aplicativo pode acessar a mídia protegida diretamente ou invadir a memória do processo.
  • Os plug-ins podem acessar o conteúdo diretamente ou invadir a memória do processo.
  • Outros processos podem invadir a memória do processo de mídia diretamente ou injetando código.
  • Os drivers de kernel podem invadir a memória do processo de mídia.
  • O conteúdo pode ser enviado para fora do sistema por meio de um meio desprotegido. (A proteção de link foi projetada para atenuar essa ameaça.)

Design do Ambiente Protegido

Um ambiente protegido é executado em um processo protegido separado do aplicativo de mídia. O recurso de processo protegido do Windows Vista impede que outros processos acessem o processo protegido.

Quando um processo protegido é criado, os principais componentes do kernel identificam componentes e plug-ins não confiáveis para que o ambiente protegido possa se recusar a carregá-los. Um componente confiável é aquele que foi assinado adequadamente pela Microsoft. O kernel também rastreia módulos que são carregados nele, permitindo que o ambiente protegido pare a reprodução de conteúdo protegido se um módulo não confiável for carregado. Antes de um componente de kernel ser carregado, o kernel verifica se ele é confiável. Se não estiver, os componentes confiáveis que já estão no PE se recusarão a processar conteúdo protegido. Para habilitar isso, os componentes pe executam periodicamente um handshake protegido criptograficamente com o kernel. Se um componente do modo kernel não confiável estiver presente, o handshake falhará e indicará ao PE que existe um componente não confiável.

Se um componente confiável for comprometido, após o devido processo, ele poderá ser revogado. A Microsoft fornece um mecanismo de renovação para instalar uma versão confiável mais recente quando disponível.

Caminho de mídia protegido

O PMP (caminho de mídia protegido) é o executável pe primário para o Media Foundation. O PMP é extensível, para que os mecanismos de proteção de conteúdo de terceiros possam ter suporte.

O PMP aceita conteúdo protegido e políticas associadas de qualquer fonte do Media Foundation usando qualquer sistema de proteção de conteúdo, incluindo aqueles fornecidos por terceiros. Ele envia conteúdo para qualquer coletor do Media Foundation, desde que o coletor esteja em conformidade com as políticas especificadas pela origem. Ele também dá suporte a transformações entre a origem e o coletor, incluindo transformações de terceiros, desde que sejam confiáveis.

O PMP é executado em um processo protegido isolado do aplicativo de mídia. O aplicativo só tem a capacidade de trocar mensagens de comando e controle com o PMP, mas não tem acesso ao conteúdo depois de ser passado para o PMP. O diagrama a seguir ilustra esse processo.

diagrama do caminho de mídia protegido

Caixas sombreadas representam componentes que podem ser fornecidos por terceiros. Todos os componentes criados dentro do processo protegido devem ser assinados e confiáveis.

O aplicativo cria uma instância da Sessão de Mídia dentro do processo protegido e recebe um ponteiro para uma Sessão de Mídia proxy, que realiza marshaling de ponteiros de interface no limite do processo.

A fonte de mídia pode ser criada dentro do processo do aplicativo, conforme mostrado aqui, ou dentro do processo protegido. Se a fonte de mídia for criada dentro do processo do aplicativo, a origem criará um proxy para si mesma no processo protegido.

Todos os outros componentes de pipeline, como decodificadores e coletores de mídia, são criados no processo protegido. Se esses objetos exporem interfaces personalizadas para aplicativos, eles deverão fornecer um proxy/stub DCOM para realizar marshaling da interface.

Para impor a política sobre o conteúdo protegido à medida que flui pelo pipeline, o PMP usa três tipos de componentes: ITAs (autoridades de confiança de entrada), OTAs (autoridades de confiança de saída) e objetos de política. Esses componentes trabalham juntos para conceder ou restringir direitos de uso de conteúdo e especificar as proteções de link que devem ser empregadas ao reproduzir conteúdo, como HDCP (Proteção de Conteúdo Digital) de alta largura de banda.

Autoridades de confiança de entrada

Um ITA é criado por uma fonte de mídia confiável e executa várias funções:

  • Especifica os direitos de uso do conteúdo. Os direitos podem incluir o direito de reproduzir conteúdo, transferi-lo para um dispositivo e assim por diante. Ele define uma lista ordenada de sistemas de proteção de saída aprovados e as políticas de saída correspondentes para cada sistema. O ITA armazena essas informações em um objeto de política.
  • Fornece o descriptografador necessário para descriptografar o conteúdo.
  • Estabelece a confiança com o módulo de kernel no ambiente protegido, para garantir que o ITA esteja em execução dentro de um ambiente confiável.

Um ITA está associado a um fluxo individual que contém conteúdo protegido. Um fluxo pode ter apenas um ITA e uma instância de um ITA pode ser associada a apenas um fluxo.

Autoridades de confiança de saída

Um OTA está associado a uma saída confiável. O OTA expõe uma ação que a saída confiável pode executar no conteúdo, como reprodução ou cópia. Sua função é impor um ou mais sistemas de proteção de saída exigidos pelo ITA. O OTA consulta o objeto de política fornecido pelo ITA para determinar qual sistema de proteção ele deve impor.

Objetos de política

Um objeto de política encapsula os requisitos de proteção de conteúdo de um ITA. Ele é usado pelo mecanismo de política para negociar o suporte à proteção de conteúdo com um OTA. Objetos de política de consulta OTAs para determinar quais sistemas de proteção eles devem impor em cada saída do conteúdo atual.

Criando objetos no PMP

Para criar um objeto no PMP (caminho de mídia protegido), o IMFMediaSource chama IMFPMPHostApp::ActivateClassById, com a entrada especificada IStream formatada da seguinte maneira:

Format: (All DWORD values are serialized in little-endian order)
[GUID (content protection system guid, obtained from Windows.Media.Protection.MediaProtectionSystemId)]
[DWORD (track count, use the actual track count even if all tracks are encrypted using the same data, note that zero is invalid)]
[DWORD (next track ID, use -1 if all remaining tracks are encrypted using the same data)]
[DWORD (next track's binary data size)]
[BYTE* (next track's binary data)]
{ Repeat from "next track ID" above for each stream }

Visão geral da negociação de políticas

Há três requisitos fundamentais que devem ser atendidos antes que o conteúdo protegido possa ser processado no PMP. Primeiro, o conteúdo protegido deve ser enviado somente para saídas confiáveis. Em segundo lugar, somente as ações permitidas devem ser aplicadas a um fluxo. Em terceiro lugar, somente os sistemas de proteção de saída aprovados devem ser usados para reproduzir um fluxo. O mecanismo de política coordena entre ITAs e OTAs para garantir que esses requisitos sejam atendidos.

A maneira mais fácil de entender o processo é percorrer um exemplo simplificado que identifica as etapas necessárias para reproduzir o conteúdo do ASF (Formato Avançado do Sistema) protegido pelo WMDRM (Windows Media Digital Rights Management).

Quando um usuário inicia um aplicativo player e abre um arquivo ASF que tem um fluxo de áudio protegido e um fluxo de vídeo protegido, as seguintes etapas devem ser executadas:

  1. O aplicativo cria a origem da mídia ASF e a sessão pmp (caminho de mídia protegido). O Media Foundation cria um processo de PMP.
  2. O aplicativo cria uma topologia parcial que contém um nó de origem de áudio conectado ao renderizador de áudio e um nó de origem de vídeo conectado ao renderizador de vídeo avançado (EVR). Para os renderizadores, o aplicativo não cria diretamente o renderizador. Em vez disso, o aplicativo cria no processo desprotegido um objeto conhecido como objeto de ativação. O PMP usa o objeto de ativação para criar os renderizadores no processo protegido. (Para obter mais informações sobre objetos de ativação, consulte Objetos de Ativação.)
  3. O aplicativo define a topologia parcial na sessão PMP.
  4. A sessão PMP serializa a topologia e a passa para o host PMP no processo protegido. O host PMP envia a topologia para o mecanismo de política.
  5. O carregador de topologia chama IMFInputTrustAuthority::GetDecrypter nas ITAs e insere os descriptografadores na topologia imediatamente downstream dos nós de origem correspondentes.
  6. O carregador de topologia insere os decodificadores de áudio e vídeo downstream dos nós de descriptografia.
  7. O mecanismo de política examina os nós inseridos para determinar se algum implementa a interface IMFTrustedOutput . O EVR e o renderizador de áudio implementam IMFTrustedOutput, pois enviam dados fora do PMP.
  8. Cada ITA confirma que está em execução dentro de um processo protegido executando um handshake criptográfico com um módulo de kernel de ambiente protegido.
  9. Para cada fluxo, o mecanismo de política negocia a política obtendo um objeto de política do ITA e passando-o para o OTA. O OTA fornece uma lista dos sistemas de proteção compatíveis e o objeto de política indica quais sistemas de proteção devem ser aplicados, juntamente com as configurações corretas. Em seguida, o OTA aplica essas configurações. Se ele não puder fazer isso, o conteúdo será bloqueado.

Revogação e renovação

Um componente confiável poderá ser revogado se ele ficar comprometido ou for descoberto que está violando os contratos de licença sob os quais era inicialmente confiável. Existe um mecanismo de renovação para instalar uma versão mais recente e confiável do componente.

Componentes confiáveis são assinados usando um certificado criptográfico. A Microsoft publica uma GRL (lista de revogação global) que identifica os componentes que foram revogados. O GRL é assinado digitalmente para garantir sua autenticidade. Os proprietários de conteúdo podem garantir, por meio do mecanismo de política, que a versão atual do GRL esteja presente no computador do usuário.

Quando o conteúdo de vídeo premium é exibido, os quadros descriptografados e descompactados viajam por um conector físico para o dispositivo de exibição. Os provedores de conteúdo podem exigir que os quadros de vídeo sejam protegidos neste momento, à medida que viajam pelo conector físico. Existem vários mecanismos de proteção para essa finalidade, incluindo High-Bandwidth HDCP (Proteção de Conteúdo Digital) e DPCP (DisplayPort Content Protection). O OTA de vídeo impõe essas proteções usando o OPM ( Gerenciador de Proteção de Saída ). O Gerenciador de Proteção de Saída envia comandos para o driver de gráficos e o driver de gráficos impõe quaisquer mecanismos de proteção de vínculo exigidos pela política.

um diagrama que mostra a relação entre o vídeo ota e o opm.

Sobre o Media Foundation

Arquitetura Media Foundation

Proteção de conteúdo baseada em GPU

Gerenciador de Proteção de Saída

Sessão de Mídia PMP