一、防盗链:这只是防止下载。意义不大,顶多是一些header、refer的限制,或者加一些token,或者弄上多段加载;但容易破解。
二、基于微软DRM SDK等,或者网上公开的drm方案,比如rtmpe/ hls的加密方案等。大致分开来讲:
A)微软DRM SDK,这个在windows时代是比较常见的方案,但现在缺点明显,一个是微软的sdk现在申请需要较高费用和周期;另一个是,移动时代这个模式的弊端太多,比如各种手机用户的支持,支持的视频格式等。
B)rtmpe:首先流媒体服务器软件价格不低;当然,这种方式最大的问题在于:数据不能缓存,用户每次播放都要占用服务器带宽,不容易结合CDN加速等。服务器带宽压力大!
C)HLS的加密,也就是m3u8里面的ts数据都进行了加密处理,然后浏览器或者播放器播放时,通过m3u8里面内置的解密秘钥地址,去动态解密。这种相对来说实现简单些,但也有弊端,那就是这一类使用公开加密标准的通病。
以上这类公开标准方案,通病就是:标准统一、公开。如果作为技术人员想去破解,还是有机会的。比如微软的DRM树大招风,破解软件网上会有提供;hls这种,如果伪装成自己是浏览器,总要给解密秘钥的,就自然可以获取后将视频解密开来。总的来说,加密这些,如果太标准化了,太统一了,就容易破解。
三、国内部分厂商的平台化方案:这类是不公开的标准,相对方案二里面的安全了些,但作为一个平台化,还是有各种弊端和被人攻击的风险,破的人多了,没有破不掉的加密技术。
四、私有化解决方案:为各个在线教育等客户提供个性化加密解决方案,每个不同客户采用不同的加密算法和加密思路,从而可以提升加密的安全性。首先给一些干货,来回答题主的问题,
那么有哪些不错的视频加密技术呢,干货来了:
A)视频可以通过帧级加密,比如每个数据关键帧,从二进制做加密运算,加密算法当然是不能公开;最好不同的客户用不同的加密算法,或者做变形,确保一个客户被破解了,另一个客户是安全的;并且加密最好有版本号机制,破解后可以升级,你破我防,保持定期更新。
B)加密的一个弱项其实是在播放,比如很多同行采用flash播放器去播放加密的视频。flash是很容易逆向的,你的解密播放代码被人逆向后看到,那你的解密代码就可以被人利用去解密视频。
当然,业内还可以考虑采用FlashCC技术,也就是将C++代码编译后内嵌如flash,这样逆向后看不到解密的代码,但这样就真的安全么?其实只是相对纯flash安全了,要想更安全,还是要做很多事情的,对于内嵌flashCC的,如何去破解,如何加强安全性,这里面为了业内很多同行方案的安全性,就不过多展开了。