时间:2024-05-04
吕 群,薛 伟
(江南大学 物联网工程学院,江苏 无锡 214122)
当今随着网络和多媒体技术的快速发展,越来越多的个人或者是公众信息通过网络进行传播,从而使得信息安全问题越来越多的受到人们的关注.传统的DES、3DES、IDEA、AES等加密算法是针对一维数据流而设计的,鉴于数字图像具有数据流大、空间有序、相关性强、冗余度高的特点,使用这些传统的算法时计算复杂度比较高,从而导致加密效率比较低[1].混沌系统具有的一些奇异特性,比如:对初始条件以及控制参数的高度敏感性,遍历性,伪随机性以及非周期性等,使得其在图像加密领域越来越受欢迎.当今已经有很多基于混沌系统的图像加密算法被提出,这些算法中的大多数都是使用了置乱—扩散这种模式.
在过去的大约十几年里,人们对上述的加密模式做了广泛的研究,并且提出了许许多多的算法,Chen等人为了提高算法的抗差分攻击的能力,提出了一种与相邻像素相关的置乱方法[2],同时算法中采用了置乱—扩散—置乱的模式;Wang等人在分析了用传统的Arnold变换对图像置乱的弊端后,提出了一种基于动态随机增长技术的分块图像加密算法[3];Benyamin等人提出一种对行列分块置乱以及对位平面进行扩散的图像加密算法[4];Xu等人根据混沌系统对经过位平面分解后的明文图像进行置乱与扩散[5];Xu等人提出一种对图像分块置乱以及对像素点动态索引进行扩散的图像加密算法[6].上述的几种加密算法总体来说加密效果都不错,但是在产生混沌序列的时候,混沌系统的初始值都与明文图像无关,因此不能很好的抵抗选择明文攻击.
混沌系统不仅被广泛用于设计加密算法,而且用混沌系统构造S-盒也是新的趋势.当今有许多用混沌系统构造S-盒的方法被提出[7,8].另外用S-盒进行替换具有很快的速度,因此有学者开始把S-盒用于图像加密算法中.文献[9]、文献[10]中分别提出了一种用S-盒对图像进行加密的算法,实验结果显示这两种算法都有不错的加密效果,但是文献[9]中的算法构造的S-盒个数有些多,使得算法的效率略有下降,同时混沌系统的初始值也与明文图像无关,抵抗选择明文攻击的能力也会下降.本文结合对前人加密算法存在的一些安全性问题,根据混沌系统、SHA-2以及S-盒提出一种新的图像加密算法.实验结果表明,该算法具有较好的抵抗统计分析、穷举攻击、选择明文攻击以及差分攻击的能力.
Hash函数是一个从消息空间到像空间的不可逆映射,在密码学中通常用于消息的认证、消息完整性的检测以及数字签名等[11].SHA(安全Hash算法)是Hash算法中是比较重要的一类,同时SHA系列中又包含了多种算法,表1列出了SHA系列算法的性能比较.
表1 哈希算法特性比较
Table 1 Characteristic comparison of SHA
算法攻击复杂度信息块大小循环次数字长散列值大小SHA⁃1602128<2648032160SHA⁃2242128<2646432224SHA⁃2562128<2646432256SHA⁃3842192<21288064384SHA⁃5122256<21288064512
在本文中使用的是SHA-512,该算法是把输入小于2128位长的消息,进行划分分组,每组1024位长,最后输出512位的散列值.在文中是通过该算法,产生加密过程需要的密钥.
本算法使用Zhou等人提出的两种一维混沌系统[12]对图像进行加密,这两种混沌系统分别被称为Logistic-Sine系统(LSS)、Tent-Sine系统(TSS),定义公式分别是公式(1)、(2).
Xn+1=(rXn(1-Xn)+(4-r)sin(πXn)/4)mod 1
(1)
(2)
公式(1)和公式(2)中的r表示系统的参数,并且r∈(0,4].两个混沌系统的分叉图分别如图1和图2所示.
图1 LSS系统分叉图Fig.1 BifurcationdiagramsofLSS图2 TSS系统分叉图Fig.2 BifurcationdiagramsofTSS
在本文的加密算法中,通过明文灰度值和SHA-512产生了一个512位的密钥,其中图像灰度值作为Hash函数的输入值.即使2幅明文图像的灰度值稍微有不同,那么产生的密钥也会完全不同.同时把这512位的密钥按每8位为一个整数(ki)进行划分,因此密钥K可以表示为如下的形式:
K=k1,k2,k3,…,k64
(3)
在本文的置乱过程中,根据正方形图像(如果明文图像不是正方形,先把明文图像改造成正方形)的像素点可以插入到相邻的像素点之间的性质,设计出左右映射置乱的方法.
左映射置乱的过程:假设明文图像是IM×M,把I的第一列I(1:M,1)中的像素点依次插入到第一行I(1,1:M)中的相邻两个像素点之间,第二列I(2:M,2)中的像素点依次插入到第二行I(2,2:M)中的两个相邻像素点之间.按照此方法,把I中的所有列插入到相应的行中,然后把所有的行中的像素点连接起来,形成一个一维的数组,最后把得到的数组转换为和I一样大小的二维矩阵I′.左映射置乱的示意图如图3所示,以4×4的矩阵为例.
图3 左映射示意图Fig.3 Diagram of left map
右映射置乱的过程与左映射置乱的过程类似,只是对图像映射时从右侧开始.右映射置乱的示意图如图4所示.
图4 右映射示意Fig.4 Diagram of right map
如果图像I的大小是M×N(M≠N),那么在图像中添加数值为0的元素,直到IM×M(M>N)为正方形图像或者IN×N(M 在本文的扩散过程中是把图像分成不同的组,然后用不同的S-盒替换像素灰度值.通过TSS混沌系统的混沌值将图像分为不同的a个组,假设图像为IM×M,具体分组的步骤如下: 步骤1.通过初始值x0和公式(2)迭代混沌系统M×N次得到长度为M×N的混沌序列X={x(1),x(2),…,x(M×N)}. 步骤3.令n=1,k=1. (4) 步骤5.令n=n+1,k=k+1,重复步骤4和步骤5,直到n=k=M×N时完成图像的分组. 把不同的组进行合并与分组的步骤类似,只需把公式(4)中的第一个公式换成I(k)=Hi(hi)即可. 如果在加密算法中使用固定的S-盒,那么不能有效的抵抗选择明文攻击.因此在本文中根据密钥K,对图像的不同组,由LSS混沌系统动态的产生不同的S-盒进行灰度值替代加密.根据混沌系统构造S-盒的步骤如下所示: 步骤1.定义一个序列Y=[0,1,…,255]和一个空序列Z=[],同时设置LSS混沌系统的初始值y0. 步骤4.如果序列Z中的元素个数小于256,那么重复步骤3,直到序列Z中的元素个数为256. 步骤5.把序列Z中的元素转换为一个16×16的表格,即最后得到的S-盒. 本文的加密算法也使用了“置乱-扩散”的模式,置乱阶段用左、右映射的方法,扩散部分把图像分为不同的四组分别进行加密,具体过程如下: 步骤1.假设明文图像是IM×N,用左右映射置乱的方法,改变图像中像素点的位置得到置乱图像I′.左右映射置乱的次数由密钥得到的四位十进制数s决定,s的千位和十位表示左映射置乱的次数;百位和个位表示右映射置乱的次数,左右映射置乱交替进行.s的计算公式如公式(5)所示,如果s<1000,那么s=s+1234. (5) 上式中⊕表示异或运算,mod(x,y)表示x除以y得到的余数,floor(x)表示小于等于x的最大整数. 步骤2.由密钥K根据公式(6)产生TSS混沌系统的初始值x0,然后根据3.3节中描述的图像分组方法将I′分为四组(H1,H2,H3,H4). (6) 步骤3.根据公式(7)和密钥K产生四个数值,这四个数值将用于构造S-盒的混沌系统的初始值中: (7) 步骤4.令i=1,q=0. 步骤5.用公式(8)产生LSS混沌系统的初始值y0,然后根据3.4节中描述的方法得到S-盒Zi. (8) 公式(9)中表示当前加密的像素点与已经加密的像素点关联,能更好的体现出扩散作用. 图5 图像加密算法Fig.5 Image encryption algorithm (9) (10) C1(0)=floor((k61+…+k64)/4) (11) 步骤7.通过下面的公式修改q.mean()表示平均数. q=mean(Ci)/256 (12) 步骤8.令i=i+1,重复步骤5-步骤7,直到所有的组都完成加密,得到C1,C2,C3,C4. 步骤9.根据公式(6)得到的混沌系统的初始值x0以及3.3节中的合并方法将C1,C2,C3,C4合并,并把合并后的数组转换为M×N的矩阵C,即最后的密文. 图5是整个加密过程的结构图.解密过程与加密过程类似,对密文图像实行相反的操作,就可以恢复出明文图像. 图6 实验结果Fig.6 Experimental results 图像的直方图可以用来表示图像中所有像素点灰度值的分布状况.一个好的加密算法,可以使得经过其加密后的密文图像的直方图分布的非常均匀.图7(a)、图7(b)分别表示Lena明文图像的直方图及密文图像的直方图;图7(c)、图7(d)分别表示Brain明文图像的直方图及密文图像的直方图.从图7(b)、(d)中可以看出密文图像的直方图分布的比较均匀,从而说明该算法可以很好的掩盖明文图像的灰度统计特性. 为了检验图像中两个相邻像素点之间的相关性,分别从明文图像和密文图像中随机抽取了2000对相邻的像素点.通过下面的公式计算在水平、垂直以及对角线方向上相邻像素间的相关系数,公式如下: (13) 图7 图像直方图分析Fig.7 Image histogram analysis 其中x和y分别表示相邻2个像素点的像素值,γxy即为相邻2个像素点的相关系数.图8表示的是Lena明文图像和密文图像在水平、垂直以及对角线方向上相邻像素点的相关性分布图.从图8(a)、(c)、(e)可以看出点分布的集中,从而说明原文图像在水平、垂直以及对角线方向上像素点间的相关性高,图8(b)、(d)、(f)中点分布的比较均匀,说明密文图像在水平、垂直以及对角线方向上相邻像素间的相关性低. 图8 相邻像素相关性分布图Fig.8 Correlation of adjacent pixels 表2、表3分别是Lena、Brain明文图像以及密文图像的相关系数,对于表2、表3中的数据,数值越接近1表示相关性越高,越接近0表示相关性越低.通过比较,本文的算法能有效的降低相邻像素间的相关性. 表2 Lena图像相邻像素相关系数及比较 方向明文图像本文算法文献[5]文献[6]文献[9]水平0.95680.0030-0.0230-0.02260.0164垂直0.96620.00140.00190.00410.0324对角0.91770.0008-0.00340.0368-0.0098 表3 Brain图像相邻像素相关系数及比较 方向明文图像本文算法文献[5]文献[6]文献[9]水平0.9568-0.00020.0019-0.00170.0063垂直0.9662-0.00320.0263-0.00230.0176对角0.91770.00210.01960.04430.0134 在信息论中,信息熵是表示信息不可预见(随机性)的一个重要的指标.常使用以下公式计算信息熵: (14) 其中P(mi)表示灰度值mi出现的概率.对于一幅256级的灰度图像来说,其理想信息熵大小是8.本文算法的信息熵计算结果如表4所示. 表4 明密文信息熵及比较 图像原图密文文献[5]文献[6]文献[9]Lena7.43187.99757.99747.99737.9046Brain5.04217.99717.99717.99717.9824 从表4中可以看出原始图像的信息熵并没有接近理想值,因此可认为原始图像的随机性不好;而经过本文算法加密后的密文图像的信息熵接近理想值,可以认为本文算法能够改善像素点的随机性,同时说明本文算法能够较好的抵抗信息熵攻击. 一个好的算法同时要对密钥敏感,也就是对同一幅密文,密钥稍微有差别,解密出的明文也会相差很大.为了验证敏感性,使3个初始参数分别改变10-15,或者是改变一个哈希值,然后依照表5所示的密钥对Lena密文图像进行解密,并观察解密图像以及解密图像的直方图.图9表示密钥敏感性测试实验图,从图中可以看出四组解密图都与原图不同,并且直方图分布的比较均匀,无法得到原图的任何信息,可以认为本文算法的敏感性较好. 表5 密钥敏感测试表 密钥x′0r1r2第一个哈希值10.26+10-153.993.96001020.263.99+10-153.96001030.263.993.96+10-15001040.263.993.961010 差分攻击的思路是:对明文图像进行很小的改变,然后用同一个加密算法对原始明文以及修改后的明文进行加密,对比2幅密文从而找到原始明文与密文之间的联系.一般使用NPCR(像素变化率)、UACI(平均改变强度)来评价算法抗差分攻击的性能. 表6 密文图像的NPCR和UACI NPCR(%)UACI(%)LenaBrainLenaBrain199.624699.620133.645633.5596299.650699.642933.490633.4791399.642999.633833.579533.5296499.685799.635333.549433.5024599.646099.595633.463433.5925均值99.6599.6333.5533.53文献[5]99.6299.6233.5133.46文献[6]99.6199.6233.5333.45 对于一幅256级的灰度图像NPCR的值大于99.6094%,UACI的值大于33.4635%时算法才是安全的.试验中随机选取了5个像素点,其灰度值都改变1,加密轮数为1轮,计算Lena、Brain图像相应的NPCR和UACI,结果见表6.通过比较可以看出,本文算法的NPCR和UCAI都能满足算法安全的要求,从而可以较强的抵抗差分攻击. 在算法中由于置乱过程的作用,使得密文图像中被剪切掉的那部分相应的错误解密图像会均匀的分布在整个解密图像中,因此密文图像即使受到剪切攻击后,在解密图像中也可以看到明文图像的内容.图10(a)为Lena密文图像被剪切掉四分之一的面积,图10(b)是相应的解密图像,从图中可以看出,即使密文图像有丢失,解密图像中的内容大致也可以被识别,因此可以认为本算法具有一定的抗剪切攻击的能力. 对于使用“置乱-扩散”模式的图像加密算法,攻击者经常使用的是选择明文攻击.选择明文攻击的方式是:攻击者能够得到使用加密机的机会,然后他(她)可以使用一些特殊的明文并对明文进行加密得到密文图像,进一步由明-密文对得出相应的中间密钥.对于中间密钥固定的算法来说,只要通过选择明文攻击得到中间密钥,就可以破解任何的加密图.选择明文攻击可以简述为以下两步: 图9 密钥敏感性测试Fig.9 Key sensitive test ① 使用一个与待解密图像相同大小的并且灰度值都是0的图像推导出用于扩散过程的中间密钥; ② 选择一个像素点位置可知的图像并对其进行加密得到密文图像,然后根据上一步得出的扩散部分的中间密钥对密文图像进行扩散部分的解密得到中间密文(置乱后的图像),最后根据中间密文以及原始图像得到置乱部分的中间密钥. 图10 抗剪切测试Fig.10 Decryption of the cropped cipher-image 对于本文算法来说,选择明文攻击是行不通的.本文算法的抗选择明文攻击主要体现在S-盒替换部分,本文中的S-盒是根据混沌系统产生的,而混沌系统的初始值与SHA-512和明文图像共同产生的散列值有关,因此可以认为本文算法的S-盒与明文图像有关.选择不同的明文图像得出的S-盒(中间密钥)是不相同的,因此以特定明文图像得出的S-盒并不能破解其他的密文图像,所以说本文算法可以较好的抵抗选择明文攻击. 加密过程的时间主要是来自置乱与扩散这两部分.对于置乱部分,本文根据正方形图像的像素点可以快速的插入到相邻的像素点之间的性质设计的置乱方案,比起迭代混沌系统构造置乱序列再进行置乱方法简单,速度快一些.表7是置乱阶段效率测试的数据表,在效率测试时以置乱图像水平方向的相关系数作为置乱程度的指标(混乱程度越好,相关系数越小),表格中混沌序列置乱方法使用的是3.2节中描述的常用混沌序列置乱方法.通过比较可以看出图像经过本文算法的置乱后像素点被打乱的更明显,并且加密时间也短,因此可以认为本文算法的置乱效率更高一些.对于扩散部分时间主要来源于根据混沌系统分组以及根据混沌系统构造S-盒.文献[5]的算法中先把图像进行位平面分解然后在位平面内进行置乱与扩散,使得要加密的元素变多,迭代混沌系统以及根据混沌序列进行操作的次数变多从而增大了加密时间;文献[9]中根据混沌系统构造了16个S-盒,相比于本文算法中构造4个S-盒消耗的时间要多,从而使得总体加密时间比本文算法的加密时间要长;文献[6]中在置乱与扩散过程中迭代混沌系统次数少、加密操作也简单使得加密时间也短.为了测试加密速度,在Matlab 8.3.0(R2014a)下根据四种算法对大小是256×256的Lena、Brain图像分别加密一轮,加密时间如表8所示.通过比较可见本文算法的加密速度比文献[5]、文献[9]中算法的加密速度要快,这也说明了本文中的加密算法在提高安全的同时也在一定程度上提高了加密的效率,另外本文算法的速度虽然比文献[6]中算法的速度要慢一些,但是在算法安全方面(例如,抵抗选择明文攻击)要好一些. 表7 置乱效率比较 方案轮数相关系数时间(s)本文算法1-0.00420.253混沌序列置乱10.01320.375Arnold变换置乱10-0.02790.330 表8 加密时间 本文算法文献[5]文献[6]文献[9]Lena1.413s5.042s0.849s2.693sBrain1.527s4.961s0.883s2.741s均值1.470s5.002s0.866s2.717s 本文结合前人的图像加密算法的一些性能比较,提出了一种新的基于“置乱-扩散”模式的图像加密算法.本文算法的特点主要有以下三点:首先,使用SHA-512和明文图像产生加密过程的密钥,这样使得混沌系统产生的序列与明文图像有关,当明文图像发生很小的变化,混沌序列就会发生很大的变化,从而使得算法能较好的抵抗选择明文攻击,另外SHA-512产生的散列值可以增大算法的密钥空间;其次在置乱阶段对图像本身进行左右映射来改变图像中像素点的位置,方法简单易于实现置乱效率高;最后在扩散阶段产生的S-盒与上一组密文相关联,并用S-盒对不同的图像块进行替换,不仅更好的体现了扩散效果还提高了扩散效率.实验结果表明,本文提出的加密算法密钥空间大、密钥敏感性强,同时还能有效的抵抗统计、差分等攻击,另外也在一定程度上提高了加密效率. [1] Wen Chang-ci,Wang Qin,Miao Xiao-ning,et al.Digital image encryption:a survey[J].Computer Science,2012,39(12):6-9. [2] Chen J X,Zhu Z L,Fu C,et al.A fast image encryption scheme with a novel pixel swapping-based confusion approach[J].Nonlinear Dynamics,2014,77(4):1191-1207. [3] Wang X,Liu L,Zhang Y.A novel chaotic block image encryption algorithm based on dynamic random growth technique[J].Optics & Lasers in Engineering,2015,66(66):10-18. [4] Norouzi B,Seyedzadeh S M,Mirzakuchaki S,et al.A novel image encryption based on row-column,masking and main diffusion processes with hyper chaos[J].Multimedia Tools & Applications,2015,74(3):781-811. [5] Xu L,Li Z,Li J,et al.A novel bit-level image encryption algorithm based on chaotic maps[J].Optics & Lasers in Engineering,2016,78(21):17-25. [6] Xu L,Gou X,Li Z,et al.A novel chaotic image encryption algorithm using block scrambling and dynamic index based diffusion[J].Optics & Lasers in Engineering,2017,91(7):41-52. [8] Han Dan-dan,Min Le-quan,Zhao Geng,et al.One-dimensional robust chaotic map and the construction of S-Box[J].Chinese Journal of Electronics,2015,43(9):1770-1775. [9] Rehman A U,Khan J S,Ahmad J,et al.A new image encryption scheme based on dynamic S-Boxes and chaotic maps[J].3d Research,2016,7(1):1-8. [10] Wang X,Wang Q.A novel image encryption algorithm based on dynamic S-boxes constructed by chaos[J].Nonlinear Dynamics,2014,75(3):567-576. [11] Ma Chun-guang.Modern cryptography[M].Beijing:National Defense Industry Press,2014. [12] Zhou Y,Bao L,Chen C L P.A new 1D chaotic system for image encryption[J].Signal Processing,2014,97(7):172-182. 附中文参考文献: [1] 文昌辞,王 沁,苗晓宁,等.数字图像加密综述[J].计算机科学,2012,39(12):6-9. [8] 韩丹丹,闵乐泉,赵 耿,等.一维鲁棒混沌映射及S盒的设计[J].电子学报,2015,43(9):1770-1775. [11] 马春光.现代密码学[M].北京:国防工业出版社,2014.3.3 图像分块/合并方法
3.4 S-盒的构造方法
3.5 加密过程
4 实验仿真与分析
4.1 图像直方图
4.2 相邻像素相关性
Table 2 Correlation coefficient between adjacent pixels
Table 3 Correlation coefficient between adjacent pixels4.3 信息熵
Table 4 Entropy of plain-image and cipher-image4.4 密钥空间及敏感性
Table 5 Key sensitive test4.5 差分攻击
Table 6 NPCR and UACI of cipher-image4.6 抗剪切攻击
4.7 抗选择明文攻击分析
4.8 算法效率
Table 7 Comparison of scrambling efficiency
Table 8 Time of encryption5 结束语
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!