如何为 ClearKey DRM 生成十六进制字符串

How to generate hex strings for ClearKey DRM

我想使用 clearkeys 对我的内容进行编码。我正在使用 DASH 协议。我知道如何加密和播放加密内容。我的问题是如何生成这些密钥,以便我可以启动我自己的明文密钥许可服务器。

值得一提的是,ClearKey 并未真正被视为 DRM - 它缺少大多数 DRM 所包含的安全密钥交换机制。用 DASH 论坛自己的话说,ClearKey 是 'to provide a level of content protection between HTTPS-delivered token auth and DRM'.

如果这对您有好处,那么它很可能是适合您的用例的选择,并且它确实为防止盗版提供了障碍。

密钥本身是常规的 16 字节 AES 加密密钥。

您可以只创建自己的密钥生成器,但您应该了解一些最佳实践 - 例如,请参见: (Java) and (.NET - 请注意注释中关于字符串的讨论)。

也有可以生成密钥的站点和服务(请参阅下面的示例),但我认为根据您的问题,您更有可能希望将其构建到您自己的解决方案中,如上所示。

(更新 - 请参阅评论中的讨论)- EME 规范定义了浏览器如何处理加密内容,包括它们如何请求许可证密钥,包含以下关于返回密钥编码的内容:

"kty" (key type) "oct" (octet sequence)

"k" (key value) The base64url encoding of the octet sequence containing the symmetric key

value "kid" (key ID) The base64url encoding of the octet sequence containing the key ID value

这是专门针对 ClearKey - DRM 系统的密钥在加密的 DRM 系统许可证请求和响应消息传递中安全通信。

这里要注意的重要一点是 'base64url' 编码 - 这是 base64 编码的一种变体,它是 'url friendly' 并且不包括字符 + 和 /。有关 base64 变体的更多信息,请参见此处:

这样做的影响是,您必须为 EME 兼容解决方案的 ClearKey 许可响应使用 base63url 编码 - 即大多数(或所有...)浏览器播放器。

另一条注意事项 - 一旦您拥有密钥,就可以通过清单中包含的许可服务器 URL 请求它们,对于某些 DRM,或者密钥本身可以嵌入清单中直接。