视频安全-加密技术
为什么要视频加密
国外大片往往会先在电影院上映,下映后才到各大网络平台上播放。那为何不能同步呢?这里除了影院的播放收益模式外,还有一个很大的原因是难以控制网络的传播,以及把控视频被盗版等风险。
在电视、各大视频网站中,国外大片播放时都会做很多特殊技术处理,以减少盗版的可能,甚至在被盗版后还能相应取证。如果视频被盗版并非法传播,那相关视频付费业务将收到严重威胁,版权问题也可能会引发经济纠纷。为此,对视频服务加密就尤为重要。
视频加密技术
视频安全可以从整体传输流程考虑。比如下图中视频源经由网络传输到终端用户侧,这中间就包括网络传输、终端播放等环节的安全处理。现有的处理技术也是从这几个方面来保证整体的安全性。
1.传输安全
主要通过网络传输中进行防劫持处理,而https技术就是在网络传输层进行非对称加密,防止传输过程中被窃听劫持。但该技术在视频应用中相对较少,CDN处理相对麻烦,时延会增加很多,不划算。
2.资源访问授权
通过验证的用户才能访问到视频内容,这里主要指防盗链技术。业内防盗链技术主要有,黑白名单、referer、时间戳防盗链,基本都是应用在CDN边缘节点。这种方案视频也是容易被下载,尤其是在防盗链被破解或者时间有效期内。这种技术大部分厂商的CDN都能做,但是有些定制功能的防盗链技术,那就各有差异了。
3.内容安全
对视频本身进行加密,大部分采用对称加密算法将视频内容进行完全加密,用户获得加密后的视频内容后,通过验证密钥后,终端解密播放。
视频的播放又分成了点播和直播,如果是一个大的完整视频的加密,或者是本地加解密,那方法是非常多的,可以自建各种内部的加解密算法,如视频帧加密等,可自行专利搜索了解。本文主要是针对流媒体通用加密技术。
1)HLS的AES 128加密,这是将密钥获取方式写在m3u8文件中,而对每个ts单独进行完整加密。终端播放器拿到秘钥后,对每个ts进行解密再进行播放。如果不对密钥获取方式进行特殊处理,VLC等常用播放器就能进行解密并播放。
2)DRM,比较有名的就是微软的DRM,一般需要终端上需要集成相应sdk。国外大片往往都需要相应的DRM技术进行加密。
3)广电的加解扰技术,本质上也是视频的加密和解密。前端往往通过CAS系统进行视频的加密(加扰)+授权信息+解扰密钥的加密。后终端上通过智能卡+解扰器完成解密,并在终端上进行播放。有些智能卡是采用类似ESAM的技术。这种类型的电视盒子与普通的相比,可能价格会差上几倍。
4)rtmpe,rtmp的加密版本,与http相比没有本地缓存,正版服务器流媒体价格不菲,不容易CDN,服务器压力大等,但是加密也是靠谱的,速度还快。
3.其他方式
1)混淆地址加密,这个其实主要是将原有的访问地址做一个混淆,导致无法直接获取到视频的原地址,虽然方式很简单易破解,但是实施成本低,也有一定的市场。
2)地址映射,这里与上面混淆有些类似,但是终端往往是先取到一个视频ID,回源请求时源站进行相关验证会给一个播放地址,这个播放地址再结合上面的混淆技术,终端必须多次请求后才能获取到真正的视频地址。这种本质上是增加破解视频url的成本,但对于视频本身也并没有加密。
关于破解
有加密就有反加密,这真是来来回回的斗争。不管是出于何目的,忽视商业行为的破解总是不合法的,不建议去尝试,但也有必要提出来可以为相关厂商在采用技术方案时可有所考量。
1.防盗链
简单地如referer,时间戳等,这种破解技术相对成本不算高。
2.drm
由于标准统一、公开,技术爱好者总是想去破解,当前貌似也有一些方式。
3.hls
标准的hls,直接解析m3u8就可以拿到秘钥,那将视频解密也是分分钟的事情。如果是有些定制的,也可以伪装成终端来获取秘钥。
4.https
任何人都可以与服务器建立https链接并获取数据,可以伪装成端去获取到数据,因此重要的是端上的工作。
加密方案建议
以上提到的相关技术都容易被独立突破,当前破解难度较大就是广电的加解扰技术。因为其解密过程都是在终端硬件上处理,破解难度较大,但总体成本也较高。
厂商在选取方案时要综合考虑场景,是线下还是线上,也可以多种技术结合混用。本文也针对线上流媒体,从较为安全+通用的角度上提出一些建议:
1.防盗链,除了常用的时间戳等,还可以考虑中心认证防盗链技术。
2.采用id映射+地址混淆,增加获取真实播放地址的难度。
3.hls视频播放,本身视频已经是分片了,整体获取视频拼接会增加一定的复杂性,另外大部分的播放器都能较好兼容。采用此方案,可在服务器端增加获取密钥方式进行验证的环节,不定时进行更新密钥获取方式——这种能够一定程度上避免被破解。但密钥拿到了也很难避免播放器播放。当然条件允许时,可以将密钥在播放器侧进行二次处理成真正的密钥,这样视频才能正常播放,但是这种方式就无法适用到大部分播放器了。
- 点赞
- 收藏
- 关注作者
评论(0)