http://www.jiamisoft.com/blog/11238-liumeitijiamijishu.html
随着Internet的飞速发展和网上多媒体应用的普及,数字版权和隐私权的保护已成了一个愈来愈令人关注的问题,媒体资源的安全 也就成了一个热点的研究课题,而加密技术是保护媒体资源安全最重要的技术手段之一。笔者从传统密码技术入手,在结合流式媒体的特征基础上对其加密/解密机 制进行了深入的研究目的是将传统的密码技术与新兴的流媒体技术相结合,实现多媒体数据的实时加密保护。
一、用常规密码对流媒体加密的总体分析
现代密码学根据加密密钥使用方式的不同,将密码体制分成两大类:对称密码体系和非对称密码体系对称密码体系中加解密双方所用密钥相同,而非对称密码体系中加密和解密使用的不是同一把密钥两种密码体制各有利弊,分别适用于不同的应用场合。
在流式传输过程中,服务器在发送数据时进行加密,客户端在播放前进行解密加解密都是针对流化了的媒体流进行的,也就是说欲加密的明文是一个数据包或其中的一部分,而不是整个多媒体文件流式传输加密模型如图1所示。
那么,在使用常规密码技术对流媒体数据进行安全保护时,应当考虑哪些因素呢?通过分析研究,我们认为至少应当考虑以下几点。
一是密码体制的选择
首先要考虑使用公钥密码还是对称密码流媒体传输要求很强的实时性,数据量又很大,而公钥密码算法的计算都比较复杂,效率较低,这就限制了只能使用对 称密码体制进行媒体数据流的加密对称密码体制中又有分组密码和序列密码之分,两者都可用于流式传输。因为通信过程中媒体数据本来就是被成块处理和传输的, 因此可以使用分组密码,这样做的另一个好处是一个密文块中的传输错误不会对其他块产生影响,也就是不存在块间的错误扩散使用流密码是因为它加密速度快,处 理简单。
二是加密算法的选取
每一种密码体制都存在多种标准算法,每种算法的性能和安全性也有所差异所以,应当根据应用的特点和网络的状况,在保密性和实现代价之间做出权衡后, 选用一种合适的算法当然也可以自行设计合适的加密算法,只要保证有足够的安全性具体到某个算法中还应考虑许多其他因素,如分组长度和密钥长度的选取等等, 都会对加密速度和安全性产生直接的影响。
三是工作模式的选择
任一种计算机加密程序都是按照某种固定的步骤和方式执行的,因此如果加密时明文和密钥都相同,则必然得到相同的结果,而这样数据保密性就会受到影响 因为在计算机系统中,由于数据结构和数据冗余使得许多数据信息都具有某种固有的模式,比如标准的多媒体文件都具有一种固定的结构,一个数据库中所有的记录 也都具有相同的结构等等这样经过加密程序的作用后,这些固定的格式就会在密文中露出痕迹为避免这些问题,可以使用数据预处理技术和链接技术,不同的技术就 形成了分组密码的不同工作模式。
常见的工作模式有电子编码本模式(ECB)、密码分组链接模式(CBG)、密码反馈模(CFB)式和输出反馈模式(OFB)。ECB使用同一个密钥 将每个明文块分别加密,各块间相互独立:在CBC方式中,每个明文块在加密前先与前一个密文块进行“异或”运算,增加了复杂度和密码分析的难度CBC模式 的安全性较ECB好,因而受到广泛使甩CFB和OFB类似于CBC方式,但是进行“异或”的量是独立生成的在同一工作模式下可以选用不同的初始化向量进行 数据预处理。
流媒体数据加密是对一个个的数据包进行的,也可以看成是对小数据文件进行加密,工作模式可选用EBC或CBC方式但是,在对非压缩的多媒体数据(如位图文件等)进行加密时,由于其高度冗余性,若简单地选用ECB模式将无法掩盖某些原始信息,最好使用CBC模式。
四是数据填充的需要
采用分组密码算法时需要将明文根据分组长度来分成若干块,实际应用中明文消息通常比分组长得多,因此最后的分组可能是一个长度较小的短块如何处理这些短块呢?主要有三种方法:填
充法、密文挪用法和序列密码加密法。
另外还有许多其它因素,如同步需要、密钥管理策略等都需要考虑周全。
二、用序列密码对媒体流加密
如Bit上述分Byte算法中的分组长度随为一个Bit或一个Byte,也就是将明文空间元素逐位或逐字节地加密,这就是序列密码(流密码)的实现 思想对流密码而言,密钥是一个与明文长度相同的序列加密时明文序列与密钥流序列通过逐位运算来实现加密,解密时以同步产生的密钥流进行相反的变换,其基本 原理如图2所示。
与普通分组密码和公钥密码相比,序列密码速度最快,实时性最好因此,序列密码适用于数据量大且实时性要求高的流媒体加密,它也是目前军事、外交领域应用的一种主流密码体制。
序列密码的强度完全依赖于密钥序列的随机性和不可预测性。另外,保持收发两端密钥流的精确同步也是实现可靠解密的关键技术所以,序列密码的核心问题 是密钥流生成器的设计,一般可使用伪随机数发生器密钥流生成器需要一个加密密钥作为输入参数,如果同一个生成器每次都使用相同的加密密钥,那么它生成的密 钥流也总是相同胞所以,为了保证安全,不能重复使用相同的密钥常见的生成器有基于线性和非线性移位寄存器的序列密码、基于混沌的序列密码等等下面就来研究 用序列密码如何对流媒体进行加密。
使用序列密码加密,首先要把明文信息如文本、图像、声音等排成明文序列,再将它与密钥序列逐字节(位)进行“异或”运算生成密文序列,接收者用相同的密钥序列对密文序列进行“异或”运算来恢复明文。
在用序列密码对媒体流加密时,网络数据包的大小可以根据网络的需要来设定,与分组加密不同,这里需要考虑的仅仅是网络传输的需求。
整个加密过程是:播放过程一旦开始,密钥流生成器就不断地产生出密码序列,服务器也周期性地发送网络数据包在数据流化的过程中,将随机数序列与数据 包中的明文序列进行逐位(字节)的异或运算后,再按照网络协议进行打包解密端从网络上收到数据包后,先进行解封装得到密文数据流,然后再与密钥流进行异或 运算得到明文。
三、MPEG-1加密方法的比较及分析
从多媒体文件或实时的多媒体数据流中所含的信息来看,大部分数据都是视频信息,因此以MPEG-1为例对视频数据的加密法进行分析对于其他类型的多媒体文件,也可以参照类似方法进行分析和处理。
MPEG系列都是有关运动图像和编码的标型剐,每个标准又分为音频和视频两个部分,以MPEG-1标准为例来说明其加密原理实现时,可以对M PEG-1系统流直接进行加密操作,也可以对音视频流进行单独的加密因为在进行数据的RTP打包时,可以将音视频数据流分别打包形成两路媒体流进行网络发 送下面以其视频流的加密方法进行比较与分析。
目前对M PEG-1视频流加密的方法,归纳起来,可以分为以下几大类:
第一类是完全加密法这种算法把视频数据与一般的文本数据同等对待,完全不考虑视频本身的特点它首先把图像肩见频的二维或三维结构变为一维的数据流, 再使用DES、AES等标准算法直接将数据逐位进行加密,其优点之一是安全性高,优点之二是加密可以免去考虑媒体数据格式的区别,这样无论对于MPEG格 式、ASF格式还是RM等格式的媒体数据均可以采用统一的加密方法缺点是开销较大。
第二类是选择性加密法总的来说,这类方法是通过分析MPEG视频结构上的特点之后,有选择地对部分数据进行加密虽然只是对部分数据加密,加密后的位 流已经不再具有标准的MPEG结构特点,因此实现了数据保密要对加密后的视频数据进行破解,攻击者面临着两大难题,一是必须找出哪一部分数据被加密了,二 是找到后还要知道如何进行解密选择性加密由于只对部分敏感数据进行加密,从而减小了开销。
可以根据不同的应用需求来选择不同的选择性加密方案,常见的有以下几种选择方案。
(1)是选择对视频序列中所有的I帧进行加密因为P帧只记录了与其前面J帧进行比较的差分信息,B帧只记录了与其前后的,P帧相比较的差分信息,I 帧信息一旦被加密,B帧和P帧便失去意义但由于数据的帧间关联,仅仅加密,帧后仍然能够暴露出一些信息,这些信息主要来自于B帧和P帧中的I块。
(2)对视频序列中所有,帧进行加密的同时,再选择对B帧和P帧中的,块进行加密,以提高安全性,但这样增加了寻找,块的开销:因为,帧占整个视频的30%~60%,再加上寻找,块,其开销已接近于全部加密。
(3)选择对视频序列头加密,因为序列头中包含了解码所需的一些初始化参数,如图像大小、帧率、位率以及缓冲区的大小等等,对头部信息加密就使得标准解码器无法识别出视频流,从而达到了加密的目的要进一步增加安全性,可以同时对视频序列尾进行加密。
上述几种选择加密法可单独选用也可综合使用,还可制定其他的选择方案。
第三类是VEA视频加密算法这种方法是基于MPEG-1视频序列的统计特性,算法简单描述如下:
(1)将原视频序列按奇偶位分成两个序列a1,a3,…,a2n-1和a2,a4,…,a2n。
(2)对以上两个序列进行按位异或运算a1,a3,…,a2n-1XORa2,a4,…,a2n,得到一个新的序列:c1,c2,…,Cn。
(3)选择一个加密函数E(最初用DES)对偶数序列a2,a4,…,a2n进行加密得到E (a2,a4,…,a2n),最后将序列C1,C2,…,cm,E(a2,a4,…,a2n)组合作为加密结果。
这种加密模式对已知明文攻击有很好的抵抗力,因为每一帧加密时都要进行密钥的变更对唯密文攻击也有很强的免疫力,因为唯密文攻击是通过频率分析得出的,也就是要找到一对(a,b)使得以XOR b=c统计表明这种概率最多是10-5,所以攻击极其困难。
第四类是将压缩和加密过程相结合的方法一般来说,加密应当在压缩之后进行,因为加密之后再压缩将会因密文数据的随机性而降低压缩性能但有时MPEG 的压缩和选择性加密会相互矛盾,此时必须在两者之间进行权衡此类研究都是针对不同的视频格式进行的比如有一种典型的Zig-Zag置换加密算法,在 MPEG-1的编码过程中将8*8块映射到1*64的向量时不使用原来的映射顺序,而用一个随机映射表来代替之这种方法在加解密上的开销极小,但是它却造 成了图像尺寸的增加,这与数据压缩的目标背道而驰,因而是不合适的。
第五类是标志位(Sign Bit)加密法这是通过随机密钥来改变所有DCT系数和运动向量的标志位来实现加密的方法如下:
假设k= b1b2.–bm是长度为m的随机密钥,加密函数选为:
Ek(s)=…(b1XOR s1)…(bmXORsm)(b1 XOR sm+1)…(bn XOR s2m)…
这里S1S2,Smsm+1,.S2n…是所有DC系数和AC系数的标志位加密函数将DCT系数的标志位进行了随机的改变该方法也被称为VEA,其安全性不够高另有两种对它的改进方法MVEA和RVEA。
第六类是将流密码和分组密码结合起来实现高效的数据加密。
上述方法中无论如何处理视频,大都要和常规加密算法结合使用,比如VEA中就用到了DES算法,选择性加密时也要对被选中的部分进行加密运算无论怎样考虑,流媒体传输的实时性是一个重要参数,而实时性与加密速度有着很大的关系。
四、加密速度对实时性的影响分析
从上面的分析看到,有多种加密算法可用来对流媒体数据加密,但要确定某种算法是否实用,要看它是否影响流媒体的实时播放效果基于这样的思路来进行分 析在MPEG-1数据流的编码过程中,每个数据帧的帧头信息中都包含了该帧相对于系统头的解码时间,在实际运行中,通过这个解码时间我们就可以判断出某一 帧是否能够按时解码,也可以判断出有多少时间可以用来进行解密。
因为一个数据流中,数据帧的大小不同,在网络传输时可能出现这样的情况:较小的帧用一个数据包就能够容纳得下,而较大的帧可能会被分装在若干个数据 包中。对于这些被分割的帧,由于每包都要分别加解密,将会带来较大的延时,如果它们能够实现实时加解密,那小帧自然不成问题,因此我们可以只需考虑大数据 帧的情况,假设在M PEG流中某一帧相对于系统流中第一帧的解码时间为D,而实际得到的第一帧的解码时间为D1,那么当前帧的指定解码时间以应当是:a=D1+D。
将这个指定解码时间日与该帧的最后一个包到达客户端的时间b相比,如果b晚于a,就说明该帧因某种原因已经迟到了,此时加解密已经不可避免地影响到了播放的实时性如果b早于a,那么两者之间的差值即是可用来解密该数据包的时间。
对任一数据帧,客户端都是在收到它的所有数据包之后才开始解码播放的我们来分析最长的数据帧,如果它能够在a-b内解密完毕,其他的帧解密自然不成问题因此,若在a-b时间段之内该帧的最后一个数据包能够解密完毕,我们就认为所用的解密算法可以满足实时播放的要求。
设这个最长帧共包含n个数据包,每个包需要的解密时间为t,所以,应当有:t<a-b,即:解密速度>包长/(a-b)。
从而得出以下结论:对某一个MPEG-1数据流来说,只有解密速度>数据包长/(该帧的指定解码时间一该帧最后数据包的到达时间)的加密算法才能够满足实时加密的要求。
小知识之流媒体
所谓流媒体是指采用流式传输的方式在Internet播放的媒体格式。 流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。