视频文件加密的方法浅析

文件加密作为保护文件数据安全的重要措施一直以来都受到人们的重视,伴随着网络数据安全形势的不断恶化,人们对于文件的加密需求也来越来越高。视频文件作为数据流失和数据版权的重灾区,一直都在向外界释放着强烈的渴求数据安全的信号。


由于视频文件迥异于一般的数据文件,其独特的数据构成方式决定了视频软件加密的独特运算加密方式。视频文件作为电脑多媒体的重要一环,一般由AVI、WMV、MPEG、MPEG1、MPEG2、DivX/xvid、MOV、MKV、RM / RMVB等多种格式组成,而上述格式之间的差异则决定了寻找一种加密方式适用于多款文件格式的重要性和复杂性。

 

事实上,就目前的视频加密技术而言,单纯地使用一种加密方式来解决通用性和良好加密性显得不合时宜。
为了能够进一步保障加密效果,一般而言对于视频等数据文件的加密采用对称加密和非对称加密两种方式。所谓对称加密加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。而非对称加密需要一对密钥,一是个私人密钥,另一个则是公开密钥。相比而言,对称加密和非对称加密各具优势,但都必须面对一个问题,这边是对于逆向工程亦或是反向工程的防御。作为破解密码的重要手段,逆向工程被黑客所推崇,其为一种技术过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素。而视频加密软件在黑客面前频频失手的原因便是在于缺乏必要的反向逆向工程防御手段。


所以对于视频加密软件而言,最为重要的步骤除了确定加密方式之外,寻找逆向工程防御手段才是关键中的关键。好在如今的视频加密技术发展迅猛,如今的市面之中也出现了类似于狙击豹这样的卓越视频软件。为了能过保证加密效果,类似于狙击豹这样的视频加密软件采用了采用256位AES加密变形算法,视频中数据逐帧加密技术,同时采用RING-0层防翻录技术,有效防止翻录行为,并且上述加密基础上提供水印渲染功能以及内置解码器辅助服务。正是这样的多元化加密手段,构成了一个从简单到复杂的加密体系并且从实用性和高效性的角度共同创立了视频文件的秘密堡垒。而套用狙击豹视频加密软件首席软件工程师的话说:狙击豹软件的加密级别已经达到了军工级别,而从目前的黑客技术来看,想要破译狙击豹软件可能需要长达数年以及相当的人力。

逐帧加密+一机一码绑定,这两个杀手锏可以狙击99%的破解尝试。而24小时专人值守紧盯破解论坛、破解网站的破解动态,实时更新保护技术,使得狙击豹视频加密系统加密过后的视频文件有了真真正正的安全!

目前国内市面上的加密软件大部分不是真正的逐帧加密,而是给视频文件加壳,就像给一捆钞票包上一个编织袋是一样的,加密后的视频全部以.EXE结尾,或者更改成其他的自定义文件名(而不是文件格式),从而蒙蔽破解者,同时也蒙蔽了 购买视频加密软件的人,这样的加密方法,只要在编织袋上划破一个口子,就能肆无忌惮的拿到真正的视频内容,这就是为什么用金盾加密器或者飓风等软件加密后,很快就出来提取脚本的原因。

如果是视频是逐帧加密,提取脚本是永远不可能出现的!


视频加密技术虽然庞大复杂,但是其核心就是不被破译和攻破,而为此所诞生的一切加密手段都因围绕此作为出发点,至于未来视频加密软件该如何走向,让我们拭目以待!

下面讲解一下几种主流的视频加密方法:

1. 全部加密(Naive Algorithm)
也就是使用标准 加密方法(比如DES)加密整个视频流。将视频比特流同传统的文本数据同样对待,没有利用视频压缩后数据流的特殊结 构。这种方法显然计算量巨大,很难保证视频的实时传输。

