受保护的媒体路径

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

  • 受保护的环境(PE)是一组技术,使受保护的内容能够以受保护的方式从 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,并采用以下格式设置指定的输入 I Stream:

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 媒体数字权限管理(WMDRM)保护的高级系统格式(ASF)内容所需的步骤。

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

  1. 应用程序创建 ASF 媒体源和受保护的媒体路径 (PMP) 会话。 媒体基础创建 PMP 过程。
  2. 应用程序创建一个部分拓扑,其中包含连接到音频呈现器的音频源节点,以及连接到增强视频呈现器(EVR)的视频源节点。 对于呈现器,应用程序不会直接创建呈现器。 相反,应用程序会在未受保护的进程中创建一个名为 激活对象的对象。 PMP 使用激活对象在受保护的进程中创建呈现器。 (有关激活对象的详细信息,请参阅 激活对象。)
  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-Based 内容保护

Output Protection Manager

PMP 媒体会话