开发 PlayReady 安全级别 3000 客户端
1.简介
本页旨在作为 PlayReady 许可方寻求 PlayReady 中间产品或最终产品的 SL3000 合规性的分步指南。 本文档概述了中间和最终产品的端到端流程,并详细介绍了 SL3000 一致性中间产品的要求。
此页面包含两个main部分:
SL3000 设计过程部分概述了要遵循的端到端流程,然后是 PlayReady 被许可方寻求针对中间产品或 PlayReady 最终产品的 SL3000 合规性。
SL3000 要求部分详细介绍了 SL3000 符合中间产品的要求。 由于要求的性质,IPL 必须验证这些要求,并采用“清单”的形式记录 FFL 的验证:它们深入到硬件和 TEE 中,而 FFL 本身可能并不总是能够验证这些要求。 提供的测试报告或清单是 IPL 使用的工具,使 FCL 知道哪些测试已经运行和通过了,并且可以自信地执行补充测试,以验证最终产品的整个符合性。
没有详细说明最终产品要求的部分,因为 FCL 对分发给最终用户的最终产品进行最终自我评估,并且不需要将其测试传达给任何人。
2. SL3000 设计过程概述
PlayReady 安全级别是 PlayReady 产品可靠性的公开可用且广为人知的定义。 虽然产品可能超出特定 PlayReady 安全级别的可靠性要求,但它会建立产品必须满足的最低标准才能使用需要定义保护级别的内容。 2015 年 4 月更新的 PlayReady 合规性和稳定性规则 引入了 PlayReady 安全级别 3000 (SL3000) ,以及 PlayReady TEE 实现的要求,以满足 PlayReady 增强内容保护的硬件安全要求。 PlayReady SL3000 设计为足以满足各种内容制作者的安全标准,包括高级好莱坞内容。
PlayReady SL3000 Self-Assessment 旨在帮助 PlayReady 被许可人获取 UHD (4K) 、其他类型的增强内容 ((例如 HDR、3D 等) )的分发权限,以及 ((例如,提前窗口) )的新增强内容分发模型。
PlayReady 产品的安全性严重取决于 PlayReady 实现的可靠性。 中间产品需要安全审查(包括硬件和固件)才能获得 SL3000 的资格。 安全评审基于本文档第 3 部分概述的 SL3000 要求。 必须记录此安全评审,并将文档传达给基于此中间产品构建最终产品的公司。 此安全评审可以由第三方测试中心执行,也可以由实施者自己 (IPL) 执行。
PlayReady 最终产品不需要经过第三方测试中心审查即可符合 SL3000 合规性要求。 但是,希望随附 SL3000 证书的最终产品只有在满足 SL3000 合规最终产品的要求时才能这样做。 这要求最终产品使用符合 SL3000 的中间产品,并符合 SL3000 合规性和稳定性规则。
3. 中间产品的 SL3000 要求
PlayReady 产品的安全性严重取决于 PlayReady 实现的可靠性。 因此,Microsoft 在 PlayReady 合规性和稳健性规则 中定义了所有 PlayReady 中间产品在分发给最终产品被许可方之前必须满足或超过的要求。 以下清单是 IPL 的工具,用于记录他们在分发产品之前在其产品上运行的安全评审。 此安全评审文档必须传达给基于此中间产品构建最终产品的公司。
这些要求分为 5 个类别:
- CA:内容辅助功能
- CPR:内容保护可靠性
- 商品化:PlayReady 设备移植工具包可靠性
- TEER:PlayReady 受信任执行环境 (TEE) 可靠性
- TEEC:PlayReady 受信任的执行环境 (TEE) 合规性
针对中间产品测试报告的 SL3000 要求 - 检查列表
要求 | 基础规则 | 标题 | 要求 | 测试过程 () 概述 & 资源使用情况 | 结果 |
---|---|---|---|---|---|
CA-1.1 | RR 2.2.1 | 产品设计 - TEE | PlayReady 产品经过明确设计,使用 PlayReady 受信任的执行环境 (TEE) 。 | 体系结构评审和代码评审 | - |
CA-1.2 | RR 2.2.1 | 产品设计 - TEE | PlayReady 产品仅使用由 PlayReady TEE 实现的内容保护函数。 | 体系结构评审和代码评审 | - |
CA-2.1 | RR 2.2.2.1 | 解密的内容 | 解密的 A/V 内容不得可读或放置在 PlayReady 受信任的执行环境之外。 解密的 A/V 内容不得可用于在 PlayReady TEE 外部运行的代码。 | 体系结构评审和代码评审。 工具 XYZ 下的渗透测试 | - |
CA-2.2 | RR 2.2.2.2 | 应用程序密码 | 应用程序机密不得在连续明文内存中可用,除非用于解密内容和/或密钥材料。 应用程序机密不得可用于在 PlayReady 受信任执行环境外部运行的代码。 | 体系结构评审和代码评审 | - |
CA-3 | RR 2.2.3 | 视频传输 | PlayReady 产品必须设计清晰,以便传输压缩或未压缩解密 A/V 内容的视频部分时,此类数据可以使用广泛可用的工具、专用工具或专业软件工具进行未经授权的拦截,并且只能使用专业硬件工具进行难以截获。 适用于专业硬件工具的难度级别使得典型的消费者不应使用专业硬件工具(无论是否提供说明)来截获此类数据,而不会有严重损坏产品或人身伤害的风险。 | 体系结构评审和代码评审 | - |
CPR-1.1 | RR 3.1.2 | 设备机密、协议机密和应用程序机密 | 实现了第 1.2.1 节中所述的内容保护功能和特征, (未经授权地发现、披露和/或使用 PlayReady 可靠性规则) 设备机密、协议机密和/或应用程序机密:不能使用广泛可用的工具、专用工具、专业软件工具或在 PlayReady 受信任执行环境之外运行的任何软件来挫败或规避。 | 体系结构评审和代码评审。 工具 XYZ 下的渗透测试 | - |
CPR-1.2 | RR 3.1.2 | 设备机密、协议机密和应用程序机密 | 实现了第 1.2.1 节中规定的内容保护功能和特征, (在未经授权的情况下发现、披露和/或使用 PlayReady 可靠性规则) 设备机密、协议机密和/或应用程序机密:只能使用专业硬件工具进行失败或规避。 | 体系结构评审和代码评审 | - |
CPR-2.1 | RR 3.2 | 内容密钥、许可证完整性密钥和中间密钥 | 实现了第 1.2.2 节中规定的内容保护功能和特征, (未经授权发现、披露和/或使用 PlayReady 可靠性规则) 的内容密钥、许可证完整性密钥和/或中间密钥:不能使用广泛可用的工具、专用工具、专业软件工具或在 PlayReady 受信任执行环境之外运行的任何软件来挫败或规避。 | 体系结构评审和代码评审 | - |
CPR-2.2 | RR 3.2 | 内容密钥、许可证完整性密钥和中间密钥 | 实现了第 1.2.2 节中所述的内容保护功能和特征, (发现、披露和/或未经授权地使用 PlayReady 可靠性规则) 内容密钥、许可证完整性密钥和/或中间密钥:只能使用专业硬件工具进行失败或规避。 | 体系结构评审和代码评审。 工具 XYZ 下的渗透测试 | - |
CPR-3.1 | RR 3.3.2 | 根公钥 | 实现了第 1.3.1 节中所述的内容保护功能和特性, (未经授权地替换 PlayReady 可靠性规则的根公钥) :不能使用广泛可用的工具、专用工具、专业软件工具或在 PlayReady 受信任执行环境之外运行的任何软件来挫败或规避。 | 体系结构评审和代码评审 | - |
CPR-3.2 | RR 3.3.2 | 根公钥 | 实现了第 1.3.1 节中所述的内容保护功能和特征 (未经授权地替换 PlayReady 可靠性规则的根公钥) :只能使用专业硬件工具进行失败或规避。 | 等。 | - |
CPR-4.1 | RR 3.4.1 | 机密信息 | 实现了第 1.4 节中所述的内容保护功能和特征, (在 PlayReady 可靠性规则) 保密,只要适用:不能使用广泛使用的工具被击败或规避。 | 等。 | - |
CPR-4.2 | RR 3.4.1 | 机密信息 | 实现了第 1.4 节中所述的内容保护功能和特性, (在 PlayReady 可靠性规则) 保密(如果适用):只能使用专用工具、专业软件工具或专业硬件工具进行失败或规避。 | 等。 | - |
心声-1.1 | RR 5.2.2.1 | 反回滚时钟 - 上次已知良好时间 | 已实现第 5.1.2.8 节中所述的信任值和特征 (上次已知良好日期和时间,对于实现 PlayReady 可靠性规则的反回滚时钟) PlayReady 最终产品:在没有授权的情况下,无法使用广泛可用的工具或专用工具进行修改。 | 等。 | - |
电算-1.2 | RR 5.2.2.1 | 反回滚时钟 - 上次已知良好时间 | 已实现第 5.1.2.8 节中所述的信任值和特征 (上次已知良好日期和时间,对于实现 PlayReady 可靠性规则的反回滚时钟) PlayReady 最终产品:只能在没有授权的情况下使用专业软件工具或专业硬件工具进行修改。 | 等。 | - |
2.1 | RR 5.2.4 | 验证状态和计时器状态 | 实现了第 5.1.2.5 节 (验证状态) 和第 5.1.2.6 节中设定的信任值和特征, (PlayReady 可靠性规则的计时器状态) :在没有授权的情况下,无法使用广泛使用的工具进行修改。 | 等。 | - |
电算-2.2 | RR 5.2.4 | 验证状态和计时器状态 | 实现了第 5.1.2.5 节 (验证状态) 和第 5.1.2.6 节中设定的信任值和特征, (PlayReady 可靠性规则的计时器状态) :只能在没有授权的情况下使用专业工具、专业软件工具或专业硬件工具进行修改。 | 等。 | - |
TEER-1.1 | RR 7.2.1 | 安全时钟 - 安全时钟状态 | 实现了第 7.1.2.3 节 (安全时钟状态中规定的内容保护功能和特征,适用于实现 PlayReady 可靠性规则安全时钟) 的 PlayReady 最终产品:未经授权,无法使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境之外运行的任何软件进行修改。 | 等。 | - |
TEER-1.2 | RR 7.2.1 | 安全时钟 - 安全时钟状态 | 对于实现安全时钟) PlayReady 可靠性规则的 PlayReady 最终产品,实现了第 7.1.2.3 节 (安全时钟状态中设定的内容保护功能和特征:只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别是,典型的消费者不应使用专业硬件工具,无论是否具有说明,都不应在未经授权的情况下修改内容保护功能以及第 7.1.2.3 节 (安全时钟状态中列出的特征,以便实现安全时钟) 的 PlayReady 受信任执行环境实现,而不会对产品造成严重损害或人身伤害的风险。 | 等。 | - |
TEER-2.1 | RR 7.2.2 | 设备机密、吊销数据、计时器状态、协议机密、工作集和输出保护状态 | 实现了第 7.1.2.1 节中所述的信任值和特征, (设备机密) 第 7.1.2.4 节 (吊销数据) 第 7.1.2.5 节 (计时器状态, 适用于实现安全时钟) 的 PlayReady 产品,第 7.1.2.6 节 (协议机密) 、第 7.1.2.8 节 (工作集) 和第 7.1.2.9 节 (输出保护状态) PlayReady 可靠性规则: 未经授权使用广泛可用的工具、专用工具、专业软件工具或运行在受信任的执行环境之外的任何软件进行修改。 | 等。 | - |
TEER-2.2 | RR 7.2.2 | 设备机密、吊销数据、计时器状态、协议机密、工作集和输出保护状态 | 实现了第 7.1.2.1 节中所述的信任值和特征, (设备机密) 第 7.1.2.4 节 (吊销数据) 第 7.1.2.5 节 (计时器状态, 适用于实现安全时钟) 的 PlayReady 产品,第 7.1.2.6 节 (协议机密) 、第 7.1.2.8 节 (工作集) 和第 7.1.2.9 节 (输出保护状态) PlayReady 可靠性规则: 只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别使得典型的消费者不应能够使用专业硬件工具, 带或不带说明,若要在没有授权的情况下修改第 7.1.2.1 节 (设备机密) 第 7.1.2.4 节 (吊销数据) 第 7.1.2.5 节 (计时器状态)中设置的信任值和特征, 对于实现安全时钟) 的 PlayReady 产品,第 7.1.2.6 节 (协议机密) 、第 7.1.2.8 节 (工作集) 和第 7.1.2.9 节 (输出保护状态) 没有严重损坏产品或人身伤害的风险。 | 等。 | - |
TEER-3.1 | RR 7.2.3 | 序列号 | 实现了第 7.1.2.2 节中所述的信任值和特征, (PlayReady 可靠性规则的序列号) :不能使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境之外运行的任何软件进行专门设置。 | 等。 | - |
TEER-3.2 | RR 7.2.3 | 序列号 | 实现了第 7.1.2.2 节中所述的信任值和特征, (PlayReady 可靠性规则的序列号) :只能使用专业硬件工具专门设置。 适用于专业硬件工具的难度级别使得典型的消费者不应使用专业硬件工具,无论是否提供说明,都不应专门设置第 7.1.2.2 节 (序列号) ,而不会有严重损坏产品或人身伤害的风险。 | 等。 | - |
TEER-4.1 | RR 7.2.4 | 安全代码 | 实现了第 7.1.2.7 节 (安全代码) PlayReady 可靠性规则中所述的信任值和特征:未经授权,无法使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境之外运行的任何软件进行修改。 | 等。 | - |
TEER-4.2 | RR 7.2.4 | 安全代码 | 实现了第 7.1.2.7 节中所述的信任值和特征, (安全代码) PlayReady 可靠性规则:由于权力状态的转换(无论是授权还是未经授权),无法在未经授权的情况下修改。 | 等。 | - |
TEER-4.3 | RR 7.2.4 | 安全代码 | 实现了第 7.1.2.7 节 (安全代码) PlayReady 可靠性规则中所述的信任值和特征:由于缺少任何必需进程(包括但不限于安全启动进程),无法在未经授权的情况下修改。 | 等。 | - |
TEER-4.4 | RR 7.2.4 | 安全代码 | 实现了第 7.1.2.7 节中所述的信任值和特征, (PlayReady 可靠性规则的安全代码) :只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别是,普通消费者不应使用专业硬件工具,无论是否具有说明,在没有授权的情况下修改第 7.1.2.7 节中所述的信任值和特征, (安全代码) 没有严重损坏产品或人身伤害的风险。 | 等。 | - |
TEER-5.1 | RR 7.3.1 | 安全启动进程 | 实现了第 7.1.3.1 节中 (安全启动进程) PlayReady 可靠性规则中设定的所需流程,包括无一例外地使用已使用的数据、机密和流程:未经授权,无法使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境之外运行的任何软件进行修改。 | 等。 | - |
TEER-5.2 | RR 7.3.1 | 安全启动进程 | 实现了第 7.1.3.1 节中设定的所需流程 (安全启动进程) PlayReady 可靠性规则,包括无一例外地使用其使用的数据、机密和流程流:只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别是,典型的消费者不应能够使用专业硬件工具,无论是否使用说明,在没有授权的情况下修改第 7.1.3.1 节 (安全启动过程) 没有严重损坏产品或人身伤害的风险 | 等。 | - |
TEER-6.1 | RR 7.3.2 | 安全更新过程 | 实现了第 7.1.3.2 节中所述的所需流程 (安全更新过程) PlayReady 可靠性规则:未经授权,不得使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境之外运行的任何软件进行修改。 | 等。 | - |
TEER-6.2 | RR 7.3.2 | 安全更新过程 | 实现了第 7.1.3.2 节中所述的必需进程 (安全更新进程) PlayReady 可靠性规则:如果这样做,则无法回滚到任何以前的状态,这会降低进程的可靠性级别或任何相关的信任值。 | 等。 | - |
TEER-6.3 | RR 7.3.2 | 安全更新过程 | 实现了第 7.1.3.2 节中规定的所需流程 (安全更新过程) PlayReady 可靠性规则:只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别是,典型的使用者不应能够使用专业硬件工具,无论是否使用说明,在没有授权的情况下修改第 7.1.3.2 节 (安全更新过程) 没有严重损坏产品或人身伤害的风险 | 等。 | - |
TEER-7.1 | RR 7.4.1 | 远程预配 | 实现了第 7.1.4.1 节中所述的可选过程, (远程预配) 可靠性规则:未经授权,不得使用广泛可用的工具、专用工具、专业软件工具或在受信任的执行环境外部运行的任何软件进行修改。 | 等。 | - |
TEER-7.2 | RR 7.4.1 | 远程预配 | 实现了第 7.1.4.1 节中所述的可选过程 (远程预配) 可靠性规则:只能在没有授权的情况下使用专业硬件工具进行修改。 适用于专业硬件工具的难度级别是,典型的消费者不应能够使用专业硬件工具,无论是否使用说明,在没有指示的情况下,在没有授权的情况下修改第 7.1.4.1 节中所述的信任值和特征 (远程预配) 没有严重损坏产品或人身伤害的风险。 | 等。 | - |
TEER-7.3 | RR 7.4.1 | 远程预配 | 实现了第 7.1.4.1 节中所述的可选过程, (远程预配) 可靠性规则:不能使用设备机密来证明真实性,除非此类机密对设备是唯一的,并且符合第 7.2.2 节的要求。 | 等。 | - |
TEEC-1.1 | CR 19.2.1 | 硬件标识 | PlayReady 受信任的执行环境 (TEE) 提供唯一的硬件标识符。 | 等。 | - |
TEEC-1.2 | CR 19.2.2 | 硬件标识 | PlayReady TEE 的硬件标识符在设备重启后永久存在。 | 等。 | - |
TEEC-1.3 | CR 19.2.2 | 硬件标识 | PlayReady TEE 的硬件标识符在设备固件更新中是永久性的。 | 等。 | - |
TEEC-2.1 | CR 19.3.1 | 接口定义 | 适用于受信任执行环境的 PlayReady 接口 (PRiTEE) 的所有函数已在 PlayReady TEE 中实现。 | 等。 | - |
TEEC-2.2 | CR 19.3.1 | 接口定义 | 已为 Microsoft 实现中记录为需要替换的任何函数提供了安全替换实现。 | 等。 | - |
TEEC-2.3 | CR 19.3.3 | 接口定义 | PlayReady TEE 未更改 PRiTEE 定义的方法参数的结构或内容。 | 等。 | - |
TEEC-3.1 | CR 19.3.2 | 密钥材料 | PlayReady 产品的 TEE 提供每个客户端唯一的对称密钥。 | 等。 | - |
TEEC-3.2 | CR 19.3.2 | 密钥材料。 | PlayReady 产品的对称密钥只能由 PlayReady TEE 中运行的代码访问。 | 等。 | - |
TEEC-4 | CR 19.4.1 | 所需的保护策略 | PlayReady TEE 已实现输出控件,如 PlayReady 合规性规则第 3.6 节 (输出控件) 定义。 | 等。 | - |
TEEC-5.1 | CR 19.5.1 | 输出保护要求 | PlayReady TEE 支持第 3.6 节 (PlayReady 合规性规则) 输出控件中的所有输出控制要求。 | 等。 | - |
TEEC-5.2 | CR 19.5.1 | 输出保护要求 | 无论解释的任何许可证的最低许可证安全级别如何,所有输出保护要求都在 PlayReady TEE 中强制执行。 | 等。 | - |
TEEC-6.1 | CR 19.6.2 | 安全时钟 | 在 PlayReady TEE 中实现的安全时钟在重置时不提供有效时间。 | 等。 | - |
TEEC-6.2 | CR 19.6.2 | 安全时钟 | 只能在 PlayReady TEE 中设置安全时钟。 | 等。 | - |
TEEC-6.3 | CR 19.6.2 | 安全时钟 | 可以定期设置安全时钟。 | 等。 | - |
TEEC-6.4 | CR 19.6.3 | 安全时钟 | 支持安全时钟的 PlayReady TEE 报告使用此类安全时钟强制实施许可证过期。 | 等。 | - |
TEEC-7 | CR 19.8.1 | 密钥历史记录 | 更新或更改密钥后,PlayReady TEE 能够恢复以前的所有密钥来解密存储的内容。 | 等。 | - |