付费看文章的模式是很多平台的核心业务。如果文章被录制并非法传播,付费业务将受到严重威胁。因此,文章服务加密技术变得尤为重要。

文中提到的文章加密是为了防止要保护的文章被轻易下载,即使下载了也是加密的内容,别人需要付出非常高的代价才能解锁加密的内容。

有两种常见的文章加密技术。

防盗链:用防盗链签名的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块标签传输协议,将RTMP封装在HTTP协议上,能更好的穿透防火墙,可用于点播和文章场景。

流媒体加密技术的核心是对每一小段文章使用对称加密算法,在服务器端进行解密,通过权限验证的用户可以得到解密一小段文章的密钥。

选择对称加密是因为流媒体要求实时性强,数据量大。非对称算法复杂低效,适合加密少量数据。对称加密相对高效,所以流媒体加密首选对称加密。

因为HLS加密是目前最成熟最稳定的,所以只介绍这个加密方案。

HLS由两部分组成,一部分是m3u8文件,另一部分是a.ts文章文件(ts是一种文章文件格式)。整个过程就是浏览器会先请求. m3u8的索引文件,然后解析M3U8,找出对应的。ts文件链接,并开始下载,如下图2所示的HLS加密过程。

图2 HLS加密过程

M3u8文件是一个文本文件。打开HLS加密时,内容大致如下。

程序清单2MU8文本内容

这个文件描述了每个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文件和加密方案,但是因为没有授权,无法获取密钥,无法解密播放文章资源。