【揭秘】网易云视频点播加解密系统架构
毕伟
宁波大学硕士,2015年3月加入网易,负责网易云视频服务Android,ios,windows端播放器和音视频技术的相关开发,兴趣领域在视频编解码和图像处理。
随着经济及互联网的快速发展,版权越来越受到大家的重视。而对于视频来说,可以通过注入水印的方式来进行版权保护,但是并不能完全遏制其传播,为了更好的保护视频拥有者的权益,我们采用对视频内容进行加密的方式,这样即使视频被人传播盗用,也无法进行播放。
●●●
视频加解密系统需满足的条件
网易云为了保护用户的点播视频资源,开发了一套完整的加解密系统。对于一套加解密系统来说,需要满足以下几个条件
1、高安全性,保证加密后的视频不被破解
2、低复杂性,加解密过程的复杂性要低,保证高效率
3、可操作性强,用户易操作
4、容错性强,算法鲁棒性要强
5、压缩比高,加密后不能增加视频文件的大小
6、算法可升级,通过升级加解密算法进一步提高鲁棒性
●●●
视频加密系统
针对上述要求,网易云自研了一套加密系统,用户上传视频文件到网易云的分布式存储平台,执行加密任务。首先,企业应用服务器会发送加密任务到网易云视频管理服务平台,对于不符合格式的视频,网易云在加密之前会对待加密的视频进行转码;其次,网易云视频管理服务平台收到加密任务后,会从密钥管理服务器获取加密密钥,然后对视频进行加密;最后,将加密完成的视频存储到网易云的分布式存储平台上,并返回任务执行结果给用户。
●●●
视频解密系统
要播放加密视频,需要先对视频进行解密,才能进行播放,网易云提供的播放器SDK能够支持加密视频的解密播放。为了保证解密过程的安全性,密钥并不是以明文的方式进行获取,而是由播放器SDK从网易云视频点播服务器获取,为了防止他人通过抓包等网络拦截手段窃取密钥,网易云对密钥也进行了加密,这样进一步保证了安全性。
(1) 用户要播放加密视频,首先需要从企业应用服务器获取加密视频的播放URL;
(2) 用户根据appkey和secretkey从网易云视频管理服务器获取token,用于获取密钥;
(3) 用户将播放URL和token传给播放器;
(4) 播放器SDK根据token从网易云视频管理服务器获取密钥,网易云视频管理服务器从密钥管理服务器获取密钥并返回给播放器SDK,然后播放器SDK对密钥进行解密,得到原始密钥;
(5) 为了保证解密过程正确无误,播放器SDK还设计了一套密钥校验机制,对密钥的正确性进行校验,校验正确的才能进行解密播放;
(6) 对于校验通过的密钥,SDK会从CDN进行拉流解码播放;
为了保证解密的过程不对播放造成延迟,网易云采用的是流式加密的方式,即可以边解密边播放,不需要下载整个文件再进行解密播放。