PlayReady 受信任的时钟
PlayReady 受信任时钟是时钟的一般术语,用于强制在 PlayReady 客户端上对 PlayReady 受保护内容设置基于时间的限制。 实现受信任时钟的任何客户端可确保将播放限制为开始日期和时间、到期日期和时间或首次播放后的到期日期和时间的客户端不能篡改使用黑客工具在 PlayReady 产品的可靠规则中定义的级别。
Microsoft 不需要客户端开发人员使用受信任的时钟。 但是,不允许没有受信任时钟的客户端使用基于时间的策略管理许可证,包括过期。 由于此方案在行业 ((如租赁或订阅) )中非常常见,因此 Microsoft 建议在每个客户端中实现 PlayReady 受信任时钟 。
客户端开发人员可以在设计中选择两种类型的 PlayReady 受信任时钟。 它们都允许使用基于时间的策略管理许可证:
- PlayReady 安全时钟
- PlayReady 反回滚时钟
PlayReady 安全时钟
PlayReady 安全时钟是“一个硬件实时时钟,旨在抵制在可靠性规则中定义的级别进行未经授权的访问”,如 PlayReady 产品的合规性和可靠性规则定义的术语文档中所述。
根据 PlayReady 产品的符合性规则的要求, PlayReady 安全时钟 必须使用 安全时钟服务 来设置其值。 Microsoft 运营一些 PlayReady 安全时钟服务 ,设备制造商可以使用该服务实现此目的。
许可证服务器时间
从 PlayReady 4.5 开始, 安全时钟服务 可能是许可证获取服务器本身,PlayReady Server SDK 在获取许可证期间提供时间。
若要使用此功能,必须满足以下要求:
- 服务器和客户端 ((包括 TEE 和 REE) )都必须使用 PlayReady 4.5 或更高版本。
- 服务器和客户端应用程序都必须了解此功能。
- TEE 和 REE) 中的客户端 (必须在生成时包含安全时间功能,并实现相关OEM_TEE方法,如 PlayReady 设备移植工具包中的代码注释中所述。
- 客户端应用程序必须仅与支持和启用此功能的许可证获取服务器通信,或者还必须能够与外部 安全时钟服务通信。
- 服务器必须具有 Microsoft 提供的许可证服务器时间证书。
- 如果多个许可证获取服务器实例用于可伸缩性目的,则必须彼此同步其 OS 系统时间。
- 如果在启用该功能之前获取了具有基于时间的限制的永久性许可证 (,例如,客户端从旧版 PlayReady 升级到 PlayReady 4.5) ,则客户端和服务器必须在使用该功能后启用对这些许可证的重新分配。
服务器启用此功能,如下所示:
- 使用 Microsoft 提供的 License Server Time 证书及其相应的密钥配对构造 LicenseServerTimeCertificate 类的实例。
- 将 LicenseResponse 类的 LicenseServerTimeCertificate 属性设置为该实例。 注意:如果客户端不支持该功能,则设置此属性不起作用,因此无需基于客户端支持来对应用程序代码进行双向处理。
- (可选) 如果 LicenseAcquisitionChallenge 类的 LicenseServerTimeRequested 只读属性返回 true,则许可证响应可以选择不包含许可证。
- (可选) 如果 PlayReadyHeader 类的 LicenseRequested 只读属性返回 false,则客户端已指示没有请求许可证,服务器应用程序逻辑可以选择对此信息执行操作。 (这意味着从客户端发送的 PlayReady 标头 v4.3.0.0 在 PROTECTINFO 节点上具有其他可选属性 LICENSEREQUESTED 设置为 false.)
客户端启用此功能,如下所示:
- 在编译/链接时,在 TEE 和 REE) 安全时间功能中包含 (,并在 PlayReady 移植工具包中的代码注释中记录实现关联的OEM_TEE方法。
- 当任何 PlayReady API 返回DRM_E_SECURETIME_CLOCK_NOT_SET时,执行许可证获取以设置安全时钟。
- 当任何 PlayReady API 返回DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE时,执行许可证获取以重新获取已失效的永久性许可证。 仅当在启用该功能之前获取具有基于时间限制的永久性许可证 (时,才会发生这种情况,例如,客户端已从以前版本的 PlayReady 升级到 PlayReady 4.5) 。
- (可选) 执行许可证获取纯粹是为了设置安全时钟的目的,应用程序可以选择将 PlayReady Header v4.3.0.0 与 PROTECTINFO 节点上的其他可选属性 LICENSEREQUESTED 一起使用,以指示不需要许可证。 有关详细信息,请参阅 PlayReady 标头规范。
PlayReady 反回滚时钟
PlayReady 反回滚时钟是“PlayReady 最终产品定期验证的实时时钟”,如 PlayReady 产品的合规性和可靠性规则定义的术语文档中定义
根据 PlayReady 产品的合规性规则的要求, PlayReady 反回退时钟 可以使用任何时间源来设置其值。 时钟中的信任由内置 PK 的反回滚机制提供。 还允许使用 PlayReady 安全时钟服务 设置其值。 Microsoft 运营一些 PlayReady 安全时钟服务 ,设备制造商可以使用该服务实现此目的。