手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

一种互联网视频网站的内容安全保护机制

郇伟; 卢宝丰| 视频分享网站,流媒体内容安全性,视频下载安全| 2010-12-27
828 收藏
分享到: 
每日精选
热门推荐

【中心议题】

  •        *提出了一个针对视频网站内容安全的算法——动态分块分址算法
  •        *对该算法进行了实验和分析

【解决方案】

  •        *对视频进行分块,对每块的地址动态生成
  •        *满足向前向后安全性,使下载攻击只可能对正在播放的视频进行攻击

1 引言

近来,流媒体视频分享网站作为一种流行的流媒体应用而受到了充分的重视和发展。它依托音视频数据压缩技术和流媒体传输控制技术,利用因特网为用户提供节目点播服务,实现了节目的上传共享和任意播放,为观看视频提供了极大的灵活性,为信息的传播和共享提供了广阔的平台。

如何确保音视频实时数据的传输及播放安全是视频分站网站的关键技术之一,虽然目前各大视频分享网站都有各自的安全性设计,但应对这些视频分享网站,攻击者也有了相应的对策来达到截获、下载、复制,再次传播,甚至从中进行商业牟利,其中,非法大师下载甚至盗链下载,对视频服务器造成了相当大的冲击。

经过调研发现,目前在阻止流视频被下载方面,优酷网站做得最为完善,它设计了一整套的安全机制,包括:动态创建Flash播放器、视频文件分割并独立视频分块文件地址,分块地址具有时限,过时失效机制,且生成地址时也使用了对称加密的方法。

但即便优酷用这样的安全机制,也不难破解其地址生成与加密机制,在研究中发现,只要获得其源文件中的四个参数(SidfileIDKey1Key2)便可以计算得到所有分块的地址。

针对这种情况,本论文的研究主要集中在对视频分享网站的安全性设计,使攻击者难以中途截获、盗链下载、复制传播等。

2 算法概述

在流视频的播放中,由于现在网络带宽的限制,目前的视频网站都要在播放时设置一个缓存文件,在缓存文件中保存着接下来一小时间的视频内容和上一小段时间内的视频内容。所以要保存一个视频,可以从缓存文件中提取一部分,当然,也可以用分析HTTP请求或幕截屏录制等一些可以必然保存视频的方法,但这些必然方法都有一个前提,就是在“播放时”才可以获取。这样的获取方法对视频分享网站来说是不需要关心的,因为它们并不会对网站的服务器造成冲击,它们所带来的服务器压力不会因为下载而增加。

相反,能造成这样的冲击的是一些视频地址解析网站和分析下载软件,它们的冲击在于:不观看也可以下载视频,而且可以大量下载,甚至盗链以后分布式大量下载。这样对服务器造成的冲击很大,需要进行遏制。

本文提出了一种新的“动态分块分址算法”,对视频进行分块,对每块的地址动态生成,且满足向前向后安全性,使下载攻击只可能对正在播放的视频进行攻击,而对尚未播放的片段无法攻击,这样,就从根本上解决了肆意下载视频对服务器造成的压力。

3 具体算法

本动态分块分址算法有五步,分别以段落的形式阐述如下:

3·1 分块

首先对视频文件进行分块,这是本算法的基础,可在上传和转换前进行,对某一特定的视频文件,按照预先设定的分块大小,在客户端便进行切割(设分为N个文件),其实在上传之后在服务器统一切割也是一种好的方法,而且还可以保存完整的视频文件,但考虑到服务器压力过大,而且需要完整的文件也可以在服务器端连接这些小文件块,当然,只要保存一个分块的文件(如一个splitLOG之类的文件),所以在客户端运行较合理。出于细节的考虑,当有太多的文件,而且第一名出现时,LOG里面还可以加入日期和码率等信息为加以区分。

而如果再考虑到用户体验,则应该分割上传完成后把这些分块文件删除为宜。

