与加密流相比,DRM 的附加值是多少?
What is the value added by DRM compared to encrypted streams?
这个问题是关于使用 MPEG-DASH and/or HLS 的视频流。我试图了解商业 DRM 系统(例如 EZDRM、BuyDRM 等)与简单的加密流媒体(例如AES-128 加密 HLS。我有点迷失在广告语中
因此,如果我有直播或 VOD 流,如果我使用 HLS "for free",我可以轻松发送使用 AES-128 加密的流。在我看来,当我为我的 MPEG-DASH 流媒体设置付费 DRM 时,基本上发生了同样的事情,流媒体被加密并以标准化方式 (CENC) 共享详细信息。
所以在播放器端的这两种情况下,我所需要的只是解密密钥。从任何 web 服务中单独获取该密钥应该没什么大不了的。就这些了吗?
基于此,实现一些自定义密钥提供程序服务将非常简单,但显然市场由大型提供商拥有,所以我在这里一定遗漏了一些重要方面。
(澄清一下:我不是在谈论 DRM 中的所有内容,只是当我有一些直播或点播视频以及提供这些的网站时的情况)
感谢任何帮助和全面的文章链接。
这是一个正确的观点。但是还是有不少区别,虽然乍一看不是很明显:
- "Real" DRM 系统不仅仅像 AES-128 HLS 那样提供内容解密密钥。他们提供通常称为 许可证 的内容,而许可证又包含一组 使用权 ,例如到期日期(对租赁很有用),或者通过 HDMI 播放的能力,或者对允许观看的最大分辨率的限制,等等。
- 真正的 DRM 系统通常允许离线存储许可证,这在播放也可以离线进行的情况下或者您必须保持状态的在线情况(例如作为租借,例如,如果您在单独的观看会话中播放电影)。
- 真正的 DRM 系统需要个性化,这意味着本地许可证数据库以加密方式绑定到创建它的设备。这是为了防止用户 A 合法获得内容 X 的有效使用许可,然后随便将许可数据库发布到 BitTorrent 上供大家使用。用户 A 可以这样做,但数据库对其他人不可用。
- 真正的 DRM 系统允许 撤销,这意味着——因为每个设备都有一个唯一的加密身份——如果一个设备(或者更可能是一个 class其中)被检测到是流氓,那么它可以被指定为无法获得未来的许可证。
- 许可证已 签名,这意味着在通过 HTTP 传输时不能篡改许可证,以便延长他的租期或允许 HDMI 回放,而不是原来的地方允许。
还有更多...此外,以上是大多数商业 DRM 系统的共同点,但如果您查看个别系统(PlayReady、Widevine、FairPlay 等),您也会发现它们有几个单独的特征,使它们彼此区分开来,并与普通的 AES-128 HLS 区分开来。
@Guido Domenici 的回答再好不过了,但是 AES-128 加密和 DRM 之间的区别是巨大的。
最明显的例子是窃取 HLS AES-128 密钥的简单性。用户代理(浏览器或应用程序)必须获取密钥才能解密内容。这通常在 EXT-X-KEY
HLS "header" 中给出。一个简单的 tcpdump 或 MiTM SSL 代理(具有 OS 信任的证书)可以在几秒钟内揭示密钥。实在是——不方便而已。
一般而言,对于大多数现代 DRM,安全插件或低级内核模块负责生成 "Challenge Request",其中包含设备标识符、内容 ID,通常还包含用户令牌。 Challenge 通常通过应用程序中的事件挂钩传递到将评估请求的许可证服务器,并在成功时在签名和加密的有效负载中发布解密密钥。插件或内核模块将收到响应并解密 video/audio,将媒体传回应用程序。
一些 DRM 解决方案也会阻止屏幕录像机。
一些 DRM 的另一个好处是内容很少完全加密,而是采用部分或样本加密 - 足以使视频和音频无法播放。这减少了解密所需的开销。
为了完成下面的精彩回答,如果您想防止对播放视频的设备进行操作,DRM 是正确的解决方案。例如,如果您的视频正在浏览器中播放,则可能会被盗(想想 chrome 的所有下载视频扩展)DRM 会阻止这种情况。
这个问题是关于使用 MPEG-DASH and/or HLS 的视频流。我试图了解商业 DRM 系统(例如 EZDRM、BuyDRM 等)与简单的加密流媒体(例如AES-128 加密 HLS。我有点迷失在广告语中
因此,如果我有直播或 VOD 流,如果我使用 HLS "for free",我可以轻松发送使用 AES-128 加密的流。在我看来,当我为我的 MPEG-DASH 流媒体设置付费 DRM 时,基本上发生了同样的事情,流媒体被加密并以标准化方式 (CENC) 共享详细信息。
所以在播放器端的这两种情况下,我所需要的只是解密密钥。从任何 web 服务中单独获取该密钥应该没什么大不了的。就这些了吗?
基于此,实现一些自定义密钥提供程序服务将非常简单,但显然市场由大型提供商拥有,所以我在这里一定遗漏了一些重要方面。
(澄清一下:我不是在谈论 DRM 中的所有内容,只是当我有一些直播或点播视频以及提供这些的网站时的情况)
感谢任何帮助和全面的文章链接。
这是一个正确的观点。但是还是有不少区别,虽然乍一看不是很明显:
- "Real" DRM 系统不仅仅像 AES-128 HLS 那样提供内容解密密钥。他们提供通常称为 许可证 的内容,而许可证又包含一组 使用权 ,例如到期日期(对租赁很有用),或者通过 HDMI 播放的能力,或者对允许观看的最大分辨率的限制,等等。
- 真正的 DRM 系统通常允许离线存储许可证,这在播放也可以离线进行的情况下或者您必须保持状态的在线情况(例如作为租借,例如,如果您在单独的观看会话中播放电影)。
- 真正的 DRM 系统需要个性化,这意味着本地许可证数据库以加密方式绑定到创建它的设备。这是为了防止用户 A 合法获得内容 X 的有效使用许可,然后随便将许可数据库发布到 BitTorrent 上供大家使用。用户 A 可以这样做,但数据库对其他人不可用。
- 真正的 DRM 系统允许 撤销,这意味着——因为每个设备都有一个唯一的加密身份——如果一个设备(或者更可能是一个 class其中)被检测到是流氓,那么它可以被指定为无法获得未来的许可证。
- 许可证已 签名,这意味着在通过 HTTP 传输时不能篡改许可证,以便延长他的租期或允许 HDMI 回放,而不是原来的地方允许。
还有更多...此外,以上是大多数商业 DRM 系统的共同点,但如果您查看个别系统(PlayReady、Widevine、FairPlay 等),您也会发现它们有几个单独的特征,使它们彼此区分开来,并与普通的 AES-128 HLS 区分开来。
@Guido Domenici 的回答再好不过了,但是 AES-128 加密和 DRM 之间的区别是巨大的。
最明显的例子是窃取 HLS AES-128 密钥的简单性。用户代理(浏览器或应用程序)必须获取密钥才能解密内容。这通常在 EXT-X-KEY
HLS "header" 中给出。一个简单的 tcpdump 或 MiTM SSL 代理(具有 OS 信任的证书)可以在几秒钟内揭示密钥。实在是——不方便而已。
一般而言,对于大多数现代 DRM,安全插件或低级内核模块负责生成 "Challenge Request",其中包含设备标识符、内容 ID,通常还包含用户令牌。 Challenge 通常通过应用程序中的事件挂钩传递到将评估请求的许可证服务器,并在成功时在签名和加密的有效负载中发布解密密钥。插件或内核模块将收到响应并解密 video/audio,将媒体传回应用程序。
一些 DRM 解决方案也会阻止屏幕录像机。
一些 DRM 的另一个好处是内容很少完全加密,而是采用部分或样本加密 - 足以使视频和音频无法播放。这减少了解密所需的开销。
为了完成下面的精彩回答,如果您想防止对播放视频的设备进行操作,DRM 是正确的解决方案。例如,如果您的视频正在浏览器中播放,则可能会被盗(想想 chrome 的所有下载视频扩展)DRM 会阻止这种情况。