我想使用 clearkeys 对我的内容进行编码。我正在使用 DASH 协议。我知道如何加密和播放加密内容。我的问题是如何生成这些密钥,以便我可以启动自己的明文密钥许可服务器。
1 回答
值得一提的是,ClearKey 并没有真正被视为 DRM——它缺乏大多数 DRM 包含的安全密钥交换机制。用 DASH 论坛自己的话来说,ClearKey 是“在 HTTPS 交付的令牌身份验证和 DRM 之间提供一定程度的内容保护”。
如果这对您有好处,那么它很可能是您的用例的合适选择,并且确实为防止盗版提供了障碍。
密钥本身是常规的 16 字节 AES 加密密钥。
您可以只创建自己的密钥生成器,但您应该注意一些最佳实践 - 参见例如:https ://stackoverflow.com/a/3452620/334402 (Java) 和https://stackoverflow.com/a /42573924/334402(.NET - 也请注意评论字符串中的讨论)。
还有一些站点和服务可以生成密钥(参见下面的示例),但我认为根据您的问题,您更有可能希望将其构建到您自己的解决方案中,如上所述。
(更新 - 请参阅评论中的讨论) - EME 规范定义了浏览器如何处理加密内容,包括它们如何请求许可证密钥,包含以下关于返回的密钥编码的内容:
“kty”(密钥类型)“oct”(八位字节序列)
"k" (key value) 包含对称密钥的八位字节序列的base64url编码
value "kid" (key ID) 包含 key ID 值的八位字节序列的 base64url 编码
这专门用于 ClearKey - DRM 系统的密钥在加密的 DRM 系统许可证请求和响应消息中安全地通信。
这里要注意的重要一点是“base64url”编码 - 这是 base64 编码的变体,它是“url 友好”并且不包括字符 + 和 /。有关 base64 变体的更多信息可在此处获得:
这样做的影响是,您必须对符合 EME 的解决方案的 ClearKey 许可证响应使用 base63url 编码 - 即大多数(或所有......)浏览器播放器。
另一个注意事项 - 一旦您拥有密钥,就可以通过清单中包含的许可服务器 URL 请求它们,对于某些 DRM,或者密钥本身可以直接嵌入清单中。