3·2 上传与转换

这一步和一般的视频网站上传转换相同,只是上传时为了更加安全,可以考虑随机地把分块文件上传至不同的服务器,以备后用,如果不这样做,也可以在服务器空闲时分配文件提高效率。

3·3 建立分块地址树

N个分块,我们一般可以建立一个N+1结点的树,其中,树根是预设的一个结点,它标记了这个视频的整体属性,即这个视频的ID,但从根结点(视频ID)不可能直接得到视频地址,从而获取视频,因为有如下机制,①每个分块都编有一个地址;②每个分块的地址都不一样;③每个分块的存储位置甚至服务器都有可能不一样。在这个机制下,我们建立一棵分块地址树,使各个分块作为一个结点(根结点除外),而这个结点包含两个信息:<分块ID,分块地址>具体说明如下

(1)分块ID:由服务器分配,每个ID标识一个分块。分配方法:Root上选一个大的奇素数p,把其本原根gi(共Φ(p-1),要保证N0Φ(p-1))作为每个分块的ID,按大小来排,比如,p=19,因为19的本原根集合为{2, 3, 10, 13, 14, 15},则第一个分块的ID2,第二个分块ID3,第三个分块ID10···以此类推得到;

(2)分块地址:由播放时动态分配,分配方法见下节。

 

3·4 给分块地址树分配分块地址

本节是此算法的关键部分,要动态地生成各分块的地址,具体如下进行:

(1)服务器产生提取一个事先设计好的Hash函数,一个已然求出本原根gi的大奇素数p

(2)对Φ(p-1)gi,把第i个分块的地址号Di依次赋给gi,这样使初始的giDi相同。

(3)从根结点开始计算,根结点不是真正的视频分块地址,而是该视频整体的地址,计该根结点的地址为D1,依次计算每个分块结点的地址。

(4)对偶数i编号的地址(实际上是i-1个分块的地址)如下得到:进行指数运算(gi为底, Di-1为指数),得到第i个编号地址Di

(5)对奇数j编号的地址(实际上是j-1个分块地址)如下得到:进行Hash运算(Di-1为输入),得到下第j个编号地址Dj

(6)这样一直进行下去,得到所有N+1个地址。

算法伪码如下:

已知:奇素数P,P的原根gi,Hash函数,整个视频ID(RootID)start 

forj=1 up to j<=Ф(p-1) dogi=Di; //Di为第i个分块的地址end forD1=H(RootID); //对根节点Roo,t进行Hash运算for i=2 up to i<=N do//树高为N+1,由于第一分块已经得到,故从第二分块开始If%i 2==0 //如果是第偶数分块,则用指数公式gxmodp得到地址then  Di=gi^Di-1modp; else //如果是第奇数分块,就用Hash函数计算得到地址then   Di=H(Di-1);  end  ifend forend

3·5 寻路

播放时,必然会有一条顺序遍历各个结点的路径,这就是播放路径,在每播放一个分块视频时就计算下一个节点的地址,当播放完此分块时,立刻跳转到下一个分块。这样,在播放本小段时便无法得到下一小段的地址。

4 安全性概述

保证了每个分块的安全性,也保证了与其相邻的两个分块的安全性,即保证了向前安全性和向后安全性。

对于用户请求快进快退的情况下,只需要在服务器端进行连续几次地址运算,而不将中间计算的地址传到客户端,这样也保证了对于本算法的一种攻击的安全性:点击开始一小段和结束一小段就获得整个视频的攻击方法。

不论是哪种攻击,最核心的安全性就是向前安全性和向后安全性,具体分析如下:

4·1 向前安全性的实现

(1)Hash函数计算下一地址保证了向上安全性。因为Hash函数必须具有以下三个性质,而每个性质都很好的保证了向上安全性:

单向性:从下一个地址来计算上一个地址在计算上是不可行的;

