受保护的媒体路径

本主题讨论三个相互关联的主题:受保护的环境、媒体互操作性网关以及吊销和续订。

  • 受保护的环境 (PE) 是一组技术,使受保护的内容能够以受保护的方式从 Windows Vista 流出和流经 Windows Vista。 受保护环境中的所有组件都受信任,并且进程受到保护,防止篡改。
  • (PMP) 的受保护媒体路径是在受保护的环境中运行的可执行文件。
  • 如果 PE 中受信任的组件遭到入侵,则经过适当程序后,将撤销该组件。 但是,Microsoft 提供了一种续订机制,用于在组件可用时安装更新的受信任版本。

有关对受保护的媒体组件进行代码签名的信息,请参阅 Windows Vista 中受保护媒体组件的代码签名白皮书。

本主题包含以下各节:

受保护的环境

内容保护包含多种技术,其中每一种技术都试图确保内容不能以与内容所有者或提供商的意图不一致的方式使用。 这些技术包括复制保护、链接保护、条件访问和数字版权管理 (DRM) 。 每个组件的基础都是信任:仅向遵守分配给该内容的使用条款的软件组件授予对内容的访问权限。

为了最大程度地减少对受保护内容的威胁,Windows Vista 和 Media Foundation Software 支持受信任的代码在受保护的环境中运行。 PE 是一组组件、指南和工具,旨在增强对内容盗版的保护。

在更仔细地研究 PE 之前,请务必了解其设计为最小化的威胁。 假设你在用户模式进程中运行媒体应用程序。 应用程序链接到包含媒体插件(如解码器)的各种动态链接库 (DLL) 。 其他进程也在用户模式下运行,内核中加载了各种驱动程序。 如果没有信任机制,则存在以下威胁:

  • 应用程序可以直接访问受保护的媒体或破解进程内存。
  • 插件可以直接访问内容或破解进程内存。
  • 其他进程可以直接或通过注入代码来破解媒体进程内存。
  • 内核驱动程序可以破解媒体进程内存。
  • 内容可能通过未受保护的媒体在系统外部发送。 (链接保护旨在缓解此威胁。)

受保护环境的设计

受保护的环境在媒体应用程序的单独受保护进程中运行。 Windows Vista 的受保护进程功能可阻止其他进程访问受保护的进程。

创建受保护的进程时,核心内核组件会识别不受信任的组件和插件,以便受保护的环境可以拒绝加载它们。 受信任的组件是由 Microsoft 正确签名的组件。 内核还跟踪加载到它的模块,使受保护的环境能够在加载不受信任的模块时停止播放受保护的内容。 在加载内核组件之前,内核会检查以确定它是否受信任。 如果不是,PE 中已有的受信任组件拒绝处理受保护的内容。 若要启用此功能,PE 组件会定期与内核执行受加密保护的握手。 如果存在不受信任的内核模式组件,则握手会失败,并会向 PE 指示存在不受信任的组件。

如果受信任的组件遭到入侵,在经过适当程序后,可以撤销该组件。 Microsoft 提供续订机制,用于在可用时安装较新的受信任版本。

受保护的媒体路径

受保护的媒体路径 (PMP) 是媒体基础的主要 PE 可执行文件。 PMP 是可扩展的,因此可以支持第三方内容保护机制。

PMP 使用任何内容保护系统(包括第三方提供的内容保护系统)接受来自任何媒体基础源的受保护内容和相关策略。 只要接收器符合源指定的策略,它就会将内容发送到任何 Media Foundation 接收器。 它还支持源与接收器之间的转换(包括第三方转换),只要它们受信任。

PMP 在与媒体应用程序隔离的受保护进程中运行。 应用程序只能与 PMP 交换命令和控制消息,但在将内容传递到 PMP 后无权访问内容。 下图演示了此过程。

受保护媒体路径示意图

阴影框表示可能由第三方提供的组件。 在受保护的进程中创建的所有组件都必须经过签名和信任。

应用程序在受保护的进程中创建媒体会话的实例,并接收指向代理媒体会话的指针,该指针跨进程边界封送接口指针。

媒体源可以在应用程序进程中创建,如下所示,也可以在受保护的进程中创建。 如果在应用程序进程中创建媒体源,则源会在受保护的进程中为自己创建代理。

所有其他管道组件(如解码器和媒体接收器)都是在受保护的进程中创建的。 如果这些对象公开应用程序的任何自定义接口,它们必须提供 DCOM 代理/存根来封送接口。

为了在受保护内容流经管道时对其强制实施策略,PMP 使用三种类型的组件:输入信任机构 (ITA) 、输出信任机构 (OTA) 和策略对象。 这些组件协同工作来授予或限制使用内容的权限,并指定在播放内容时必须采用的链接保护,例如高带宽数字内容保护 (HDCP) 。

输入信任机构

