APP下载

基于混沌系统和HMAC算法的图像加密研究

2022-02-09岳文文魏胜非周培钊

计算机仿真 2022年12期
关键词:明文密文信息熵

岳文文,魏胜非,周 凯,周培钊

(东北师范大学物理学院,吉林 长春 130024)

1 引言

信息加密是保护信息安全的一种重要手段,图像数据相对于文本数据而言,具有数据量大,数据相关性强和数据冗余信息大等特点,使传统的基于文本的加密方法不再适用于图像加密系统。因为混沌系统具有初值敏感性、内在随机性、遍历性和非规则的有序性等核心特性,在密码学领域得到了广泛的研究和应用[1]。基于混沌的图像加密算法有着良好的发展前景,许多学者提出了各种优秀的图像加密算法。文献[2]提出对明文图像分别进行了块操作和整体操作,利用Logistic映射选择分块置乱的子块和动态Arnold映射置乱,借助Tent映射、Sine映射进行分块扩散;结合Tent-Sine映射进行整体扩散,得到最终的密文图像。针对一维混沌系统结构简单,随机性弱的缺点,文献[3-5]提出使用二维复合混沌系统来加密图像,产生序列的复杂度高,密钥空间大,但初始密钥与明文图像无关,不能很好地抵抗选择明文攻击。文献[6]提出了一种二维 Chebyshev-Sine 映射,通过分析轨迹图发现新二维混沌映射比一维混沌映射拥有更宽广的混沌范围和良好的遍历性,对初始条件和系统参数具有高度敏感性,实现成本相对较低。基于此,提出一种线性混合层图像加密算法:通过行移位和列混合有效改变图像像素空间位置和像素频域中的值。文献[7]提出一种混沌系统和脱氧核糖核酸 (Deoxyribonucleic Acid,DNA)编码结合的图像加密方法,但混沌系统的初始值与明文无关,算法难以抵抗明文攻击。文献[8]提出了将超混沌映射和自编码技术结合起来的图像加密算法,该算法加密效果较好,但过于复杂,不利于实现。

本文提出一种与明文关联的二维Logistic-Sine混沌系统(Two-Dimensional Logistic-Sine Chaotic System,2D-LSCS)加密算法。设计思想是利用HMAC-SHA256算法产生的256bit的消息认证码(Message Authentication Coad,MAC),一方面用来监测图像在加密传输过程中是否被篡改,另一方面,用来控制2D-LSCS混沌映射的初始值和参数,利用2D-LSCS混沌映射产生4个伪随机序列,分别应用于前向扩散、置乱和后向扩散模块。通过仿真,从信息熵、像素变化率(the Number of Pixels Change Rate,NPCR)、统一平均变化强度(Unified Average Change Intensify,UACI)和像素相关性、密钥空间等因素来看,该方案加密效果比较理想。

2 相关工作

2.1 HMAC算法

哈希消息认证码[9](Hash-based Message Authentication Code,HMAC)是一种基于数据摘要算法和共享密钥的消息认证协议,它可以有效地防止数据在传输过程中被篡改,维护了数据的完整性、可靠性和安全性。HMAC算法除了需要数据摘要算法外,还需要一个密钥。HMAC的密钥可以是任何长度,如果密钥的长度超过了摘要算法信息分组的长度,则首先使用摘要算法计算密钥的摘要作为新的密钥。密钥的长度与安全强度是相关的,通常选取密钥长度不小于所选用摘要算法输出的信息摘要的长度。在本文中使用了单向散列函数SHA-256[10],输入明文图像和100字节的十六进制外部密钥可生成由64位十六进制数表示的MAC值,此MAC值是一个和输入的消息以及密钥都相关的长度固定的比特序列。数字图像和密钥有任何微小的变化,那么产生的MAC值就会发生巨大的变化。

具体流程如下:

1)由于输入密钥长度大于摘要信息块长度,因此使用摘要算法计算出一个长度为L的新密钥。

2)将上一步得到的密钥字符串与ipad做异或运算,得到序列ipadkey。

3)将需要处理的数据流与ipadkey结合,组成新的序列。

4)利用SHA-256函数生成64bit散列值n1。

5)将第一步得到的密钥字符串与opad做异或运算得到序列opadkey。

6)将散列序列n1与opadkey结合,组成新的序列。

7)再次利用SHA-256函数生成64bit的散列值,输出的结果就是最终的MAC值。

其中ipad和opad分别是输入输出助记符,其值0x36和0x5c。

2.2 2D Logistic-Sine复合混沌映射

本文采用的是Logistic混沌映射[11]和Sine混沌映射[12]进行级联得到二维复合混沌系统,Logistic混沌映射的数学表达式如式(1)所示

xi+1=μxi(1-xi)

(1)

