PlayReady 安全停止

在 PlayReady 版本 3.0 中引入, PlayReady 安全停止 是一项功能,它为 PlayReady 设备提供一种功能,可以自信地向媒体流式处理服务断言媒体流式处理服务,即媒体播放已停止任何给定内容片段。 此功能可确保你的媒体流服务能够准确地执行和报告给定帐户在不同设备上的使用限制。

安全停止概述

当媒体播放停止时,客户端向安全停止服务器报告安全停止事件,无论是在媒体末尾还是用户停止了中间某个位置的媒体演示文稿。 报告安全停止事件时,在录制安全停止事件时,PlayReady 客户端可确保从内存中擦除内容密钥。 当上一个会话因系统或应用程序崩溃) 而意外 (结束时,还会报告安全停止。

注意

安全停止仅适用于非永久性许可证。

显示设备和许可证服务以及设备和安全停止服务之间的许可证请求的动画图像

发送安全停止挑战有两个主要方案:

  • 当媒体播放在末尾停止时,或者用户停止了中间某个位置的媒体演示文稿。
  • 在上一个会话意外结束时(如因系统或应用崩溃)。 应用需要在启动或关闭时查询任何未完成的安全停止会话,并将质询 () 与任何其他媒体播放分开。

有关 UWP 应用中的安全停止的信息,请参阅 PlayReady DRM 文章中的“添加安全停止”部分。

安全停止 2

从 PlayReady 版本 4.2 开始, PlayReady Secure Stop 2 通过在安全级别 3000 上的客户端上强制实施安全停止功能, (TEE) 提供更多的安全性。

服务可以使用 SecureStop 功能在属于同一用户帐户的多个客户端上强制播放。 根据该用户帐户中特定客户端的配置,服务将收到与客户端略有不同的消息。

下表显示了不同客户端安全级别和安全停止版本上的服务器应用逻辑。

客户端版本 SecureStop 服务器逻辑 稳定性
PlayReady 版本 2.0+
SL2000
服务器不会从客户端接收任何 SecureStop 消息。 使用应用逻辑执行此操作。
PlayReady 版本 3.0+
SL3000 (示例:Windows 10应用)
服务器从客户端接收 SecureStop1 消息。
针对攻击的此消息的可靠性高于简单的应用逻辑。
中型
PlayReady 版本 4.2+
SL3000
服务器从客户端接收 SecureStop2 消息。 来自此客户端的恶意 SecureStop2 消息需要对客户端的受信任执行环境 (TEE) 的攻击。
针对攻击的此消息的可靠性高于 SecureStop1。

若要利用安全停止 2 功能,服务器应用程序必须启用该功能,如下所示:

  • 使用 Secure Stop 颁发许可证时,在 MediaLicense 类上设置 SecureStop2AESKey 属性。 (无论客户端是否支持 Secure Stop 2.)
  • 创建一个类,该类实现 ISecureStop2Handler 接口 (与任何其他处理程序) 类似,这样,对于任何给定的 KID,它将返回在 MediaLicense 上设置 SecureStop2AESKey 属性时使用的相同密钥。
  • 调用 GetSecureStopData 后,在 SecureStopDataChallenge 类上查询 SecureStop2VerifiedSession 属性。 如果它设置为 Guid.Empty,则客户端发送了 SecureStop1 消息。 如果它设置为任何其他 Guid,则客户端发送了 SecureStop2 消息。 返回的 Guid 是 SecureStop2 质询中单个会话的会话 ID,它可以验证为非恶意 (假设客户端的受信任执行环境 (TEE) 未成功攻击) 。

另请参阅

安全停止服务器