ITA 由受信任的媒体源创建,并执行多个功能:

  • 指定使用内容的权限。 权限可以包括播放内容、将其传输到设备等的权利。 它定义了已批准的输出保护系统的有序列表,以及每个系统的相应输出策略。 ITA 将此信息存储在策略对象中。
  • 提供解密内容所需的解密器。
  • 与受保护环境中的内核模块建立信任关系,以确保 ITA 在受信任的环境中运行。

ITA 与包含受保护内容的单个流相关联。 一个流只能有一个 ITA,而 ITA 的实例只能与一个流相关联。

输出信任机构

OTA 与受信任的输出相关联。 OTA 公开受信任的输出可以对内容执行的操作,例如播放或复制。 其作用是强制实施 ITA 所需的一个或多个输出保护系统。 OTA 查询 ITA 提供的策略对象,以确定它必须强制实施哪个保护系统。

策略对象

策略对象封装 ITA 的内容保护要求。 策略引擎使用它与 OTA 协商内容保护支持。 OTA 查询策略对象以确定它们必须对当前内容的每个输出强制执行哪些保护系统。

在 PMP 中创建对象

若要在受保护媒体路径 (PMP) 创建对象, IMFMediaSource 调用 IMFPMPHostApp::ActivateClassById,其指定输入 IStream 采用以下格式:

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 }

策略协商概述

在 PMP 中处理受保护的内容之前,必须满足三个基本要求。 首先,受保护的内容必须仅发送到受信任的输出。 其次,只有允许的操作必须应用于流。 第三,只有批准的输出保护系统才能播放流。 策略引擎在 ITA 和 OTA 之间进行协调,以确保满足这些要求。

了解过程的最简单方法是演练一个简化的示例,该示例标识在受 Windows Media 数字版权管理 (WMDRM) 保护的高级系统格式) (ASF) 内容所需的步骤。

当用户启动播放器应用程序并打开具有受保护音频流和受保护视频流的 ASF 文件时,必须执行以下步骤:

  1. 应用程序在 PMP) 会话 (创建 ASF 媒体源和受保护的媒体路径。 Media Foundation 创建 PMP 进程。
  2. 应用程序创建一个部分拓扑,其中包含连接到音频呈现器的音频源节点,以及连接到增强视频呈现器的视频源节点 (EVR) 。 对于呈现器,应用程序不会直接创建呈现器。 相反,应用程序会在未受保护的进程中创建一个名为 “激活对象”的对象。 PMP 使用激活对象在受保护的进程中创建呈现器。 (有关激活对象的详细信息,请参阅 Activation Objects.)
  3. 应用程序在 PMP 会话上设置部分拓扑。
  4. PMP 会话序列化拓扑,并将其传递到受保护进程中的 PMP 主机。 PMP 主机将拓扑发送到策略引擎。
  5. 拓扑加载程序在 ITA 上调用 IMFInputTrustAuthority::GetDecrypter ,并将解密器插入到紧邻相应源节点下游的拓扑中。
  6. 拓扑加载程序将音频和视频解码器插入解密器节点的下游。
  7. 策略引擎扫描插入的节点,以确定是否有任何实现 IMFTrustedOutput 接口。 EVR 和音频呈现器都实现 IMFTrustedOutput,因为它们在 PMP 外部发送数据。
  8. 每个 ITA 通过对受保护的环境内核模块执行加密握手来确认它在受保护的进程中运行。
  9. 对于每个流,策略引擎通过从 ITA 获取策略对象并将其传递给 OTA 来协商策略。 OTA 提供它所支持的保护系统列表,策略对象指示必须应用哪些保护系统以及正确的设置。 然后,OTA 会应用这些设置。 如果无法执行此操作,则会阻止内容。

吊销和续订

如果受信任的组件遭到入侵或被发现违反了最初信任该组件的许可协议,则可以撤销该组件。 存在续订机制来安装更新、更受信任的组件版本。

受信任的组件使用加密证书进行签名。 Microsoft (GRL) 发布全局吊销列表,用于标识已吊销的组件。 GRL 经过数字签名,以确保其真实性。 内容所有者可以通过策略机制确保用户计算机上存在当前版本的 GRL。

查看高级视频内容时,解密的未压缩帧通过物理连接器传送到显示设备。 此时,内容提供商可能需要对视频帧进行保护,因为它们通过物理连接器传输。 为此,存在各种保护机制,包括High-Bandwidth数字内容保护 (HDCP) 和 DisplayPort 内容保护 (DPCP) 。 视频 OTA 通过使用 输出保护管理器 (OPM) 强制实施这些保护。 输出保护管理器将命令发送到图形驱动程序,图形驱动程序强制执行策略所需的任何链接保护机制。

显示视频 ota 和 opm 之间的关系的关系图。

关于媒体基础

Media Foundation 体系结构

基于 GPU 的内容保护

输出保护管理器

PMP 媒体会话