由图1(a)中可以看出,当控制参数3.569945627<μ≤4时,系统处于混沌状态。

Sine混沌映射的数学表达式如式(2)所示

xi+1=βsin(πxi)

(2)

式中,β为Sine混沌映射的控制参数,0<β<1,x为Sine混沌映射的状态变量,0

图1 三种混沌系统的分岔图

本算法中使用了两个一维混沌映射,由于一维混沌映射范围小,结构简单,使用一维混沌映射对图像加密效果不好,所以本算法将两个经典的一维混沌映射进行级联,将Logistic映射的输出作为Sine映射的输入,构造出二维复合混沌映射,可以扩大混沌映射的范围,混沌效果更好。2D-LSCS的数学表达式如式(3)所示

(3)

其中k为级联参数。图1为三种混沌系统的分岔图,可见2D-LSCS混沌参数β处于混沌区间的范围比Logistic映射和Sine映射更宽,并且没有空白窗,分布更加均匀,随机性更强,能够很好地抵御统计特性分析。因此新的二维复合混沌映射比一维混沌映射有更好的统计性能,加密效果更好。

3 图像加密

3.1 混沌密码发生器

混沌密码发生器用于产生和明文图像大小相同的4个伪随机矩阵,记为X,Y,R,W。由明文图像Baboo和100字节的外部密钥生成的64位十六进制的MAC值如下:

[B23225CDFBC13E4FA838E4333B8E2CA284BAB7A83EAD29

E25D05B57FB66EDC84]

由明文图像Lena和100字节的外部密钥生成的64位十六进制的MAC值如下

[A509E4FA8C228AD2CEF04DB1C5AA7F9586C93F8A1E1A40

F895B7648649F1E061]

可见,明文图像不同,那么产生的MAC值不一样。一方面,将接收方的消息认证码与发送方的消息认证码进行对比,可监测图像在加密传输过程中是否被篡改。如果没有差异,则传输过程安全。另一方面,利用该256 bit的MAC值,将十六进制数转化为十进制数,分为8组,表示为S=[s1,s2,s3,s4,s5,s6,s7,s8],根据式(4)生成2D-LSCS混沌映射的初始值和控制参数。

(4)

步骤1:将x0,y0作为2D-LSCS新的初始值,迭代二维复合混沌序列r1+r2次跳过过渡态,然后继续迭代MN次,得到长度为MN的状态变量序列,分别记为

{xi},i=1,2,…,MN,{yi},i=1,2,…,MN.

步骤2:由序列{xi}和{yi},i=1,2,…,MN。按照式(5)得到矩阵X,Y,R和W

(5)

其中u=1,2,…,M,v=1,2,…,N,L=max(M,N),r1,r2,r3,r4为初始密钥。

通过上述步骤得到四个随机矩阵,X随机矩阵用于前向扩散,R,W用于置乱模块,Y用于后向扩散模块。

3.2 前向扩散

图像的扩散操作主要是改变像素点的像素值,通过前向扩散模块将明文P转化为矩阵A,通过式(6)完成前向扩散操作:

(6)

通过上述扩散操作得到矩阵A。

3.3 图像置乱

图像的置乱操作不会改变图像的像素值,只改变图像像素点的位置。将像素点A(i,j),i=1,2,…,M;j=1,2,…,N与A(m,n)置换位置,具体操作为:

通过式(7)先计算出矩阵A(i,j)所在行所在列的全部元素(不含A(i,j))之和,分别记为rowi和colj。

(7)

通过混沌序列产生的伪随机序列R和W,通过式(8)计算出置换位置的坐标,即

(8)

如果m=i,n=j,则A(i,j)与A(m,n)的位置保持不变。否则A(i,j)与A(m,n)互换位置,同时根据A(m,n)的低三位的值,将A(i,j)进行循环移位,即式(9)所示。

A(i,j)=A(i,j)<<<(A(m,n)&0x7)

(9)

其中,x<<

按照上述方法,先置乱矩阵A的第M行A(M,1toN-1),然后再置乱矩阵A的第N列A(1toM-1,N),接着按从左向右再从上向下的扫描顺序依次置乱矩阵A的元素A(1toM-1,1toN-1),最后调整矩阵A中元素A(M,N)的位置。最终得到置乱图像B。

3.4 后向扩散

通过后向扩散模块将矩阵B转化为矩阵C,经过前向扩散和后向扩散两次扩散,图像的加密效果会更好。后向扩散的具体操作如式(10)所示

(10)

通过正向扩散-置乱-反向扩散方法最终得到密文图像。整个的加密流程如图2所示。

图2 加密流程图

4 实验与分析

选择大小为256×256的Lena和Baboo灰度图,在Matlab2016a上完成仿真。输入参数为K=[0.7895,0.4487,69,138,91,105]。结果如图3所示。