抗弱碰撞性:对任何X,找到YXH(X) =H(Y)在计算上是不可行的;

抗强碰撞性:找到任何满足H(X) =H(Y)的偶对(X,Y)在计算上是不可行的。

(2)离散对数计算上的困难性也保证了向前安全性。

对每个分块ID(p的本原根g),和已知的大奇素数p,计算gxmodp是容易的,但是由此结果计算x(即上一个分块的地址)在计算上是不可行的。

4·2 向后安全性的实现

(1)由于Hash函数是保密的,故不可能让破解者计算出下一地址,如果其做穷举攻击,则其实计算上也不可行,即使可以穷举,但由于视频播放的即时性和前面的地址过时失效机制,破解者也是徒劳的。因为据资料显示,OosrschotW iener曾耗资1000万美元,为攻击MD5设计了一个碰撞搜寻机器,它也只能在24天内找到一个碰撞,显然,这在本视频的安全性上不构成威胁。

(2)对于偶数块地址D2i的计算,实际上也是安全的,因为即使知道了D2i-1,由于其不知道gp中的一个,也无法快速得出D2i,当然,攻击者即便知道了p(毕竟服务器选择p也只能在现存的已算出本原根的素数中挑选),由于其不知道g,也只能一个个计算g,这样,又需要计算至少q-1(其包含的指数和模运算也远大于pΦ(p-1),计算量很大),然后再计算D2i=gD2i-1modp。故而也在相当程度上保证了向后安全性。

4·3 本论文所涉及算法的复杂度及通信代价分析

本文对于分块视频地址的分配主要采用离散对数和Hash函数进行单向分配,并且在假定离散对数和Hash函数在计算上是困难的。

离散对数是密码学上常用的单向函数,单就计算离散对数的计算,通常认为在计算上是不可行的,这也是许多密码技术的安全性之所在。

目前存在的对于离散对数的攻击算法有很多,包括穷举攻击, Baby-Step-Giant-Step攻击,指数积分攻击,Pollard概率攻击和生日攻击等,不同的算法在不同的特定场合有其独特的效果。

 

在计算离散对数的普遍场合下,Baby-Step-Giant-Step攻击是一种行之有效的算法,在忽略对数因子的情况下,其时间复杂度为和空间复杂度都为O( n),gxmodpg为乘法群<G,* >中的n阶元, g属于G的这已经接近了离散对数问题任何通用算法的复杂性下界。如果攻击者对本算法中偶数i编号的地址,采用Baby-Step-Giant-Step方法进行攻击,则很可能随着分块数目的增多使攻击者的存储区溢出或者当O( n)计算结束时,由于本系统的地址过时失效机制,在几十分钟甚至几分钟之内无法得到下一块(奇数编号j)的地址,从而攻击失败。纵然攻击者如愿得到了下一小块目标地址编号,仍然无法解读全部视频,因为还有下面的Hash函数安全性保障。

Hash函数的单向性攻击,目前也没有很高效的方法,在一般情况下,攻击者会用软件进行“随机攻击”,对了其进行攻击的复杂度分析如下:

攻击者如果选取一条随机生成的Hash加密子块地址,并且希望能够得到本小块视频的真实ID,那他的攻击复杂度就必须基于两个参数,TV

T:攻击实验的次数,这个T取决于攻击者进入本系统的时间长短和他实现一次攻击的速度。当然,这个攻击次数可以进行优化,比如人为的去掉一些不可能的数据等。

V:成功攻击的期望值那么对于Hash函数的攻击,所期望的成功概率就是T·V/2m,其中,m就是Hash码的比特长度。可见,如果设置的Hash码长度足够大,破解成功的概率将是很小的。

显然,这相比于一般网站采取的用DESbase-64算法来加密视频网址来说,在安全性上有更明显的优势。

