您的位置:  首页 > 技术杂谈 > 正文

打造更安全的视频加密,云点播版权保护实践

2022-08-26 18:00 https://my.oschina.net/qcloudcommunity/blog/5569919 腾讯云开发者社区 次阅读 条评论

在中国,以在线教育、职业培训、OTT 服务商等为代表的网络视频行业,其付费规模逐步增长。然而,针对网络视频的盗版侵权行为层出不穷,对版权方利益造成了严重的损失。因此,这一类用户急切地希望其高质量的视频内容能受到加密保护,仅允许自己的付费用户观看。

 

云点播高度关注用户的视频内容安全,在视频加密的安全性和加密速度上深入思考并不断创新。下面将为您详细介绍云点播在视频加密的技术实践。

 

                                     - 基础加密方案 -

 

Apple 的 HLS 是当前行业应用最广的在线音视频流格式,并且 HLS 也提供了一种使用对称密钥加密方案,一般被称为 HLS Encryption。

HLS Encryption 的基本原理是,内容平台将 HLS 中的各个 TS 文件使用 AES-128 的密钥(Key)和初始向量进行加密。然后,在 M3U8 文件指明播放器解密时所需要的信息。

1  #EXTM3U2  #EXT-X-VERSION:33  #EXT-X-KEY:METHOD=AES-128,URI="https://keyprovider",IV=0x1234  4  …