图3 原图像和加密后的图像

4.1 灰度直方图分析

直方图可以反映一幅图像里全部灰度值的分布情况,从图4可以直观地看出,Lena和Baboo明文的直方图显示灰度值分布很不均匀,而加密之后的密文图像的直方图分布比较均匀,两图直方图相差巨大,可以很好地隐藏明文信息[13]。说明加密之后的图像可以更好地抵抗统计分析的攻击。

图4 Lena和 Baboo原图直方图和密文直方图

4.2 像素相关性分析

另一个度量统计信息的尺度是相关系数[14]。通过随机选择2000对相邻像素点和计算结果,在密文图像中从水平、垂直垂直和正对角线、反对角线四个方向进行分析,根据式(11)~(14)计算相关系数,以Baboo灰度图像为例,结果如图5所示。结果表明,所提出的加密方案与原始图像相比具有较低的相关性。

(11)

(12)

(13)

(14)

表1显示了Baboo的明文和相应加密图像的四个方向上相邻像素的相关系数结果,并且和文献[15]进行了对比。由表1可知,本算法加密图像的相关性明显较低(接近于零)。

表1 相关系数

图5 Baboo明文和密文各个方向上的相关性

4.3 信息熵计算

信息熵可以衡量信息的不确定性程度,它测量每个强度级别的像素分布。均匀分布越好,密码抵抗统计攻击的能力就越强。对于强度为0-255的灰度图像,真正随机加密消息的理想值为8,或者换句话说,该值越大,不确定性越大,可视信息越少,均匀分布就越高。信息熵在数学上定义如式(15)所示。

(15)

这里,L为图像的灰度等级数,表示灰度值 出现的概率。对于L=256的灰度图像,信息熵H的理论值为8。表2列出了Baboo,Lena两幅图像的信息熵,及其相应密文的信息熵,同时给出了文献[16]、[17]对应图像的信息熵。

表2 信息熵

从表中可以看到这个结果非常接近8。表明本算法能够较好地抵抗统计攻击。

4.4 差分攻击分析

为测试本文所提出的图像加密方案对差分攻击的安全性能,使用了两个额外的分析,像素数变化率(NPCR)和统一平均变化强度(UACI)[18]。NPCR测试是在C1和C2两个密文图像之间的测试,它们的普通图像略有不同。UACI测量C1和C2两个密文图像之间的关系。这两种测试的区别在于,NPCR关注的是不同攻击中变化像素值的绝对数量,而UACI集中于C1和C2这两种密文图像之间的平均差异[18]。按照式(16)~(18)计算NPCR和UACI。

(16)

(17)

(18)

其中D(i,j)是差分函数,表示来自两个密文图像C1和C2在同一位置的像素是否相等。L是允许的最大像素强度(即8位像素值中的255)。一个好的图像加密方案应该对普通图像(即使是1位)的任何变化都很敏感,并且应该达到大约99%的NPCR值和15%以上的UACI值。对于8位灰度图像,NPCR和UACI的理论值分别为NPCR=99.6094%,UACI=33.4635%。

表3列出了提出方案的加密测试的NPCR和UACI的值,从表3中可以看出,文中的方案满足这两个性能指标,可以很好地抵抗差分攻击。

表3 NPCR和UACI测试结果

4.5 密钥空间分析

图像加密系统的密钥空间应该足够大,这样可以有效地对抗穷举攻击。该算法在对图像加密前使用了100字节的外部密钥,产生了256bit的MAC值。给定的初始值为K={x0,y0,r1,r2,r3,r4},其中,x0,y0∈(0,1),计算精度为10-14,r1~r4为[0 255]中的整数,因此可提供约1.2433×10114大小的密钥空间,其值足够大可以抵抗对图像的穷举攻击。

5 结语

为实现图像加密算法与明文关联,本文提出了一种基于混沌理论和HMAC-SHA256算法的图像加密方案。Matlab仿真结果和理论分析表明,所提出的混沌图像加密方案能够提供满足所需安全要求的类随机复杂密码图像,解决了加密明文图像的密码与明文无关的问题,不仅增大了密钥空间,而且能抵抗大多数现有的密码分析和密码攻击,如静态攻击和差分攻击,保障了数字图像的安全传输。下一步将在此算法基础上考虑如何减少图像加密传输所用时间,进一步改进和完善所提方案。

猜你喜欢

明文密文信息熵
基于信息熵可信度的测试点选择方法研究
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
密钥共享下跨用户密文数据去重挖掘方法*
奇怪的处罚
一种基于信息熵的雷达动态自适应选择跟踪方法
一种基于密文分析的密码识别技术*
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
基于信息熵的循环谱分析方法及其在滚动轴承故障诊断中的应用