本文将根据面向人群分类阐述。一种是防小白用户,一种是防IT技术人员。
一、防小白用户
什么是小白用户?小白用户是指对计算机的了解,仅停留在会使用阶段的人群。
怎么防小白用户下载视频呢?一般采用的方式,包括但不仅限于播放地址隐藏、动态url校验、协议防范等方式进行视频保护。
1、播放地址隐藏
2、动态url校验
第一种地址隐藏的方式,地址是固定的,所以很容易被下载。为了解决这个问题,很多网站或平台,选择在原始基础上,加入了自定义的sign计算,进行播放地址校验。
一般来说动态url具有时效性,可以有效地防下载和盗链。如某网校采用的乐视云平台。
经过分析此时的下载地址如下:
这种方式同样也可以通过浏览器或插件下载。不过需要自行判断,哪个地址才是真实的文件地址。
3、协议防范
至于安全性方面,针对rtmp协议,目前已经有较多的嗅探下载工具出现。如某抓、rtmpdumper等。
二、防IT技术人员
IT技术人员,是指具有一定的计算机基础,会利用现成工具乃至在程序方面,有深入研究的人群。如网站管理员,程序员等。
针对该部分人群,目前业界普遍采用的防范方式,包括但不仅限于播放器校验,url编码加密、视频加密等。
1、播放器校验
区别于一般的校验url地址,播放器校验是指播放地址,只能通过特定播放器,进行域名白名单校验才可以播放。作用主要在于防盗链和下载,一般直接访问下载地址会403。
这种加密方式,一般可以通过对header伪造,添加referer等方式,实现403跳过校验,实现视频下载,意义不大。
2、Url编码加密
简单来说,url编码加密就是将播放地址自定义算法编码,创建私有协议的播放地址。播放需要专用的播放器进行地址解码。
如某图公考采用的某家云平台,就是采用这种方式。
经过调试分析,并不能直接得到播放地址,但是可得到编码加密的某家云私有url。
bjcloudvod://Uml4e3c8NDRsZG8zf2pobHYwZ2ZxbWxngnZyNWpxcjRraTo5bzQ0PTcza2ZAZTNnajU4bGgyZz1rZ2dpb2c8bDY3Zj5BNDw5bTA0NzR6Mnp4b3JnbTB6cGtndDQ5Mzc5QDI5OmY1a2g6aGk7PWM2aUA3OTVrOzY5PWc1a2g5aWhBNGk_amBobXhbbU5dN2JzeTUzODc2ODw5ODZlPGdnOWxoOjlqNWU_PjU0aj81ODluNGdnQGVnQDhoPmZnZ2l3YmlNXDswans5
通过对播放器和js的分析,实现对加密的url解密,得到真实的播放地址。
一般情况下,普通平台的只要解析到真实地址就可以实现播放下载了。
某家云在此基础上,同时也对视频做了初步加密,这点做得还是不错的。但是加密算法过于简单,通过解密,即可实现本地观看。
3、视频加密
区别于对url进行处理,视频加密是对数据加密,达到即便被下载也无法播放的目的。目前比较知名的视频云平台,几乎均有对视频进行加密处理。
Flash端多是自定义算法,Html5大多基于HLS协议使用或开发。
(一)Flash-FLV视频加密方案
方案一、flv部分数据加密,采用DES、AES128或其它算法。
比如某网校采用的某C视频云平台,就是对flv的头部数据进行加密,视频为pcf格式。
获取的下载地址
由于加密的数据较少,且算法比较单一,所以存在被解密的风险。
(2)flv切片加密处理,一般也是采用DES、AES128、XOR或其它算法。
针对第一种flv加密方式存在的问题,如算法单一、视频过大。更多有实力的厂商,在此基础上优化、衍生出更加优秀的解决方案。
采用切片方式的优点较多,如加载更快速、播放更流畅、每一个数据片段都采用了加密,解密难度更高。
1、比如某网校采用的某云视频云平台,演示地址:
经过分析可以得到片段地址,每一段均是加密的smf文件,地址存在规律性。
经过分析,其实每一段都是flv片段,进行了简单的加密。由于分片算法比较单一,存在不足,所以还是可能被解码合并的。
2、某某威视也采用flv切片加密技术,其算法更复杂,并会自动升级,目前市面上没有对应的解密方案。下面是官方的介绍。
当然世界上没有不透风的墙,不排除以后会有视频解密方案出炉。
目前采用此类flv优化方案的厂商,包括但不仅限于某某威视、某山(某云)等。
(二)HTML5-HLS视频加密方案
鉴于flash跨平台的兼容性问题及漏洞,越来越多的厂商更加青睐在H5作视频加密方案,同时实现pc及移动端的视频保护。目前较为广泛采用的是applehls协议。
目前hls协议的使用,包含了原生协议和自定义优化两种。
(1)原生hls协议
Hls协议天生的优势,使得大部分厂商便可以直接采用,并未做任何处理。但由于协议的公开性,目前网络上已经有对应的解密方案,其中不乏傻瓜式工具类。如ffmpeg。
通过简单调试,得到对应的m3u8地址,再利用ffmpeg命令行便可实现下载。
命令行大致如下:
目前采用该协议的厂商,包括但不仅限于某讯云、某c视频、某宝视频等。
(2)基于hls协议优化
针对hls协议的问题,部分对技术有追求的厂商,便推出了一些优化处理方案。当然hls视频的泄漏,主要还是密钥的泄漏,所以优化均是围绕AES128密钥的保护入手做处理。
1、某某soho采用了密钥混淆错序的方式。将原本的16字节密钥处理为20字节,通过播放器进行复位解码。该算法容易被猜测出混淆错序规则,存在一定的风险。
各个清晰度m3u8采用了编码加密,有时效性,仅能访问一次,防范做的还是不错的。
可以看到视频采用了AES128的加密算法。密钥的地址,第一次访问的时候,是20字节,“f8864726x4r6f34w4r36”,其后每次访问都是不同的16字节。
其实真实的秘钥,就藏在了第一次的20字节里面,之后的16字节都是假的秘钥。
我们需要从20字节中找到真实秘钥,从而实现解密。具体算法不做阐述。
该方式与某soho方案类似,通过对m3u8地址,进行sign计算校验,并增加了时效性,不排除被猜测规则,伪造下载地址的可能性。
目前基于hls协议进行优化处理的厂商,包括但不仅限于某某威视、某soho。