基于Tent混沌序列的数字图像加密方法
2014-06-30翟依依王光义
翟依依+王光义
摘 要: Tent混沌映射结构简单但产生的混沌序列随机性能好,采用NIST测试能权威地检测序列的随机性能。通常运用混沌加密数字图像时,都是指定初值和控制参数。在此使用改进后的混沌序列,把初值的产生和明文图像联系起来,对图像进行置乱,再改变灰度值。仿真验证了此算法加解密的有效性和良好的安全性能。
关键词: Tent混沌映射; 随机性能; 图像加密; NIST
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2014)12?0073?05
Abstract: Tent chaotic mapping structure is simple, but has good chaotic sequence random performance, which can be detected by NIST (National Institute of Standards and Technology). When chaos is applied to the digital image encryption, the initial value and the control parameters of the chaotic systems are always given. The improved chaotic sequence is used in this paper to connect the generation of the initial value with the plaintext image. The random sequences generated by Tent mapping are employed in scrambling the image and changing the pixels of the image. The simulation results show that the algorithm is valid and has perfect safety performance for the encryption and decryption.
Keywords: Tent chaotic mapping; random performance; image encryption; NIST
0 引 言
随着互联网技术的发展,数字图像的应用越来越广泛,大量数字图像信息的传输对图像加密技术的要求也越来越迫切。常见的加密对象是文本信息。数字图像虽然可以转化成二维序列,但与文本信息相比信息量要大很多;同时,由于人的视觉系统特点,数字图像允许图像的内容有所缺损,而文本信息往往要求无损加密[1]。传统加密算法(如RSA或DES)虽然可以用于数字图像加密,但效率不高。一般图像加密的方法有3种:对图像像素位置置乱;对图像的灰度值加密;对像素位置和灰度值均进行加密。单纯的像素置乱易采用统计的方法进行破解[2]。可使用伪随机序列对像素的空间位置置乱和对图像灰度值进行加密。而伪随机序列的产生成为关键[2]。由于混沌系统具有良好的伪随机性,轨道不可预测性及初始状态敏感性等特征,不仅算法相对简单,执行效率高,而且加密的图像安全性好。本文提出了一种基于Tent混沌序列的数字图像加密算法,该算法加密时使秘钥的产生与明文相关,使产生的伪随机序列与明文也有关,从而增强了破译加密图像的难度。
1 混沌系统及序列随机性分析
1.1 Tent混沌系统
Tent混沌系统的系统方程:
1.2 改进的Tent混沌系统
由于原Tent系统迭代值分布在区间(0,1)内,先把迭代值取值范围扩展到(0,k)内,其中k>1。以下系统满足要求:
1.3 改进Tent混沌加密优点分析
由于目前混沌系统加密都是用于数字系统,每一个迭代值都会转化成一个有限长的二进制序列,即截取每一迭代值有限长的一段。当两个数值非常相近的迭代值不同的部分被忽略时,这两个截取后的值就完全相等,再进行迭代时后面的数值就会相等,即混沌序列产生了周期性。这种周期性是我们加解密时不希望看到的。把原本(0,1)上的迭代值经过改进拓展到(0,k)([k≥1])上,在概率意义上延迟了周期性在一个序列中的产生。设d=[xn+1-xn],则:
1.4 序列随机性分析
为了定量确定改进后的Tent系统产生序列的伪随机性,对序列迭代值离散化后进行NIST测试,来检测序列随机性能。
为了得到混沌数字序列,采用整数求余量化。取[x(0)=0.01,μ=1.999],产生2亿个迭代值。取每个迭代值小数点后3位组成一个新的数字,这个数字对256求余得到位于[0,255]的整数,再把这个整数化成8位二进制数,得到混沌二值序列。
再对这个序列进行NIST测试。测试采用的是美国国家技术与标准局NIST推出的STS(Statistical Test Suite)测试程序包。本次测试采用的是sts2.1.1测试包,包含16项测试,其中15项是对伪随机序列性能测试的指标。有两项评定序列性能指标,分别是P?VALUE值和PROPOTION通过率。
(1) P?VALUE值反应序列的均匀分布特性,计算公式如下:
[χ2=i=110(Fi-0.1m)20.1m] (4)
式中[Fi]是P?VALUE值在[0.1(i?1),0.1i]的数目,m是分的组数。
[P-VALUE=igamc(4.5,χ22)] (5)
若P?VALUE的值大于0.000 1,则可认为序列分布均匀。
(2) PROPOTION通过率
通过率主要是测试序列通过的百分比,测试通过的可信区间为:
[1-α±3α(1-α)/m] (6)
式中显著水平[α]=0.01,分组测试[m≥1 000]。
在linux平台下进行。把数据分为5 000组,每组序列[2×104] b。测试结果如表1所示。
表1:NIST测试结果
从表1可看出,PROPOTION通过率全部都合格,P?VALUE均匀分布中随机偏离测试,随机变量偏离测试,其余均通过。总体来说,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密钥设置成与明文像素值有关的值,由其来产生混沌迭代的初始值,产生的伪随机序列与明文有关,从而增加了破译难度。用产生的序列来进行对数字图像的像素置乱和灰度处理。加解密流程如图5所示。
2.1 产生密钥
本算法采用Tent混沌系统产生的迭代值。输入要加密图像,得图像大小为[M×N]。该图像可用二维矩阵[P(M,N)]表示。任取明文图像的一行(这里取第floor([M2])行,其中floor()是向下取整函数),对该行像素值求和得到一个整数,再把这个整数化成[0.099,0.1]之间的数,将其作为迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是图像像素点的列数;[h(i)]是某一点的像素值;[mod(x,y)]是求余函数。
2.2 置乱算法
(1) 混沌序列的产生。根据式(7)产生迭代初始值,令[μ=1.99],代入式(2)产生混沌序列[x(n)]。为了增加序列的随机性,从[x(n)]的start+1位开始(这里取start=200),如式(8)处理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置乱。对于其中任何一个合适的序列,对其进行排序产生一个新的序列[Ej(i)],再用一个长度为M×[N4]的数组[Fj(i)]存放[Ej(i)]的各个元素在原序列中的位置,也即记录下了序列元素位置的变化,如图8所示。把该序列对应的图像像素转化为1行[M×N]的矩阵,令其像素位置按照序列元素位置的变化规律变化,从而实现置乱。把其余几块图像按同样方法置乱好,再拼成一幅图像,即为置乱后的图像。
2.3 灰度值转换算法
置乱后的图像进行分块进行灰度值的处理,每块图像加密使用的混沌序列初值是该块图像像素之和按照式(7)再转化为[0.099,0.1]上的数。
再把每块图像按原顺序拼好后组成加密后的图像。
2.4 解密算法
根据两次异或后得到原数值的规律,加密后图像再与原序列异或一次后得到置乱后的图像,再按照置乱逆过程就可恢复原图像。
3 实验结果
为了验证该算法的加密效果,进行如下仿真。按照上述算法在Matlab R2009b平台上对Lena图像进行加解密操作。图像大小为256[×]256,分为4块。实验结果如图9~图15所示。
从得到的图像和灰度直方图可看出,加密后的图像无法辨识,而解密后无论原图还是灰度直方图,都和原图基本一致,加解密效果良好。且从加密后的直方图看不出明显的统计特征,该算法抗统计攻击能力也良好。
4 密钥敏感性分析
为了验证本算法对密钥的敏感程度,把置乱的初值和灰度值改变前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
进行解密,得到的解密图像及其灰度直方图如图16,图17所示。
由以上图像可知,密钥发生很小的变化,即使解密方法一样,无法正确解密出正确图像。因此该算法对解密时的密钥相当敏感。
5 结 语
通过以上一系列分析验证,Tent混沌系统虽然仅为一维混沌,复杂度不高,但产生的序列具有良好的随机性。基于Tent混沌系统的数字图像加密算法在密钥中融入明文信息,复杂度提高,抗破解能力加强。该算法实现简单,但加解密效果好,抗统计分析能力很强,密钥敏感性很强。下一步重点工作放在对Tent系统进行改进和对加密算法进行优化,进一步提高加解密效果和效率,以及抗各种干扰的能力。
参考文献
[1] 顾勤龙,姚明海.基于Logistic混沌序列的数字图像加密研究[J].计算机工程与应用,2003,39(23):114?116.
[2] 郑凡,田小健,范文华,等.基于Henon映射的数字图像加密[J].2008.
[3] 王晓飞.混沌序列及其在加密中的应用[D].杭州:杭州电子科技大学,2012:1?4,37?44.
[4] 刘祝华,曾高荣,谢芳森.像素值复合置乱的混沌图像加密算法[J].计算机工程与应用,2012,48(25):122?126.
[5] 陈艳峰,李义方.交叉分段相互置乱的双混沌序列图像加密算法[J].华南理工大学学报:自然科学版,2010,38(5):27?33.
[6] 穆秀春,訾鸿.一种基于混沌序列的彩色图像加密算法J].现代电子技术,2010,33(10):53?55.
[7] 邵伟力,孙奎远,赵学志.基于混沌序列的CCSDS图像压缩算法安全性扩展[J].现代电子技术,2011,34(10):121?123.
[8] 马文涛,余平安.一种基于Zigzag变换及混沌序列的图像加密方法研究与实现[J].现代电子技术,2008,31(5):104?106.
通过率主要是测试序列通过的百分比,测试通过的可信区间为:
[1-α±3α(1-α)/m] (6)
式中显著水平[α]=0.01,分组测试[m≥1 000]。
在linux平台下进行。把数据分为5 000组,每组序列[2×104] b。测试结果如表1所示。
表1:NIST测试结果
从表1可看出,PROPOTION通过率全部都合格,P?VALUE均匀分布中随机偏离测试,随机变量偏离测试,其余均通过。总体来说,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密钥设置成与明文像素值有关的值,由其来产生混沌迭代的初始值,产生的伪随机序列与明文有关,从而增加了破译难度。用产生的序列来进行对数字图像的像素置乱和灰度处理。加解密流程如图5所示。
2.1 产生密钥
本算法采用Tent混沌系统产生的迭代值。输入要加密图像,得图像大小为[M×N]。该图像可用二维矩阵[P(M,N)]表示。任取明文图像的一行(这里取第floor([M2])行,其中floor()是向下取整函数),对该行像素值求和得到一个整数,再把这个整数化成[0.099,0.1]之间的数,将其作为迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是图像像素点的列数;[h(i)]是某一点的像素值;[mod(x,y)]是求余函数。
2.2 置乱算法
(1) 混沌序列的产生。根据式(7)产生迭代初始值,令[μ=1.99],代入式(2)产生混沌序列[x(n)]。为了增加序列的随机性,从[x(n)]的start+1位开始(这里取start=200),如式(8)处理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置乱。对于其中任何一个合适的序列,对其进行排序产生一个新的序列[Ej(i)],再用一个长度为M×[N4]的数组[Fj(i)]存放[Ej(i)]的各个元素在原序列中的位置,也即记录下了序列元素位置的变化,如图8所示。把该序列对应的图像像素转化为1行[M×N]的矩阵,令其像素位置按照序列元素位置的变化规律变化,从而实现置乱。把其余几块图像按同样方法置乱好,再拼成一幅图像,即为置乱后的图像。
2.3 灰度值转换算法
置乱后的图像进行分块进行灰度值的处理,每块图像加密使用的混沌序列初值是该块图像像素之和按照式(7)再转化为[0.099,0.1]上的数。
再把每块图像按原顺序拼好后组成加密后的图像。
2.4 解密算法
根据两次异或后得到原数值的规律,加密后图像再与原序列异或一次后得到置乱后的图像,再按照置乱逆过程就可恢复原图像。
3 实验结果
为了验证该算法的加密效果,进行如下仿真。按照上述算法在Matlab R2009b平台上对Lena图像进行加解密操作。图像大小为256[×]256,分为4块。实验结果如图9~图15所示。
从得到的图像和灰度直方图可看出,加密后的图像无法辨识,而解密后无论原图还是灰度直方图,都和原图基本一致,加解密效果良好。且从加密后的直方图看不出明显的统计特征,该算法抗统计攻击能力也良好。
4 密钥敏感性分析
为了验证本算法对密钥的敏感程度,把置乱的初值和灰度值改变前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
进行解密,得到的解密图像及其灰度直方图如图16,图17所示。
由以上图像可知,密钥发生很小的变化,即使解密方法一样,无法正确解密出正确图像。因此该算法对解密时的密钥相当敏感。
5 结 语
通过以上一系列分析验证,Tent混沌系统虽然仅为一维混沌,复杂度不高,但产生的序列具有良好的随机性。基于Tent混沌系统的数字图像加密算法在密钥中融入明文信息,复杂度提高,抗破解能力加强。该算法实现简单,但加解密效果好,抗统计分析能力很强,密钥敏感性很强。下一步重点工作放在对Tent系统进行改进和对加密算法进行优化,进一步提高加解密效果和效率,以及抗各种干扰的能力。
参考文献
[1] 顾勤龙,姚明海.基于Logistic混沌序列的数字图像加密研究[J].计算机工程与应用,2003,39(23):114?116.
[2] 郑凡,田小健,范文华,等.基于Henon映射的数字图像加密[J].2008.
[3] 王晓飞.混沌序列及其在加密中的应用[D].杭州:杭州电子科技大学,2012:1?4,37?44.
[4] 刘祝华,曾高荣,谢芳森.像素值复合置乱的混沌图像加密算法[J].计算机工程与应用,2012,48(25):122?126.
[5] 陈艳峰,李义方.交叉分段相互置乱的双混沌序列图像加密算法[J].华南理工大学学报:自然科学版,2010,38(5):27?33.
[6] 穆秀春,訾鸿.一种基于混沌序列的彩色图像加密算法J].现代电子技术,2010,33(10):53?55.
[7] 邵伟力,孙奎远,赵学志.基于混沌序列的CCSDS图像压缩算法安全性扩展[J].现代电子技术,2011,34(10):121?123.
[8] 马文涛,余平安.一种基于Zigzag变换及混沌序列的图像加密方法研究与实现[J].现代电子技术,2008,31(5):104?106.
通过率主要是测试序列通过的百分比,测试通过的可信区间为:
[1-α±3α(1-α)/m] (6)
式中显著水平[α]=0.01,分组测试[m≥1 000]。
在linux平台下进行。把数据分为5 000组,每组序列[2×104] b。测试结果如表1所示。
表1:NIST测试结果
从表1可看出,PROPOTION通过率全部都合格,P?VALUE均匀分布中随机偏离测试,随机变量偏离测试,其余均通过。总体来说,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密钥设置成与明文像素值有关的值,由其来产生混沌迭代的初始值,产生的伪随机序列与明文有关,从而增加了破译难度。用产生的序列来进行对数字图像的像素置乱和灰度处理。加解密流程如图5所示。
2.1 产生密钥
本算法采用Tent混沌系统产生的迭代值。输入要加密图像,得图像大小为[M×N]。该图像可用二维矩阵[P(M,N)]表示。任取明文图像的一行(这里取第floor([M2])行,其中floor()是向下取整函数),对该行像素值求和得到一个整数,再把这个整数化成[0.099,0.1]之间的数,将其作为迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是图像像素点的列数;[h(i)]是某一点的像素值;[mod(x,y)]是求余函数。
2.2 置乱算法
(1) 混沌序列的产生。根据式(7)产生迭代初始值,令[μ=1.99],代入式(2)产生混沌序列[x(n)]。为了增加序列的随机性,从[x(n)]的start+1位开始(这里取start=200),如式(8)处理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置乱。对于其中任何一个合适的序列,对其进行排序产生一个新的序列[Ej(i)],再用一个长度为M×[N4]的数组[Fj(i)]存放[Ej(i)]的各个元素在原序列中的位置,也即记录下了序列元素位置的变化,如图8所示。把该序列对应的图像像素转化为1行[M×N]的矩阵,令其像素位置按照序列元素位置的变化规律变化,从而实现置乱。把其余几块图像按同样方法置乱好,再拼成一幅图像,即为置乱后的图像。
2.3 灰度值转换算法
置乱后的图像进行分块进行灰度值的处理,每块图像加密使用的混沌序列初值是该块图像像素之和按照式(7)再转化为[0.099,0.1]上的数。
再把每块图像按原顺序拼好后组成加密后的图像。
2.4 解密算法
根据两次异或后得到原数值的规律,加密后图像再与原序列异或一次后得到置乱后的图像,再按照置乱逆过程就可恢复原图像。
3 实验结果
为了验证该算法的加密效果,进行如下仿真。按照上述算法在Matlab R2009b平台上对Lena图像进行加解密操作。图像大小为256[×]256,分为4块。实验结果如图9~图15所示。
从得到的图像和灰度直方图可看出,加密后的图像无法辨识,而解密后无论原图还是灰度直方图,都和原图基本一致,加解密效果良好。且从加密后的直方图看不出明显的统计特征,该算法抗统计攻击能力也良好。
4 密钥敏感性分析
为了验证本算法对密钥的敏感程度,把置乱的初值和灰度值改变前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
进行解密,得到的解密图像及其灰度直方图如图16,图17所示。
由以上图像可知,密钥发生很小的变化,即使解密方法一样,无法正确解密出正确图像。因此该算法对解密时的密钥相当敏感。
5 结 语
通过以上一系列分析验证,Tent混沌系统虽然仅为一维混沌,复杂度不高,但产生的序列具有良好的随机性。基于Tent混沌系统的数字图像加密算法在密钥中融入明文信息,复杂度提高,抗破解能力加强。该算法实现简单,但加解密效果好,抗统计分析能力很强,密钥敏感性很强。下一步重点工作放在对Tent系统进行改进和对加密算法进行优化,进一步提高加解密效果和效率,以及抗各种干扰的能力。
参考文献
[1] 顾勤龙,姚明海.基于Logistic混沌序列的数字图像加密研究[J].计算机工程与应用,2003,39(23):114?116.
[2] 郑凡,田小健,范文华,等.基于Henon映射的数字图像加密[J].2008.
[3] 王晓飞.混沌序列及其在加密中的应用[D].杭州:杭州电子科技大学,2012:1?4,37?44.
[4] 刘祝华,曾高荣,谢芳森.像素值复合置乱的混沌图像加密算法[J].计算机工程与应用,2012,48(25):122?126.
[5] 陈艳峰,李义方.交叉分段相互置乱的双混沌序列图像加密算法[J].华南理工大学学报:自然科学版,2010,38(5):27?33.
[6] 穆秀春,訾鸿.一种基于混沌序列的彩色图像加密算法J].现代电子技术,2010,33(10):53?55.
[7] 邵伟力,孙奎远,赵学志.基于混沌序列的CCSDS图像压缩算法安全性扩展[J].现代电子技术,2011,34(10):121?123.
[8] 马文涛,余平安.一种基于Zigzag变换及混沌序列的图像加密方法研究与实现[J].现代电子技术,2008,31(5):104?106.