Partilhar via


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 ambiente protegido (PE) é um conjunto de tecnologias que permite que o conteúdo protegido flua de e através do 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 caminho de mídia protegido (PMP) é um executável que é executado em um ambiente protegido.
  • Se um componente confiável na PE ficar 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 uma estiver disponível.

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

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

Ambiente Protegido

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

Para minimizar as 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. Uma 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 bibliotecas de vínculo dinâmico (DLLs) que contêm plug-ins de mídia, como decodificadores. Outros processos também estão sendo executados no modo de usuário, e vários drivers são carregados no kernel. Se não existir um mecanismo de confiança, existem as seguintes ameaças:

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

Conceção 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 componentes principais 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 devidamente assinado 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 do kernel ser carregado, o kernel verifica se ele é confiável. Caso contrário, os componentes fidedignos que já se encontram no PE recusam-se a processar conteúdos protegidos. Para permitir isso, os componentes PE executam periodicamente um handshake protegido criptograficamente com o kernel. Se um componente de 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 ficar comprometido, após o devido processo ele pode 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 caminho de mídia protegido (PMP) é o executável PE primário para o Media Foundation. O PMP é extensível, para que mecanismos de proteção de conteúdo de terceiros possam ser suportados.

O PMP aceita conteúdo protegido e políticas associadas de qualquer fonte da 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 fonte. Ele também suporta 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 que ele é passado para o PMP. O diagrama a seguir ilustra esse processo.

diagrama do caminho de mídia protegido

As 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 controla os ponteiros da interface através do limite do processo.

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

Todos os outros componentes do pipeline, como decodificadores e coletores de mídia, são criados no processo protegido. Se esses objetos expõem quaisquer interfaces personalizadas para aplicativos, eles devem fornecer um proxy/stub DCOM para organizar a interface.

Para impor a política sobre conteúdo protegido à medida que ele flui pelo pipeline, o PMP usa três tipos de componentes: autoridades de confiança de entrada (ITAs), autoridades de confiança de saída (OTAs) e objetos de política. Esses componentes trabalham juntos para conceder ou restringir direitos de uso de conteúdo e para 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 fiduciárias 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 desencriptador necessário para desencriptar o conteúdo.
  • Estabelece confiança com o módulo do kernel no ambiente protegido, para garantir que o ITA esteja sendo executado 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 fiduciárias de saída

Uma OTA está associada a uma saída confiável. A OTA expõe uma ação que a saída confiável pode executar no conteúdo, como reprodução ou cópia. O seu papel é aplicar um ou mais sistemas de proteção de saída que são exigidos pelo ITA. A OTA consulta o objeto de política fornecido pela ITA para determinar qual sistema de proteção deve ser aplicado.

Objetos de política

Um objeto de política encapsula os requisitos de proteção de conteúdo de uma ITA. Ele é usado pelo mecanismo de política para negociar o suporte à proteção de conteúdo com uma OTA. As OTAs consultam objetos de política para determinar quais sistemas de proteção devem ser aplicados em cada saída do conteúdo atual.

Criando objetos no PMP

Para criar um objeto no caminho de mídia protegido (PMP), 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 cumpridos antes que o conteúdo protegido possa ser processado no PMP. Primeiro, o conteúdo protegido deve ser enviado apenas para saídas confiáveis. Em segundo lugar, apenas as ações permitidas devem ser aplicadas a um fluxo. Em terceiro lugar, apenas sistemas de proteção de saída aprovados devem ser usados para reproduzir um fluxo. O mecanismo de políticas coordena entre ITA 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 conteúdo ASF (Advanced System Format) protegido pelo WMDRM (Gerenciamento de Direitos Digitais do Windows Media).

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 fonte de mídia ASF e a sessão PMP (caminho de mídia protegido). Media Foundation cria um processo PMP.
  2. O aplicativo cria uma topologia parcial que contém um nó de fonte de áudio conectado ao renderizador de áudio e um nó de fonte de vídeo conectado ao renderizador de vídeo aprimorado (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 um 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 Activation Objects.)
  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 nos ITAs e insere os desencriptadores na topologia imediatamente a jusante dos nós de origem correspondentes.
  6. O carregador de topologia insere os descodificadores de áudio e vídeo a jusante dos nós do desencriptador.
  7. O mecanismo de política verifica os nós inseridos para determinar se algum implementa o IMFTrustedOutput interface. O EVR e o renderizador de áudio implementam IMFTrustedOutput, porque enviam dados para fora do PMP.
  8. Cada ITA confirma que está sendo executado 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 da ITA e passando-o para a OTA. A OTA fornece uma lista dos sistemas de proteção suportados, e o objeto de política indica quais sistemas de proteção devem ser aplicados, juntamente com as configurações corretas. Em seguida, a OTA aplica essas configurações. Se não puder fazê-lo, o conteúdo é bloqueado.

Revogação e Renovação

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

Os componentes confiáveis são assinados usando um certificado criptográfico. A Microsoft publica uma GRL (lista global de revogação) que identifica os componentes que foram revogados. O GRL é assinado digitalmente para garantir a 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 é visualizado, os quadros descriptografados e não compactados viajam através de 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, pois eles viajam através do conector físico. Existem vários mecanismos de proteção para este fim, incluindo High-Bandwidth Proteção de Conteúdo Digital (HDCP) e Proteção de Conteúdo DisplayPort (DPCP). O vídeo OTA impõe essas proteções usando o Output Protection Manager (OPM). O Output Protection Manager envia comandos para o driver gráfico e o driver gráfico impõe quaisquer mecanismos de proteção de link exigidos pela política.

um diagrama que mostra a relação entre o vídeo OTA e OPM.

Sobre a Media Foundation

de arquitetura da Media Foundation

GPU-Based de Proteção de Conteúdo

Gerenciador de Proteção de Saída

Sessão de Imprensa PMP