如上面的 M3U8 所示,若 HLS 被加密,解密所需要的信息被包含在  EXT-X-KEY 标签中:

  • TS 内容被使用 AES-128 加密;

  • 内容密钥从 https://keyprovider 地址获取;

  • 解密的初始向量为 0x123。

  • 云点播的第一版加密方案,我们称之为「基础加密方案」,其解密过程如上图所示:

    1. 播放器下载 M3U8 之后,向 EXT-X-KEY 中 URI 指定的地址请求内容密钥;

    2. 提供内容密钥的 URI 是用户的业务服务器,当密钥请求被鉴权通过之后,向云点播请求对应的内容密钥;

    3. 云点播向用户的业务服务器派发内容密钥;

    4. 用户业务服务器将内容密钥派发给播放器,供播放器解密内容并播放。

     

    云点播的「基础加密方案」,是基于 HLS Encryption 实现的标准方案。采用这种方案加密之后,任何终端播放该视频,都必须通过业务服务器的合法校验并获取内容密钥,否则无法播放。

     

    虽然,「基础加密方案」能够实现对视频的加密保护,但是内容密钥的传输存在安全性问题。根据 HLS Encryption 的设计,播放器从 EXT-X-KEY 中 URI 指定的地址获得内容密钥,并用该密钥解密视频内容。但是,这里获得的内容密钥是未经保护的。

    如图所示,当我们使用 Chrome 浏览器播放 HLS 加密视频时,可以开启调试模式捕捉获取内容密钥的网络请求。

    在请求的应答体中,内容密钥的原始二进制内容被展示出来了。这意味着,攻击者只需要启用浏览器调试模式,或者其他的网络抓包工具,就能拿到内容密钥,造成密钥的泄露。

     

                                 - 私有加密方案 -

     

    针对「基础加密方案」存在的问题,云点播的思考是,能不能对内容密钥本身做一层保护呢?于是,云点播提出了一种「私有加密方案」。

    具体的流程如上图所示:

    1. 播放器向业务服务器请求签名;

    2. 业务服务器对播放请求鉴权,通过后派发签名;

    3. 播放器随机生成临时密钥,和签名一并发送给云点播服务器(通过 M3U8 中 EXT-X-KEY 中 URI 指定);

    4. 云点播服务器校验签名后,使用播放器发送的随机密钥,对内容密钥加密并返回给客户端;

    5. 客户端使用之前生成随机密钥进行解密,得到原始内容密钥,再解密内容并播放。

     

    「私有加密方案」通过客户端生成的临时密钥,对原始内容密钥进行加密。相比于标准的「基础加密方案」,避免了内容密钥直接暴露给攻击者,提高了安全性。

    采用「私有加密方案」后,极大地提升了攻击者破解加密内容的门槛,有效杜绝了市面上一大批破解加密的插件和黑产软件的攻击。

     

    然而,「私有加密方案」本质上是一种软件级的加密加强方案,理论上攻击者通过反编译等手段,仍有可能弄清楚私有加密的具体机制,而进行针对性的破译。

     

                                 - 商业级 DRM -

     

    以 Apple 的 Fairplay 和 Google 的 Widevine 为代表的商业级 DRM,采用硬件级的加解密形式,是目前行业内公认的安全级别最高的版权保护解决方案。

    商业级 DRM 的原理是,DRM 系统把内容密钥进行加密后封装到许可证中,通过许可证服务派发给播放设备。播放设备中的专门解密模块负责提取出许可证中的原始内容密钥,解密视频播放。因为从许可证中提取出内容密钥,以及使用内容密钥解密视频流的过程,都发生在播放设备的专门硬件之中,因而可以保证解密过程和解密结果不被泄露。

    如上图所示,当设备从内容服务器(Web Server)下载到商业级 DRM 保护的内容后,向许可证服务器(Lincese Server)请求许可证,并将许可证交给设备内核由专门硬件进行解密。

     

    然而,作为一家视频平台,直接接入任何一家商业级 DRM 系统都需要极高的成本。首先,商业级 DRM 一般需要对接入方进行严格的审核,并需要通过一系列认证和考试,才会授予接入的资质。另外,不同商业级 DRM 系统的实现均有差异,学习成本高,对各类流格式和平台的支持程度也各不相同。

    云点播提供了专业稳定的 KMS 和许可证服务器,为用户屏蔽了商业级 DRM 的复杂性。具体的播放流程如上图所示:

    1. 播放器向业务服务器请求签名;

    2. 业务服务器对播放请求进行鉴权,通过后派发签名;

    3. 播放器将签名和许可证请求发给许可证服务器;

    4. 许可证服务器对签名鉴权通过后,派发许可证。

     

    最终,客户端获取许可证中的原始内容密钥,解密内容并播放。

     

    云点播目前已经集成 FairPlay 和 Widevine 两种主流 DRM 系统,帮助用户快速享受对视频内容的行业最高水平的保护水平。

     

                                - 加密方案的选择 -

     

    从「基础加密方案」,到「私有加密方案」再到「商业级 DRM」,加密的安全性逐级加强,那么是否意味着「商业级 DRM」就是一定是适合所有用户的最佳方案呢?

     

    事实上,更高的安全级别是以更低的平台适配度作为代价的:

    • 基础加密方案:基本适用于所有可以播放 HLS 的终端,适配度最高;

    • 私有加密方案:可适配所有移动端,但 Web 端仅适配支持 MSE 的浏览器(例如 safari 不支持);

    • 商业级 DRM:国内部分品牌手机和 PC 阉割了 DRM 模块,适配度最低。 

    云点播的私有加密方案可支持播放时自动降级。开启后,如播放终端的浏览器不支持 MSE,能自动降级到基础加密方式播放。但是商业级 DRM 对于终端的硬件要求十分苛刻,如设备不支持 DRM 时,将导致播放失败。

     

    因此,建议用户根据自身实际的播放场景和对安全级别的要求进行权衡。例如:

    • OTT 用户对于电影等内容保护级别要求极高,且播放终端相对单一(电视盒子),建议采用商业级 DRM;

    • 需要支持多端播放(移动端、PC、Web、小程序等)的教育培训类用户,建议采用私有加密方案。

     

    腾讯云与尚硅谷联合推出的精品项目课程《硅谷课堂——基于腾讯云产品搭建在线课堂》已上线“腾讯云开发者社区”。硅谷课堂是一款基于微信公众号B2C模式的在线学习平台,此课程包含了如何应用腾讯云文件存储和视频点播服务、腾讯云CODING DevOps产品搭建在线学习平台。整套课程共28小时,通过系统化的理论讲解和上机演示为开发者提供完整的项目实战解析,帮助Java程序员积累项目经验。   干货满满,机构名师手把手教学!
    快来领取全套课程!
    《硅谷课堂——基于腾讯云产品搭建在线课堂》
    更有腾讯云产品免费试用等你领取!
     腾讯云产品代金券
    腾讯云音视频产品免费试用中心

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接