2. 选择性加密(Selective Algorithm)
选择性 加密是基于信源特征的视频加密方法的主要方向,其中可分为以下几类:
(1) 基本的选择性加密算法是基于视频 IPB帧结构的。这其 中最有代表性且最早提出的一种加密方法是仅仅加密I帧。然而, Agi and Gong 表明由于帧间的相关性和主要是由于P帧和B帧中的I-block没有加密,这种仅加密I帧的方法不能达 到一个令人满意的密级。这样,有人提出加密I帧的同时还应加 密PB帧中的 I块。但这样增大 了计算量,同时视频图像中的运动信息也没有被加密,保密性仍不够好。
于是,有人提出 利用提高视频序列中I帧频率的方法来 增加加密的内容从而提高密级。但这样很明显会增大加密的数据量,大大增加计算量,同时减小视频压缩率。
(2) 仅加密头信息的方法:MPEG、H26X序列都按一定结构组织图像数据。例如,图片组、图片(帧)、片组、片、宏块组、宏块等 ,都由一个头信息开始,后接图像数据。经编码后的视频数据,要按标准规定的特定结构排列组织,收方按相同 的标准结构解码,才能正确恢复原视频图像。
该算法的原理是对这些头信息数据加密,将其变成随 机序列,再与其它数据混合,使接收方在不知道密钥的情况下难以区分结构信息数据和视频信息数据,更难以知 道数据结构和数据的具体内容,难以按原数据结构解码接收到的视频编码数据,无法获得原图像,达到加密目的 。
该算法仅加密头信息,安全性较低。因为按照编码标 准,头信息具有固定的位置和内容,所以含信息量很小,加密的意义不大。只要能分辨出头信息和视频数据,就 可以恢复视频图像,并且一旦知道头信息,密钥和密码算法也很容易破译。事实上,基于MPEG、H26x等标准的视频数据结构比较固定,视频数据本身又有很强的特征,这种加密方式比较 容易破译。
该算法不降低压缩率。增加计算量很小,适用于各种 标准视频或图像压缩编码数据。
经过该算法加密的视频编码数据没有通用的数据结构 信息,全部为随机序列。为便于合法收方接收,需加入加密同步信息,或保留原来部分同步信息,只加密其它结 构信息。如果加密结构信息误码,合法收方恢复视频图像也很困难。
(3) Meyer and Gadegast 设计了一种新的似MPEG比特流,称之为 SECMPEG。SECAM既能使用标准加密算法DES和RSA又能实现不同级别的密级。但SECMPEG与标准的MPEG不兼容,需要设计专门的编解码器。
第一级:加密所 有的头信息(Headers)
第二级:加密所 有的头信息(Headers)和I-Block中的DC和AC系数
第三级:加密 I帧和 PB帧中的所有 I-Block
第四级:加密所 有的数据
(4) 选择性加密的另一个主要的方向是由Bharat Bhargava等提出的加密DCT符号,运动矢量MV符号。文献[5]中将仅加密I帧的DCT符号位的方法称为VEA算法。第二种方 法除了加密I帧,还要加密 PB帧的 DCT符号位和运动矢量MV的符号位称之为MVEA算法。相对保密性要好得多的第三种方法是使用 密钥加密(如DES或IDEA)的密码学算法来对DCT系数或运动矢量 MV符号位进行加密 ,作者称之为RVEA算法。
选择性加密的保 密性根据具体使用什么方法而定,一般选择性加密的计算量不大,且通常不会增大码流大小(改变I帧频率的选择性 加密算法除外)。

3. Zig-Zag置乱算法(Zig-Zag Permutation Algorithm)
Zig-Zag置乱算法的基本思想:使用一个随机的置乱序列来代替 Zig-Zag扫描顺序,来将各个8×8块的DCT系数映射成一个1×64矢量。
基本算法由三步组成,步骤如下:
(1)产生一个基数为64的置乱序列表;
(2)把DC系数分成两个较小值的数。假设 DC是二进制数d7d6d5d4d3d2d1d0,将它分成两个数d7d6d5d4和d3d2d1d0,它们的范围都在[0,15]。然后将DC系 数置为d7d6d5d4,将原最后一个AC系数置为d3d2d1d0。(这种分离处理是基于以下两点:(1)通常DC系数值 远大于AC系数值,因此乱序后很容易被识别。分离变小后就难于从AC系数中区分出来;(2)最末一个AC系数作 用很小,通常为0,可以用其存放d3d2d1d0,恢复时取0值,不影响图象质量,也不增加数据量。)
(3)用随机置乱序列表将经分离处理的8× 8块映射成1×64序列(vector)。
该算法设计者自己指出,上述基本 算法对已知明文攻击是脆弱的,因此提供了两种附加方法增强算法的安全性(security):
方法1: 将每8个块分成一组,把8个DC系数组合在一起(每系 数8位,恰好64位),然后运用DES加密。加密的结果按字节映射回到8个块中,然后(按上面1~3步骤)用分离 过程和置乱对每块进行加密。
方法2: 产生两张不同的置乱序列表(表1和表2),对每个8×8 块抛掷硬币,反面用表1,正面用表2。抛币产生的正反序列和两张表作为密码。
Zig-Zag置乱算法有严重的安全性问题[1]。文献[1]提供两种可以成功破解该算法的方法。Zig-Zag置乱算法速度很 快,不影响视频的实时传输。但是经过加密的视频压缩后码流大小将显著增加。因为运用非zig-zag顺序将8×8块映射到1×64的矢量,将会极大减少连续零个数,从而减少压缩率。文献[1]表明 视频流大小经加密后增加可达46%(表中最大值)。考虑到MPEG视频流数据量的巨大,这种大小增量是很难容忍的。

