基于嵌入式系统的数字视频信号加密技术
2009-07-22
作者:洪家平
摘 要: 几种常用数字视频信号加密技术的原理与方法,分析了这些加密方法的优点和存在的不足。提出了一种仅对视频码流中解码和视频图像的重建起着重要作用的少部分数据进行高强度加密的方法,这一方法可以取得对整个视频码流安全加密的效果。
关键词: 数字视频; 加密技术; 嵌入式系统
数字视频在许多方面与静止图像有相同特性,例如数据量大、结构性强、各部分数据的重要性不同等,视频的帧内编码与静止图像编码类似。数字视频是由数字图像的时间序列构成的,每一幅图像称为一帧。为了保证流畅的视觉效果,视频显示的帧速率即图像序列的播放速率,通常为每秒25~30帧,视频加密在一定时间内必须处理大量数据,因此要求有很高的处理速度。当前的视频加密技术还很难同时满足安全、及时等加密要求。
1 视频加密的原理和方法
1.1 视频加密的密码学方法
最早的视频信号加扰方法是模拟视频加密技术,但这种方法安全级别很低。最早的高保密级视频加密技术是对全部视频数据流直接用密码技术加密和解密,故称为图像和视频加密的密码学方法,也称之为自然加密方法。国内大部分文献称之为传统加密方法。其原理如图1所示。
由于密码技术已有许多安全可靠的成熟算法,以二维或多维数据表示的图像和视频在传输和存储时都要映射成一维数据,若不考虑具体的数据特征,很适合直接应用已有的成熟密码技术加密。其研究基本是基于纯密码科学技术的研究,安全性评价取决于所用密码加密技术。在当前的大多数实用图像和视频加密系统中,图像和视频数据被等同为一维比特流而采用DES等算法加密。也有一些新的密码技术用于视频加密,同时在性能上有了进一步的改进。
是由于图像和视频信号数据量很大,所以这种加密方法计算量非常大,不仅浪费资源,而且难以保证实时性。由于许多图像信号特别是视频信号往往要求实时在线传输,且大多数应用都要求降低成本,从而限制了这种加密方法的应用。另外,若标志信息经加密无法识别,则不能实现在线传输和检索功能。
1.2选择性加密方法
密码学方法虽然安全,但这种加密方法计算量非常大,往往难以实用。为解决这一对矛盾,人们研究了视频的信源特征,把密码原理与视频技术结合起来,取得了一些研究成果。有人提出一种针对图像和视频编码的部分数据加密思路。图2(a)表示密码学方法,对所有数据用密码技术加密;图2(b)表示部分数据加密方法,只对选择的重要数据加密。
在视频加密的算法中,除纯密码学方法之外,对选择性加密方法研究得比较多,其中又以对加密变换(DCT)系数的算法为多。主要有以下几种:
(1) 仅对I帧加密算法
仅对I帧DCT系数块加密,具有扩散作用,使P、B帧利用运动补偿进行差值编码的相应块不加密也难以正确解码,达到了选择部分数据加密减少计算量的目的。该算法由于减少了加密数据量,因而节约30%~50%的加解密时间,提高了加、解密速度,且不改变原视频编码数据码流量大小,因而不影响压缩率。但这种算法不安全,场景变换和运动剧烈的P、B帧(P、B帧内的I块)会被正确解码,在保密要求高的场合不能单独使用。本算法可通过增加I帧频率来提高密级,但是I帧频率越高,计算量越大,速度就越慢。有人讨论了其改进方法,加密包括P、B帧中I块的所有I-block,但也存在问题:①在P、B帧中识别I块需要一定的额外开销;②在某些视频中,P、B帧中的I块数量与I帧中数量相近,因此,减少数据量不明显,还不如改用纯密码(Naive)算法。
(2) 加密运动矢量算法
随机改变运动矢量的符号位或同时改变符号位和数值来影响P、B帧正确解码。对I帧编解码完全没有影响,故不能单独使用,主要作为增强安全性的补充算法。加密数据量小,计算量小,因而速度快;不降低编码压缩率,只适用于视频编码数据。
(3) DCT块系数分层加密算法
把DCT系数从低频到高频分为基本层(base layer)、中间层(middle layer)和增强层(enhancement layer)三部分。在0~63范围定义两个整数分界点(breakpoint),作为一个分界点组(breakpoint group),确定三部分之间的边界。定义第一个分界点为容损点(loss-tolerance breakpoint),第二个点为安全点(security breakpoint)。在这个算法中,只加密基本层和中间层,可以减少计算量;保证基本层传送,即使中间层和增强层丢失,接收方也能显示出主要信息。该算法可以让用户根据不同的安全性级别来选择分界点组合,在安全性、计算量、容错能力之间进行折中。对基本层和中间层加密的密码算法也可以另行选择。该算法只对部分DCT系数加密,减少了计算量。类似的选择性加密的算法有:仅加密DC系数或加密DC系数和少量低频AC系数、随机改变DCT系数符号等。
(4) 仅加密头信息算法
将头信息加密,再与其他数据随机混合,使接收方难以按原数据结构区分结构信息和视频信息并解码。该算法不降低压缩率,计算量小。但是安全性较低,因为头信息所含信息量小,加密效率低,这种加密方式比较容易破译。为便于合法收方解码,需加入同步信息,或保留原来部分同步信息。
1.3 针对MPEG码流统计特性的算法
针对MPEG码流统计特性(Statistical behavior of MPEG)的算法称为VEA(Video Encryption Algorithm)算法。经压缩编码的码流因去除相关性,具有一定的随机性。将I帧(撇开头标志等特殊码流)分为8或16(通常16)大块(chunk),在任何chunk中,没有重复的字节模式。据此提出下面的VEA算法。
设一个I帧的某个chunk为如下形式:a1,a2,a3,a4,...,a2n-1,a2n。选择奇数号的字节组成奇队列(Odd List),选择偶数号的字节组成偶队列(Even List)。将两个新数据流异或。选择一种加密函数(例如DES)来加密偶队列a2,a4,...,a2n。得到的密文为:c1,c2,…,cn,E(a2,a4,…,a2n)。如果a2,a4,…,a2n没有重复模式(repeated pattern),说明具有足够随机性,a2,a4,…,a2n对a1,a3,…,a2n-1的简单异或,是一次一密乱码本(one-time pad)加密,这是被公认为非常保密的。VEA算法密级就决定于函数E。
该方法只加密部分视频流,待加密数据分为两半,一半用密码方法(函数E)加密,另一半用简单异或,因此总体减少了计算量,提高了计算速度。该方法不影响压缩率,适用于压缩的视频编码数据,而且压缩效果越好,加密效果也越好。
1.4 DCT频域系数乱序算法
DCT频域系数乱序算法(Zig-Zag Permutation Algorithm)把DCT频域系数8×8块按随机的顺序映射成1×64矢量,而不按ZIG-ZAG顺序。有人首先提供了三步基本算法,但设计者自己指出,基本算法对已知明文攻击是脆弱的,因此提供了两种附加方法增强算法的安全性。
(1) 对DC系数另用DES加密。
(2) 产生两张不同的顺序置乱序列表,随机选用。
DCT频域系数乱序算法速度很快。但存在严重的安全性问题。两种附加方法也无法解决。已知明文攻击(Known-plaintext attack)和唯密文攻击(Ciphertext only attack)都可以成功破解该算法。另外,经过加密的MPEG流大小将显著增加,最大可增加46%,严重降低压缩率。
2 新的视频加密方法
针对视频数据具有层次结构性强、数据量大以及实时传输要求高的特点,本系统采用了一种新式的视频加密算法。其主要思想为:仅对视频码流中的少部分重要数据进行高强度的加密。因为视频码流中各部分数据的重要性不同,某些关键数据(如视频宏块中的直流分量值DC,交流分量值AC和位移矢量MV等)虽然数据量比较小,但是对视频码流的解码和视频图像的重建起着至关重要的作用,所以仅对这些少量数据运用AES、IDEA等加密算法进行加密,就可以取得对整个视频码流安全加密的效果。该视频加密算法原理如图3所示。
该视频加密算法具有如下特点:(1)独立于视频编解码器。(2)独立于密码学算法,用户可以根据自己的要求选择不同的加密算法,如DES、AES或IDEA等。(3)对不同关键数据的选取和组合,可以提供高、中、低三个不同的加密级别,用户可根据不同的保密要求和网络带宽进行选择。(4)计算量小、加密速度快、附加带宽少。
3 新的视频加密方法的实现
3.1 新的视频加密方法的硬件实现
图4所示是基于对上述新的视频加密算法而设计的一种采用嵌入式主处理器DM1105和加密配置芯片DM2016的数字视频加密系统。
DM1105主要应用于卫星、有线信号以及地面传输的数字电视、IP数据的接收,也可以用于8/16位CCIR656标准YUV视频信号的接收。DM1105内集成了DVB标准解扰算法,可以同时进行32路解扰,还具备遥控器接收功能,通过扩展还能够外接两个PCMCIA插槽。图5是DM1105应用的原理结构框图。
3.2 新的视频加密方法的软件实现
示例采用C语言实现基于嵌入式系统的AES加密运算。
(1)先定义sbox 和pbox,并初始化,将它们放入code 中:
unsigned long code sbox[18] = {
0x243F6A88L , ……, 0x8979FB1BL
};
unsigned long code pbox[ 4 ] [256 ] = {
0xD1310BA6L , ……
};
(2) 定义两个全局变量key_pbox 和key_sbox ,存储初始化后的子密钥:
unsigned long key_pbox[18 ];
unsigned long key_sbox[ 4 ] [256 ];
(3) 完成下列函数:
//AES初始化函数
void AES_Constructor(void);
void AES_Destructor(void);
//设置AES密钥函数
BOOLEAN SetKey(const unsigned char *key, int keylen);
//AES加密函数
BOOLEAN Encrypt(const unsigned char *in, int inlen,
unsigned char *out, int *outlen);
//AES解密函数
BOOLEAN Decrypt(const unsigned char *in, int inlen,
unsigned char *out, int *outlen);
……
(4) 初始化嵌入式系统,用TESTKEY作为密钥进行初始化,对算法进行测试。
在编译优化后,对代码做进一步优化。首先使用TI集成开发环境的代码分析器(profiler)对代码进行分析。在CCS中可以统计某段代码的执行时间,这被称作剖析(profile)。代码剖析可以迅速地评估程序的性能以便优化代码。经过编译优化和代码优化后,AES算法在该嵌入式系统中具有高速数据处理能力,在保证安全性目标的同时,又不影响数字视频信号对通信实时性要求,从而有助于解决数字电视传输控制网络中实时数据加密和安全问题。
本文介绍了几种常用视频加密算法,分析了这几种算法的优缺点,提出了一种仅对视频码流中解码和视频图像的重建起着至关重要作用的少部分数据进行高强度加密的方法,并利用嵌入式芯片DM1105和加密配置芯片DM2016组成一个加密、解密系统来实现上述数字视频信号的加密。
参考文献
[1] 张镭,张川,徐正全.基于H.323协议的视频加密网关的设计[J].计算机工程,2006(14):138-140.
[2] 廉士国,孙金生,王执铨.几种典型视频加密算法的性能评价[J].中国图像图形学报2004(4):483-490.
[3] 李伟,刘树波,徐正全.基于TM1300的嵌入式网络视频编码器的设计[J].武汉大学学报,2004(3):110-113.
[4] 洪家平. 嵌入式系统加密技术在数字电视中的应用研究[J]. 电子技术应用,2008(9).
[5] 洪家平.AES在嵌入式系统起动加载程序中的应用[J].信息安全与通信保密,2007(2).