HTML5 DRM 插件如何保护其输出?

信息安全 网页浏览器 沙盒 drm 视频
2021-08-31 09:56:51

HTML5 有一个 DRM 框架加密媒体扩展(EME),它允许 DRM 公司创建内容解密模块 (CDM) 来解密受 DRM 保护的内容。浏览器应该使用沙箱来运行 CDM,这样允许访问计算机的安全漏洞就不会像 Flash 用于 DRM 时那样危险。此外,它是一个插件概念,允许更多公司为不同形式的 DRM 提供模块,从而使竞争成为可能。

但是当模块有标准化的 API 并且模块本身在沙箱中运行(因此修改系统以保护自己的能力有限)时,它们如何保护输出流?该站点将加密数据发送到 CDM 中,然后 CDM 使用浏览器内的标准 API 播放视频。CDM 如何避免我修补 API 以将流转储到磁盘而不是播放视频?

例如,Google 提供的 Widevine CDM 似乎与 ffmpeg 相关联。当有人开始抓取进入 ffmpeg 库中解码器的数据时会发生什么?然后攻击者可以存储视频流(可能是某种 MP4 格式)。另一种选择是获取解码器的输出并保存原始视频数据。

CDM 如何保护其输出?

我知道,全高清 Netflix 不使用这种机制,而是依赖于受信任的媒体路径,因此需要 Windows 10(我猜是通过安全启动启动)、最新的英特尔处理器和支持 HDCP 的显示器,所以信任链永远不会破碎。但大多数其他 DRM 视频使用 EME 和常见的 CDM 之一。

当插件本身不负责保护输出时,现实世界的插件如何确保浏览器保护其输出?
据我所知,像widevine 这样的插件在Firefox 的开源版本中运行(即它们不限制自己使用Mozilla 提供的二进制文件),但受DRM 保护的电影并没有大量泄漏。

例如,当任何人都可以在打补丁的浏览器中运行 CDM,然后提取解密的媒体流时,我会期待更多被翻录的 Netflix 电影。
因此,如果只能使用 EME API 提取 CDM 的输出,Netflix 就永远不会采用该标准。

1个回答

根据我对规范的阅读,这不是加密媒体扩展旨在处理的问题。一旦验证您的用户代理被允许访问媒体并且媒体被解密,CDM 就不再关心它了。然后由用户代理从那里处理媒体保护(例如使用您提到的 Windows 受保护的媒体路径)。