由于彩色图像数据量过大,在数字图像处理中通常都要进行压缩。对于需压缩的图像而言,由于置乱变换破坏了图像像素之间的相关性,会使压缩的效果变差。对于JPEG彩色图像,其数据压缩算法是在频域进行的,我们如果将频域加密算法与压缩算法结合进行,就不会增加太多的计算量。但对JPEG而言,如果在频域进行置乱变换,会破坏DCT系数的概率分布函数,从而使得Huffman编码无法按最优的方式使用,使压缩效率大大降低。为此,我们提出了基于JPEG压缩的频域加密算法。

一、基于Logistic映射的彩色图像加密算法原理

本加密频域算法使用Logistic映射来产生混沌序列。先用单向散列函数生成Logistic映射的两个初始值,用两个初始值进行混沌迭代产生两个混沌序列,然后按照一定的算法生成两个变换矩阵实现对彩色图像的频域加密。

二、基于Logistic映射的彩色图像加密算法设计

1、密钥生成

本加密算法利用单向散列函数SHA1来生成Logistic映射迭代初始值。SHA1函数是由美国国家标准和技术局和美国国家安全局设计的与DSS一起使用的安全散列算法,并作为安全散列标准(SHS)的联邦信息处理标准(FIPS)而公布,SHA1是SHA的修订版。该算法可将一定长度的任意输入消息压缩输出为固定的20字节。到目前为止,SHA1被认为是一种安全的算法。

在本加密算法中,需要两个Logistic初值x0和y0,由于SHA1的输出为20字节,我们将这20字节截取为两部分,前10字节生成x0,后10字节生成y0,并且使x0、y0(-1,1)。其中,x0、y0的生成方法可由使用者协商决定,本算法为简便起见,用每字节对10取模运算产生1位十进制小数,10字节共产生10位小数,因此本算法的精确度为10-10。

2、变换矩阵的生成

此加密算法是在彩色图像的JPEG压缩过程中进行的,而在JPEG压缩中,处理的块单位为8×8,因此本算法中变换矩阵的大小设计为8×8。我们需要两种变换矩阵,一种是符号矩阵S[1],一种是数值变换矩阵G。

(1)符号矩阵S的生成

符号矩阵S用于减少在频域加密过程中对DCT系数概率分布函数的破坏,产生方法为:用x0生成混沌实值序列xk,定义一个阈值函数基于Logistic映射的彩色图像加密算法设计实现,xk通过r1(x)生成混沌二值序列xk',将xk'中每1位构成1个矩阵元素,用来构造出符号矩阵S(8×8)。

(2)数值变换矩阵G的生成

用y0生成混沌实值序列yk,定义一个阈值函数基于Logistic映射的彩色图像加密算法设计实现,yk通过r1(y)生成混沌二值序列yk',将yk'中每8位构成1个矩阵元素,用来构造出数值变换矩阵G(8×8)。

三、基于Logistic映射的彩色图像加密算法实现

1、加密算法实现

Step1:输入待加密的彩色图像IM×N。

Step2:择取任意的字符串作为密钥,利用单向散列函数SHA1生成Logistic映射所需要的初始值x0、y0,输入Logistic映射的参数密钥。

Step3:用x0、y0生成混沌序列xk、yk(不使用序列的初始段部分),xk、yk分别经过阈值函数r1(x)、r1(y)的运算构造出符号矩阵Sij和数值变换矩阵Gij,其中,Sij、Gij皆为8×8矩

阵(i=1,2,M/8,j=1,2,N/8)。

Step4:将图像IM×N进行8×8_DCT变换,用JPEG量化表对其进行量化。

Step5:用符号矩阵Sij对相应的DCT块进行点乘法,改变部分DCT系数值的符号。

Step6:用数值变换矩阵Gij对相应的DCT块的每一元素的绝对值进行位异或运算,改变DCT系数量化值。

Step7:完成JPEG编码过程,生成频域加密后的JPEG图像。

2、解密算法实现

在JPEG解压缩过程中,用户输入正确的密钥后,将加密算法逆向运算,即可获得解密图像。

四、实验仿真

利用MATLAB_6.5来实现算法。对原始图像(512×512像素)文件加密实验,见图1。

基于Logistic映射的彩色图像加密算法设计实现任意选取密钥字符串为“abcd128”,μ=2,为了增强生成混沌序列的安全性,我们除去序列的初始段,使Logistic方程预先迭代n=10000次。

加密结果如图2所示。

基于Logistic映射的彩色图像加密算法设计实现

五、安全性分析

1、随机性测试

本算法主要是采用混沌映射产生的二值序列来进行加密运算,二值序列的随机性对整个算法安全性起着关键作用,我们使用NIST-FIPS-140-2标准来对本算法生成的二值序列进行随机性检验。

经过多次测试,结果如表1、2所示。

基于Logistic映射的彩色图像加密算法设计实现

由表1和2可知,本算法的二值混沌序列顺利通过了FIPS-140-2的4个测试,具备良好的随机性。

2、保密性测试

本加密算法使用符号矩阵S来改变DCT系数值符号,使用数值变换矩阵G来改变DCT系数量化值,从密码学角度来讲加强了密钥的扩散和混乱,提高了算法的安全强度。通过叠加混沌特性,加密图像在视觉上发生了色彩变化,图像更难读懂。在试验中,当选择错误的解密字符串“abcd129”进行解密时,生成如图3的错误解密图。

基于Logistic映射的彩色图像加密算法设计实现根本不能还原成原图像,这是因为利用SHA1散列函数生成Logistic方程的迭代初值时,输入字符串的细微改动都会体现到所生成的迭代初值中,而混沌系统本身具有极强的初始条件敏感性,迭代初值的细微差异将会导致生成的混沌序列完全不同。图4是参数的偏差为10-10时的错误解密图像。

基于Logistic映射的彩色图像加密算法设计实现

3、抗攻击测试

图5为加密图像经JPEG压缩为原大小20%后的解密图像,图6为加密图像受到10%强度的高斯噪声干扰后的解密图像,可以看出,经过一定压缩处理、噪声干扰的解密图像效果较好,具有较强的抗攻击能力。

基于Logistic映射的彩色图像加密算法设计实现

小知识之NIST-FIPS-140-2

FIPS标准是美国法律强制实施的一项标准,在加拿大也得到非常严格的实施,目前正在由ISO审批成为一项国际标准。FIPS 140-2作为一项重要的第三方认证基准,适用于各种加密产品,正在世界范围内得到广泛的认可。