4.改变 Huffman码表算法
改变Huffman码表的视频加密算法原理是:对于熵 编码用Huffman编码的视频编码标准,将通用Huffman码表修改后使用,修改后的特殊 Huffman码表作为密钥。非法接收方无此特殊码表,不能正确解码视频(图像)信息。
该算法的安全性取决于保持压缩率不变的前提下, Huffman码表的可变空间(密码空间)。文献[8]做了定量的分析。
改变Huffman码表,一般会降低 压缩率。Huffman编码是对数据流中出现频率高的位组合模式对应短码字,出现频率低的位组合模式对应长码字, 达到缩短平均码字,压缩数据的目的。Huffman码表通过统计码流中各种位组合模式出现的概率制作。本算法在改 变各组合模式对应的Huffman码字时,保持对应码字长度不变,即保持了特定出现概率的组合模式对应的特定码字 长度不变,也就保持了原压缩率不变。
该算法完全不增加计算量。适用于使用Huffman编码的各种视频和图像压缩编码标准和算法。其缺点是安全性较差(密钥空间小)。

5. 基于统计规律的视频加密算法
基于统计规律的 视频加密算法在文献[1]中称 之为VEA算法(Video Encryption Algorithm)。文献[1]认为,压缩和 加密之间具有共同点,即两者都致力于去除冗余信息(Redundant information)。经MPEG压缩编码的码流具有一定的随机性。文献[1]把码流分成以字节为单元的流,每字节单元的 值为整数0~255。按字节测试统计(Byte-by-Byte),编码后字节值在0~255上的分布接近均匀,最高的字节出现 频率低于0.0178, 方差为10-6。最高相邻字节对(digrams:pairs of two adjacent numbers)的出现频率低于10-4,因此提出以下设想:将I帧分为8或16(通常16)大块( chunk),在任何chunk中,没有重复的字节模式。依据这个设想提出下面的VEA算法。
(1)设一I帧的某个chunk为如下形式:a1 ,a2,a3,a4,...,a2n-1,a2n。
(2)选择奇数号的字节组成奇队列(Odd List),选择偶数号的字节组成偶队列(Even List)。
(3)将两个新数据流异或 

(4)选择一种加密函数(例如DES)来加 密偶队列a2,a4,...,a2n。得到的密文为:c1,c2,…,cn, E(a2,a4,…,a2n).
容易看出:如果a2a4…a2n没有 重复模式(repeated pattern),VEA算法密级就决定于function E。 因为a2,a4,…,a2n对a1,a3,…,a2n-1虽是简单异或,却是一次一 密乱码本(one-time pad)加密密钥,这是公认非常保密的。
该方法不加密头信息结构格式等数据,只加密图像数 据本身。将待加密数据分为两半,一半用密码方法(函数E)加密,另一半用简单异或,因 此总体减少了计算量,提高了计算速度。前一半的计算速度取决于E。
该方法不影响压缩率。适用于压缩的视频(或图像) 编码数据,而且压缩效果越好,加密效果也越好。
6. 纯置乱算法 (Pure Permutation Algorithm)
基于上一节中的 统计结果,我们知MPEG视频的字节流有一个非常低的字节对出现频率。因此,通常的利用数据频率,字节对频率特性等密码 分析方法对此没有用(至少很难)。
Pure Permutation Algorithm 应运而生:Pure Permutation Algorithm简单的置乱字节流。置乱密码序列的基数是根据密级和应用需求动态 可变的。比如我们可以用64个数的置乱序列 或 一个长的 I帧的 1/8的置乱序列。
Pure Permutation Algorithm的问题在于它对已知明文攻击非常脆弱。
一旦通过比较密文和已知原始帧数据,获取了随机置乱序列,所有的帧将很容易被破译。为了找出随机置乱序列 ,我们需要已知随机序列长度倍数大小的明文。然而注意到MPEG数据流的单一性(unicity)和帧 大小在同一个数量级上,因此基于Shannon’s Theorem,如果已知一个I帧数据足以破译整个随机序列。

转载自狙击豹加密视频新闻:http://www.globaldrm.cn/news/jiamifangfa.html

你可能感兴趣的:(视频文件加密的方法浅析)