【揭秘】网易云视频点播加解密系统架构
毕伟
宁波大学硕士,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进行拉流解码播放;
为了保证解密的过程不对播放造成延迟,网易云采用的是流式加密的方式,即可以边解密边播放,不需要下载整个文件再进行解密播放。
——【特别推荐】——
【内有网易黑猪肉券福利】网易MCTalk首秀
【揭秘】网易云视频点播加解密系统架构相关推荐
- 网贷风控体系之-系统架构
网贷风控体系之-系统架构 目前常见的大数据架构是基于实时大数据处理框架Lambda架构.Lambda架构的数据通道分为实时流和离线两部分.流式通道处理为保障实效性更多的以增量计算为主辅助参考,而批处理 ...
- 基于CH375的嵌入式USB文件加解密系统的设计
基于CH375的嵌入式USB文件加解密系统的设计 [日期:2008-7-21] 来源:电子技术应用 作者:华中科技大学 电子与信息工程系, 湖北 武汉 430074 [字体:大 中 小] <s ...
- 【crypto】基于crypto.js的web前端加解密系统实现
文章目录 一.概念介绍 1.1 crypto.js介绍 1.2 加密 / 哈希 / 编码 1.2.1 加密/解密 1.2.2 散列/哈希 1.2.3 BASE64编解码 二.加解密思想(以md5为例) ...
- 一款仿网易云音乐Java开源系统(附源码)
嗨喽!Java后端编程的各位小伙伴们,由于公众号做了乱序推送改版,为了保证公众号的推文能够第一时间及时送达到大家手上,大家记得将公众号 加星标置顶 ,公众号每天会送上Java技术干货推文 ! 上篇推文 ...
- 一点一滴解读网狐的加解密
先贴出来源码 [cpp] view plaincopy #ifndef PACKET_HEAD_FILE #define PACKET_HEAD_FILE #pragma pack(1) // //端 ...
- 揭秘网易云音乐的个性化推荐算法【黑科技】
在"精准推荐者得民心"的今天,推荐系统已成为各大互联网公司的标配.但由于现实中很多数据是非欧氏空间生成的(例如,社交网络.信息网络等),一些复杂场景下的业务需求很难通过协同过滤等基 ...
- 基于FPGA的DES加解密系统开发(5000字详细介绍欢迎订阅)
1.问题描述: DES是个块加密法,按64位块长加密数据,即把64位明文作为DES的输入,产生64位密文输出.加密与解密使用相同的算法和密钥,只是稍作改变.密钥长度为56位.基本原理图如1. 图1 ...
- TOP100summit2017:网易云通信与视频CTO赵加雨:外力推动下系统架构的4个变化趋势...
壹佰案例:很荣幸邀请到您成为第六届壹佰案例峰会架构专场的联席主席,您曾深度参与Cisco Jabber,Webex Meeting, Cisco Spark等多项分布式实时通信类产品的架构与研发,您觉 ...
- TOP100summit2017:网易云通信与视频CTO赵加雨:外力推动下系统架构的4个变化趋势
壹佰案例:很荣幸邀请到您成为第六届壹佰案例峰会架构专场的联席主席,您曾深度参与Cisco Jabber,Webex Meeting, Cisco Spark等多项分布式实时通信类产品的架构与研发,您觉 ...
最新文章
- 程序员被辞 12 天,前领导要求回公司解释代码,结果懵了…
- Jvm 系列(五):Java GC 分析
- “CCF传播大使”招募公告,期待你的加入!
- 清除被占用的8080端口,否则npm run dev无法正常运行
- 数电与模电的根本区别 转
- Spark学习之第一个程序打包、提交任务到集群
- java经典问题算法大全_10道java经典算法!每一题都能提升你的java能力!
- PyTorch并行与分布式(二)分布式通信包torch.distributed
- bzoj5312 冒险(吉司机线段树)题解
- Android 手写板SDK
- Android中实现两次点击返回键退出本程序
- 翁凯java进阶_多项式加法——mooc《零基础学Java语言》-(浙大翁凯)第五周编程题...
- python 并发之asyncio
- MyEclipse10破解 运行run.bat闪退 亲自试验
- 管道通信的基本流程和代码
- C#对XML、JSON等格式的解析
- 三维实景地图智慧园区3D可视化物联商迪3D网平台制作
- P2P TELNET
- invalid button size rid: 5fd188c8-1d752f57-0d53f85f
- 【Torch API】pytorch 中torch.ones_like和torch.zeros_like函数详解
热门文章
- HDU 4228 Flooring Tiles 反素数的应用
- GraphPad Prism 统计教程:简单线性回归原理
- C语言makefile文件
- python数据挖掘资料
- war和war exploded区别
- 毕业论文 | 基于单片机的烟雾报警器设计(完整源代码、流程图、电路图)
- 问题 | Matlab:Fatal Error on startup(致命错误)
- Unable to compile class for JSP的解决方法
- C/C++与Matlab混合编程初探
- 数学之路(2)-数据分析-R基础(2)