技术解码 | 视频加密体系升级 —— 腾讯云视频私有加密方案

2021-05-28 12:40:43 浏览数 (1)

随着5G技术、下一代编解码技术发展以及音视频载体的换代升级,音视频技术不断加速应用发展,像直播、短视频这样的产品遍地开花,中长视频发展也迎来风口。在这种大趋势下,音视频安全防护的重要性愈发重要。为了保障视频内容安全,防止视频被盗链、非法下载和传播,云点播提供了针对视频内容安全的多种保护机制,从多方面保障您的视频版权不受到非法侵犯:

  • 防盗链主要用于控制视频播放请求来源的合法性,但防盗链不对视频内容加密,用户下载后可以二次分发,在版权保护上的安全级别不高。
  • 视频加密是一种使用密钥对内容本身加密的手段,他人获取后无法直接播放。只有当终端通过业务后台鉴权,获得解密密钥后才能播放。

云点播的视频加密相较防盗链拥有更高的安全级别,下面重点介绍下视频加密方案。

HLS 普通加密方案基于 HLS 协议,HLS(HTTP Live Streaming) 协议的基本原理是服务端把文件或媒体流按照不同的码率切分成一个个小片段进行传输,客户端在播放码流时,可以根据自身的带宽及性能限制,在同一视频内容的不同码率的备用源中,选择合适码率的码流进行下载播放,在传输会话开始时,客户端首先需要下载描述不同码流元数据的 M3U8 索引文件。

根据 HLS 文档规范,索引文件(M3U8 文件)描述了媒体 TS 文件信息以及如何解密 TS 文件的方法。示例结构如下,其中 EXT-X-KEY 是用来描述加密相关信息的字段,该字段包含 METHOD 和 URI 属性。METHOD 属性描述了加密的算法,可选为 AES-128 或者 SAMPLE-AES,URI 属性描述了获取解密密钥的地址,播放器访问这个 URI 就可以获取到解密的密钥数据:

代码语言:javascript复制
#EXTM3U#EXT-X-VERSION:3#EXT-X-PLAYLIST-TYPE:VOD#EXT-X-TARGETDURATION:11#EXT-X-KEY:METHOD=AES-128,URI="GET-KEY-URL"#EXTINF:10,media_segment_1.ts#EXTINF:9,media_segment_2.ts#EXTINF:10,media_segment_3.ts#EXT-X-ENDLISTbr

在了解了M3U8文件数据结构的基础上,我们来看下HLS 普通加密的原理:

  1. 视频文件(TS文件)通过内容密钥 KEY 进行加密,加密方式为 SAMPLE-AES 或 AES-128
  2. 客户端播放视频文件时,通过 EXT-X-KEY 字段中的 URI 实时获取内容密钥 KEY,再使用 KEY 将视频文件解密播放

EXT-X-KEY 可以动态改变,其中访问 URI 亦可以加身份验证,用于进一步提升安全性,但因为该 KEY 是以明文形式传递的,部分浏览器插件还是可能会破解并获取解密后的视频内容,进而通过 ffmpeg 等工具转换为 mp4 格式文件进行非法传播。

云点播针对普通加密存在安全隐患的问题,为您提供了加密私有化的方案,即使用播放器中实时生成的临时密钥对内容密钥 KEY 采用 AES-128 CBC 算法做二次加密,并在播放器中采用指定公钥用 RSA 算法对临时密钥加密,防止内容密钥 KEY 泄露。具体方案步骤如下:

  1. 播放器随机生成临时密钥,采用 RSA 将临时密钥进行加密,并将加密后的临时密钥传到云点播后台
  2. 云点播后台使用临时密钥对内容密钥 KEY 进行AES-128 CBC 二次加密
  3. 播放器通过 M3U8 从 EXT-X-KEY 指定的 URI 获取到加密的内容密钥 KEY
  4. 播放器使用临时密钥对 KEY 进行解密,再用解密后的 KEY 解密播放视频内容

整体的加密升级方案业务流程如下:

云点播私有加密方案与超级播放器结合使用更能相得益彰,不仅接入非常便捷,安全性也能得到保证。在 web 端使用超级播放器集成私有加密视频的过程中,有两个显著的特点:

  • 无感接入

在超级播放器实例初始化过程中,播放器默认采用最高级别的加密方案来配置 playvideo 请求的入参, 云点播服务器返回 playurl,播放器解密方法处理 playurl 的过程,对于未加密或普通机密的视频同样适用。

因此通过超级播放器播放私有加密视频,只需要基本的配置参数,用户不需要做任何额外的动作,甚至不需要感知和理解此种加密方案的存在,即可享受高安全级别的防护措施。

  • 混盾安全防护

浏览器环境对于web开发者来说实质上是透明的,主流的压缩、混淆技术,例如对语法树结点执行规则变换、消除符号名称、控制流平展化算法等方式,可以降低代码的可阅读性,但由于最终产物仍是 Javascript 代码,保护强度有限,还是有可能从代码中窥探到关键信息,造成信息安全问题。

超级播放器为了进一步避免可能的信息泄漏,采用基于虚拟机的混盾技术对代码进行防护,混盾编译器将播放器加解密过程中的关键算法和敏感数据转换为虚拟机字节码,抹去程序结构信息,进一步保证了在浏览器环境的代码安全。

在iOS和Android终端,提供了独立SDK方便客户进行接入,最大限度地节省客户接入成本。终端整体流程数据交互流程如下:

终端App调用加密套件获取加密视频信息,加密套件按照私有加密方案进行和Vod后台交互,请求加密视频信息

终端播放器播放返回的视频播放地址,会建立一个安全数据交互通道和Encrypt Manager进行交互,Encrypt Manager会请求Vod后台获取加密数据,进行数据处理后返回给到播放器进行播放。

在如今后疫情时代,越来越多应用与服务迁移至线上,音视频技术持续快速迭代,云点播也将砥砺前行,为音视频领域相关开发者和广大用户提供更便捷、更安全的开发体验,积极促进行业发展,在音视频安全的攻防博弈中贡献一份正向力量。

0 人点赞