付费文章的观看模式是很多平台的核心业务。如果文章被录制并非法传播,付费服务将受到严重威胁。因此,文章业务加密技术变得尤为重要。
本文中文章加密的目的是防止要保护的文章被轻易下载,即使下载了也是加密的内容,其他人要解锁加密的内容要付出非常高的代价。
有两种常见的文章加密技术。
防盗链:防盗链签名的URL。签名后的URL可以配合流媒体服务器的安全机制,URL的使用权可以限定在指定的APP或播放器上。恶意第三方可以得到网址后不要使用和播放。
流媒体加密:文章内容本身采用对称加密算法加密,用户可以获得加密后的文章内容。经过身份验证的用户可以获得密钥来解密文章,并在客户端解密后播放文章。这种方法实现起来比较复杂,会带来更多的计算量。
在实际应用场景中,两种加密技术通常一起使用。下面分别介绍两种加密技术。
一、防盗链
1、Referer防盗链
Referer是HTTP协议中请求报头的一部分。当浏览器向web服务器发送请求时,它通常会携带Referer来告诉服务器它链接到了哪个页面。基于此,服务器可以获得一些信息进行处理。如果参考信息不是来自这个网站,阻止访问或跳转到其他链接。
Nginx防盗链的配置:比如文件类型的配置方法。
清单1 Nginx防盗链配置
这个方法是在服务器或位置部分添加:valid_referers none blocked,其中none表示空路由,即直接访问。比如直接在浏览器中打开一个文件,blocked表示防火墙标记的路由,* .zlg.cn表示所有子域。
这意味着所有网站从zlg.cn和域名包括zlg.cn可以访问的图片和文章文件的当前网站。如果源域名不在阻止列表中,将向链贼返回403。
2、Token防盗链
令牌防盗链对时间相关字符串进行签名,并将时间和签名信息以一定的方式传输到CDN(内容分发网络)节点服务器作为判断依据。CDN节点会根据URL的加密形式取出相应的过期时间,与当前服务器时间进行比较,确认请求是否过期。如果已经过期,会直接拒收。如果时间未到,CDN节点会根据约定的签名算法和密文,将计算出的值与URL中原来的加密字符串进行比较;通过后,该请求将被视为合法。非法请求可以采取访问禁止或其他措施。
流程如下图1令牌防盗链流程所示。
客户端服务器生成认证信息,认证信息由服务服务器生成。具体加密过程需要确认如下。
确认时间的格式默认为UNIX时间戳格式;
验证信息中的密文,以及用户验证信息的计算需要与CDN平台达成一致;
验证信息时添加的参数,默认为URL的路径部分;
根据上面的算法描述计算认证信息,其中请求URL中的认证参数为_upt。
CDN节点验证流程
根据约定的解析,取出过期时间,与当前CDN节点服务器时间进行比较,确认请求是否过期;
按照上面约定的算法计算方法,计算出MD5加密字符串后,与URL中的加密字符串进行比较,验证加密字符串是否一致;
如果上述两个步骤得到验证,则该请求将被视为合法。这时,CDN会请求资源来响应客户端;否则将被视为非法请求,直接响应HTTP状态码403。
图1Token防盗链流程
二、流媒体加密
1、应用程序和浏览器播放的常见流媒体传输协议包括
HLS:苹果推出的基于HTTP协议的MP4片段传输协议,可用于点播和文章场景。HLS是目前最成熟的流媒体传输协议,支持流媒体加密,可以在浏览器中应用。HLS本身支持加密。具有以下优点:
基于HTTP,使用简单,访问成本低;
分片技术有利于CDN加速技术的实施;
有些浏览器本身支持点播和录播。
RTMPE:基于TCP的FLV块消息传输协议,用于Flash客户端。使用由Diffie-Hellman密钥交换和HMACSHA256组成的行业标准基本加密。传输数据时,RTMPE会生成一对RC4密钥。一个密钥加密服务器发送的数据,另一个密钥加密发送到服务器的数据。RTMPE防止第三方应用程序拦截客户端和服务器之间的数据传输;
HTTP-FLV:基于HTTP长连接的FLV块标记传输协议。在HTTP协议上封装RTMP可以更好的穿透防火墙等。可用于点播和文章场景。
流媒体加密技术的核心在于对每一小段文章使用对称加密算法,在服务器端加密,在客户端解密。只有通过授权验证的用户才能获得解密一小段文章的密钥。
选择对称加密是因为流媒体要求实时性强,数据量大。非对称算法复杂低效,适合加密少量数据。对称加密效率比较高,所以流媒体加密首选对称加密。
因为HLS加密是目前最成熟最稳定的,所以只介绍这种加密方案。
HLS由两部分组成,一部分是. m3 U8文件,另一部分是。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主页。
第二重保护:对于文章资源,第三方播放器获取的文件为. m3 U8文本文件,加密切片。解析后可以得到ts文件和加密方案。但由于没有授权,无法获取密钥,无法解密播放文章资源。
标签:文章加密客户端