许可证获取
若要播放受保护的内容,必须提供内容的有效许可证。 如果内容没有有效的许可证,则必须获取许可证。 在获取许可证期间,客户端从许可证服务器或代理服务器获取其许可证。 许可证获取客户端是移动设备(如手机或平板电脑)或个人计算机上的媒体播放器。 用于获取许可证的客户端直接连接到许可证服务器,并请求获取的内容许可证。
在获取许可证的上下文中,许可证服务器和打包服务器被视为 DRM 服务器。 可移植设备和能够获取许可证的个人计算机被视为客户端。
用于获取许可证的服务器和客户端交互
本部分介绍用于获取许可证的组件交互。
在服务器端,PlayReady Server SDK 提供以下功能:
- 许可证生成/颁发
使用者的便携式设备或个人计算机上的客户端提供以下功能:
- 许可证获取
- 使用规则强制实施
- 内容解密
PlayReady Server SDK 还包括域、计数、安全停止和安全删除支持。
主动、被动的许可证获取
许可证获取有两种模式:
- 主动获取许可证 — 客户端应用程序在播放开始前显式启动许可证请求。 这通常是一种方案,即系统进行编程,以便应用程序浏览内容,并在启动任何播放会话之前“主动”获取许可证。 收到许可证后,可以随时启动播放。 应用程序可以立即开始播放,或者在某些情况下,许可证将在实际播放前几天获取,通常在脱机播放方案中。
- 反应式许可证获取 - 客户端应用程序在播放内容之前不会显式获取许可证。 启动播放后,PlayReady 媒体播放器会查找可以解密此内容的现有 PlayReady 许可证。 如果未找到任何可用许可证,它会自动使用关联的许可证获取者对象获取许可证,然后再恢复播放。
下图概述了内容保护和许可证获取。
许可证获取遵循以下步骤,如图所示:
内容提供程序使用许可证密钥种子和密钥标识符生成密钥。
内容提供程序将密钥标识符和许可证服务器的 URL 放在内容标头中,然后使用密钥加密该文件来保护该文件。
内容提供程序将受保护的文件提供给用户。
用户的媒体播放器查询用户的设备的 DRM 组件,以确定是否可以播放受保护的文件。
DRM 组件在用户的设备上搜索许可证Microsoft Store,以获取有效的许可证来播放文件。
如果 DRM 组件找不到所需的许可证,它将从许可证服务器请求许可证。 用于请求许可证的许可证质询包含有关用户设备的内容标头和信息。
许可证服务器使用共享许可证密钥种子和密钥标识符来生成步骤 1 中内容提供程序生成的相同内容密钥。 然后,许可证服务器会加密密钥。
许可证服务器创建许可证、将加密的内容密钥添加到许可证中,并使用私钥对许可证进行签名。
许可证服务器将签名的许可证传递到用户的设备。
用户的设备上的 DRM 组件验证证书的签名和到期日期,并将许可证置于许可证Microsoft Store中。
DRM 组件解密所请求内容的数据包,并将其发送到播放器。
此时,玩家将以可用形式包含内容。 可以使用许可证启用的任何策略。 例如,如果许可证启用“播放”,则许可证获取客户端可以播放内容。
下图显示了主动获取许可证的基本步骤。
下图显示了被动获取许可证的基本步骤。
客户端检索受保护的文件后,该客户端需要获取许可证,然后才能执行使用该内容的操作。 许可证存储访问关联内容所需的信息,并存储可以访问该内容的规则。 用户必须获取自己的许可证才能播放受保护的内容,即使受保护内容已从已有许可证的用户复制。 许可证包含用于解密相应内容的加密密钥,或者在链接许可证的情况下包含中间密钥。 许可证还包含指定内容使用的权限和其他属性。 例如,许可证确定可以播放受保护文件的次数以及许可证是否过期。 这些属性在许可证中独立于受保护文件进行配置。
每个许可证都包含以下信息:
- 内容加密密钥。
- 许可证的权限。
- 正确的限制和右修饰符,也称为许可证的条件。
在客户端解密与许可证关联的内容之前,它必须从许可证检索策略。 许可证中的内容保护信息使用客户端的公钥或客户端域的公钥加密信息进行加密。 许可证被视为“绑定”到具有用于解密内容保护信息的私钥的客户端或域。
客户端直接从许可证服务器或通过代理服务器获取许可证。
用于获取许可证的传输
PlayReady 许可证获取都需要客户端与服务器之间的事务:
- 由客户端生成并发送到服务器的质询。
- 服务器生成的响应,并发送到客户端。
事务通常通过 HTTP 或 HTTPS 或在关闭的网络上发生。 使用的协议基于简单对象访问协议 (SOAP) ,并且可以自定义。 事务也可以异步实现,例如,客户端在一个位置发布质询,服务器处理此质询、生成响应,并在其他某个位置发布该响应。
注意
PlayReady 不支持许可证广播,这意味着服务器向广播网络上的客户端发送许可证。