付费观看视频的模式是很多平台的核心业务,如果视频被录制并非法传播,付费业务将受到严重威胁。因此对视频服务进行加密的技术变得尤为重要。
本文所指的视频加密是为了让要保护的视频不能轻易被下载,即使下载到了也是加密后的内容,其它人解开加密后的内容需要付出非常大的代价。
常见的视频加密技术分两种
防盗链:一种加了防盗链签名的URL,经过签名的URL能够与流服务器的安全机制进行配合,可以将URL的使用权限定在指定的APP或播放器上,恶意第三方拿到URL也不能使用和播放;
流媒体加密:通过对称加密算法加密视频内容本身,用户获得加密后的视频内容,通过验证的用户可以获取解密视频的密钥,在客户端解密后播放。这种方式实现起来流程复杂,会带来更多的计算量。
实际应用场景中,一般结合着两种技术一起使用,下面分别介绍这两种加密技术。
一、防盗链
1、Referer防盗链
Referer是HTTP协议中request header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果refer信息不是来自本站,就阻止访问或者跳到其它链接。
Nginx防盗链的配置:如针对文件类型的配置方法。
程序清单1 Nginx防盗链配置
这种方法是在server或者location段中加入:valid_referers none blocked,其中none表示空的来路,也就是直接访问,比如直接在浏览器打开一个文件,blocked表示被防火墙标记过的来路,*.zlg.cn表示所有子域名。
以上表示所有来自zlg.cn和域名中包含zlg.cn的站点都可以访问当前站点的图片和视频文件,如果来源域名不在blocked列表中,则返回一个403给盗链者。
2、Token防盗链
Token防盗链通过对时间有关的字符串进行签名,将时间、签名信息通过一定的方式传递给CDN(Content Delivery Network,即内容分发网络)节点服务器作为判断依据,CDN 节点则会根据 URL 的加密形式,取出对应的过期时间,和当前服务器时间进行比较,确认请求是否过期,过期的话,则直接拒绝;如果时间未过期,CDN 节点将根据约定的签名算法和密文,将计算后的值和 URL 中的原始加密串进行比较;通过之后,请求会被认为是合法的。不合法的请求可以采取禁止访问或其他操作。
其流程如下图1 Token防盗链流程所示。
客户端业务服务器生成验证信息,验证信息的生成由业务服务器负责,具体的加密过程需要确认如下事项。
确认过期时间的格式,默认采用UNIX时间戳格式;
确认验证信息中的密文,用户计算验证信息,需要和 CDN 平台约定;
确认验证信息时加入的参数,默认为URL 的路径部分;
根据上文的算法说明计算验证信息,其中请求 URL 中的验证参数为_upt。
CDN节点验证过程
根据约定解析取出过期时间,和当前 CDN 节点服务器时间进行比较,确认请求是否过期;
根据上文约定好的算法计算方式,计算出 MD5 加密串后,和URL中的加密串进行比较,验证加密串是否一致;
如果以上两个步骤都验证通过,请求才会被认为是合法的,这时 CDN 会请求资源响应给客户端,否则会被认为是非法请求,直接响应 HTTP status code 403。
图1Token防盗链流程
二、流媒体加密
1、常见的应用与浏览器播放的流媒体传输协议有
HLS:Apple 推出的基于 HTTP 协议的 MP4 分片传输协议,可用于点播和直播场景。HLS 是目前最成熟的支持流媒体加密的能应用在浏览器里的流媒体传输协议,HLS 原生支持加密。具有如下优点:
建立在HTTP之上,使用简单,接入代价小;
分片技术有利于CDN加速技术的实施;
部分浏览器原生支持,支持点播和录播。
RTMPE:基于 TCP 的 FLV 分块 message 传输协议,用于 Flash 客户端。 使用由 Diffie-Hellman 密钥交换 和 HMACSHA256 组成的行业标准基本加密。传输数据时,RTMPE 生成一对 RC4 密钥。一个密钥加密服务器发送的数据,另一个密钥加密发送到服务器的数据。RTMPE 阻止第三方应用程序侦听客户端和服务器之间的数据传输;
HTTP-FLV:基于 HTTP 长连接的 FLV 分块 tag 传输协议,将RTMP封装在HTTP协议之上,可以更好的穿透防火墙等,可用于点播和直播场景。
流媒体加密技术的核心就在于对这每一小块视频分别使用对称加密算法,在服务端加密客户端解密,通过权限验证的用户才能拿到解密一小块视频的密钥。
之所以选择对称加密是因为流媒体要求很强的实时性,数据量又很大。非对称算法的计算都比较复杂,效率较低,适合对少量数据进行加密。对称加密效率相对较高,所以流媒体加密首选对称加密。
由于HLS加密目前最为成熟稳定,因此仅介绍该加密方案。
HLS 由两部分构成,一个是 .m3u8 文件,一个是 .ts视频文件(TS 是视频文件格式的一种)。整个过程是,浏览器会首先去请求 .m3u8 的索引文件,然后解析 m3u8,找出对应的 .ts文件链接,并开始下载,如下图2 HLS加密流程所示。
图2 HLS加密流程
m3u8 文件是一个文本文件,在开启 HLS 加密时,内容大致如下。
程序清单2 m3u8文本内容
这个文件描述了每个 TS 分片的 URL ,但这些分片都是加密后的内容,要还原出原内容需要从
中解析出获取解密密钥的URL https://priv.example.com/key.do 和对称加密算法 AES-128,再从该URL中获取到密码后,再在客户端解密出原内容。
2、启用HLS加密后需完成如下工作
针对每个TS需要去请求获取秘钥;
需要多提供一个给客户端获取密钥的鉴权服务;
针对每个 TS 需要去执行对称加密的解密计算。
本着互利共赢的理念,目前zlg.cn中的大部分音视频资料未采用防盗链与流媒体加密技术,各个合作伙伴可以在其网站中正常使用zlg.cn的音视频资料链接。若zlg.cn采用了上述中refer防盗链和HLS流媒体加密技术保护部分保密资料,对于未授权的第三方则有很好的防护作用。
第一重防护:第三方在其网站上添加的来自zlg.cn的链接将无法访问,直接跳转至403网页或其他网页,如zlg.cn主页。
第二重防护:对于视频资源,第三方播放器获取到的文件为.m3u8文本文件,解析后能够获取到加密后的切片.ts文件和加密方案,但由于没有授权,因此无法获取秘钥,也就无法解密并播放该视频资源。
-
视频
+关注
关注
6文章
1942浏览量
72880 -
服务器
+关注
关注
12文章
9109浏览量
85310 -
加密技术
+关注
关注
0文章
146浏览量
17366
原文标题:安全加密(四):拾遗•流媒体加密技术
文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论