至于通信代价,由于本算法在服务器端和客户端所传输的只有服务器事先保存好的ID,Hash函数, n个原根gi和一些大素数q,每生成一个子块地址,便只传输计算指数运算或Hash运算后得到的“密文”地址,所以通信开销很小。

5 实验及相关说明

在本算法建模实验中,设计了一个验证本算法的原型系统。

在本地机上配置Apache服务器,MySQL数据库存储文件名信息和分块编号,PHP作服务器端脚本语言,再用PearDB进行数据库的连接,为了方便数据库存存取操作,配置了phpMyAdminV2·10·2。服务器端具体结构图如图1所示。

在客户端,采用DeamweaverPHP进行动态网面设计,为达到更直接的交互效果,Flex Builder来编程并设计出一个FLV播放器,并将其嵌入网页,并且为了实验方便,特别添加了一个Ffmpeg forwindows的解码器,以把不同格式的视频文件都转换为Flv格式,用一个播放器来播放。具体客户端设计如图2所示。

(1)   至于服务器端与客户端的交互,本实验采用了客户端通过PHP进行动态请求问访问,在服务器端生成

(2)   XML列表后,用本文所述算法加密,再传输到客户端进行点播。具体如图3所示。

(3)   在交互过程之中用目前流行的FLV嗅探器和下载器进行攻击下载,经数次实验,发现本系统可以防止

(4)   目前流行的flv下载及嗅探器的攻击,如维棠(Vidown), FlvCapture,灵狐网络下载大师(包括万能下载版和

(5)   实时更新版),迅雷,快车等。

 

5 应用前景

(1)本算法计算量和通信量都相当小,而且安全性很高,适用于目前任何视频分享网站来保证视频的安全性。

(2)如果配以目前已有的一些外围方案,如动态生成播放器,地址过时机制,地址隐藏机制,分址存放机制等,则更加安全可靠

(3)本算法若加以改进,可以应用目前视频会议,网络游戏等重要领域,应用前景广阔。

6 总结与展望

本方法考虑实际情况,目前仍然有三点改进方案,简述如下:

(6)  

(1)方案一

此算法表述成一棵分块地址树,实际可以视为一棵虚树,因为实际的节点一层只有一个,即相当于只有一条正确路径能遍历全部结点,所以也可以称之为线性链表,但这一链表的每一个指针对于攻击者来说都是很难发现的。

对于方案的改进,可以使虚树变成一棵真正意义上的“n叉树”,变化如下:

1)随机加入一些人造结点,使每层有n个结点

2)由于随机加入的结点数目不确定,造成了为每个结点分配一个p的本原根的困难,如果结点数n >Φ(p-1),则出现某些结点(甚至真实的分块)得不到ID的困难局面。故可以不用本原根做分块ID,而用1~p-1之间的n个数来代替。

(2)方案二

本算法设计思想是每次取得下一个地址的方法都不一样,Hash和指数交替进行,以增加攻击者破解地址难度,但是这必然对计算成本提出了新的要求,为了使配置较低和带宽较小的情况下仍然可以流畅地观看视频,可以完全换成Hash方法,因为指数计算开销相比要大得多,再加上引入人造结点的方法,此改进方案的安全性也不会逊色。

(3)方案三

如果追求更高的效率,在更窄的带宽下使服务器压力减少到更小,可考虑用动态对等通信(dynamic peercommunication)的一些组密钥协商协议,CKD,GDH,TGDH, STR, BD,其中TGDH协议的计算量和通信量都较小,很满足流媒体视频的要求,然后再用分块思想,分别加密,同样很好地保证了向前向后安全性,这一点,在很多文章中都有阐述。

本文提出一个能阻止非法下载视频网站视频的一种方法,它使在不观看视频而想通过下载得到本视频成为不可能,在保护服务器不被大量下载所淹没中起到了很好的效果。经搭建原型系统网站并加入本算法进行实验,所有软件和专业视频解析网站都无法在播放前得到视频文件的所有分块,效果良好。

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号