1. 引言
多媒体技术是当今信息技术领域发展最快、最活跃的技术,涵盖了文本、图像、声音、视频等基本要素。图像作为信息传递的一种载体,能够生动直观地传递信息。今天,由于互联网的快速发展,数字图像已经广泛应用于社会、政治、经济、军事等领域 [1]。然而快速发展的数字图像的存储和处理技术,为数字图像在网络上传输带来了一系列安全问题。数字图像通过公用网络传输时,很容易遭受非法窃取、复制或被恶意修改、数据泄露等 [2]。因此,对图像信息进行加密是很有必要的。
传统的加密方法如AES和RSA并不适合用于图像加密。使用这些方法加密数据量大或相邻像素之间相关性强的信息,如图像或视频时,会出现加密效果差,加密速度慢等缺点。混沌是非线性系统的一种特殊的运动形式,混沌系统具有伪随机性、不可预测性、对初始条件的极度敏感性等特征 [3],使得混沌系统更适合用来进行图像加密。文献 [4] 提出一种循环移位和移位异或的操作对图像进行加密。文献 [5] 对两个分段线性混沌映射进行交叉耦合,得到了一个新的混沌映射,并将该映射产生的序列用于图像的置乱和扩散操作。文献 [6] 提出了一种基于3D扰动和超混沌系统的多图像加密算法。文献 [7] 提出了一种比特反转的方法来增强混沌映射的混沌特性,并通过实验得到改进后的混沌映射具有更好的统计特性,另外该方法还能够有效地增大混沌映射的参数范围。文献 [8] 提出了一种改进Logistic映射的双摄动和反馈控制方法,对Logistic映射的系统参数和状态变量进行相互扰动,从而有效地减少了Logistic映射的动力退化现象。文献 [9] 采用了扫描和循环移位的双置乱操作,这比单阶段的置乱具有更好的置乱效果。文献 [10] 改进了Henon映射,并利用改进后的Henon映射设计了一种快速图像加密算法。文献 [11] 提出了一种多向扩散的技术,该技术对图像的所有像素都进行操作,从而消除了每个像素所包含的信息。文献 [12] 使用了像素级的扩散和比特级的置乱对图像进行加密。文献 [13] 提出了一种基于广义Henon映射和改进约瑟夫遍历映射的图像加密算法,利用明文图像和安全哈希算法得到跟明文相关的摘要信息,并结合原始的密钥产生新的密钥。文献 [14] 使用明文图像的MD5值来更新密码序列,进一步地增强了明文的敏感性。
传统的Henon映射存在混沌轨道比较简单,混沌空间较小等问题。本文将对传统的Henon映射做一种改进,并基于改进后的Henon映射提出一种像素级和比特级的双置乱再扩散的加密算法。传统的Henon映射的混沌轨道集中在原点附近的若干条曲线上,通过因式倒转将Henon映射的每一维的数值范围从
扩大到
,然后再通过去整的操作来增强混沌序列的混沌特性。最后通过实验对比改进前后的Henon映射产生的序列的特性,发现改进后的Henon映射的遍历性、伪随机性更优秀。与文献 [10] 中的改进操作进行对比,本文改进的Henon映射的混沌控制参数的范围更大,Lyapunov指数更大,产生的序列的混沌特性更好。利用改进的Henon映射,提出一种像素级和比特级的双置乱再扩散的图像加密算法,首先使用SHA-256安全散列算法将明文转换成摘要信息,更新改进Henon映射的初始值和系统参数并产生混沌密钥流,之后用于后续的置乱和扩散操作。使用安全散列算法获取明文的摘要信息来对原始的密钥进行更新,使得密钥流与明文信息相关联,从而可以更好地抵御已知或者选择明文攻击。实验表明,本文所提出的加密算法具有更优良的安全性。
本文的其余部分组织如下。第2节介绍了改进的Henon映射,并通过数值实验比较了改进前后的Henon映射的混沌特性。第3节提出了一种图像加密算法,并介绍了具体的加密过程。第4节对加密算法进行了性能分析,之后给出了实验结果。第5节对论文进行了总结。
2. 基于改进的Henon映射的混沌系统
传统的二维Henon映射是一个二维非线性系统,存在混沌空间小,混沌轨道简单等问题。本节将对Henon映射进行改进,并使用分岔图、Lyapunov指数图、SP800-22 Revision 1a等方法对改进前后的Henon映射产生的混沌序列进行检测。
传统的二维Henon映射系统的方程如(1)所示 [15]:
(1)
其中a和b是控制参数,当
和
时,Henon映射处于混沌状态。混沌轨道状态值的范围是
,
。
下面针对Henon映射的控制参数范围受限等问题,对Henon映射进行改进,产生序列的具体步骤如下:
已知初始值
和控制参数a,b,先将其代入公式(2),得到传统的Henon映射产生的数值的倒数
,
,
(2)
转换之后,
,
,其中控制参数
,
,再利用公式(3)对
,
进行修正,将数值映射到
,得到新的
,
。
(3)
按照上述操作完成了系统的一次迭代,将迭代结果作为下一次迭代的初始值,进行n次迭代后可以得到长度为n的序列X,Y。
图1(a)、图1(b)是传统的Henon映射和改进后的Henon映射的分岔图,其中固定了控制参数
,可以看出改进后的Henon映射的控制参数a具有更大的范围。
图2(a)、图2(b)分别是控制参数为
,
,初始条件
为
的Henon映射和改进后的Henon映射的混沌轨道,对比这两幅图可以看出,传统的Henon映射的混沌轨道简单,无法遍历整个窗口,而改进后的Henon映射的遍历性更好,轨道遍历了整个正方形。

(a) 传统的Henon映射 (b) 改进后的Henon映射
Figure 1. Bifurcation diagram
图1. 分岔图

(a) 传统的Henon映射 (b) 改进后的Henon映射
Figure 2. Chaotic orbit
图2. 混沌轨道
Lyapunov指数是衡量混沌系统动力学特性的一个重要的指标,它指的是系统在相空间中相邻轨道间收敛或发散的平均指数率。n维的混沌系统具有n个Lyapunov指数,只要其中有一个Lyapunov指数大于零,该系统就会进入混沌状态,并且该数值越大,系统的混沌性就越强。图3是改进前后的Henon映射的Lyapunov指数图,其中图3(a)、图3(b)是传统的Henon映射分别固定控制参数b,a的Lyapunov指数图,可以看出每种情况下都有一个Lyapunov指数小于零,并且只有当
时,系统才会处于混沌状态。由于改进后的Henon映射存在修正操作,因此改进后的Henon映射的Lyapunov指数需要通过时间序列来估计,图3(c)、图3(d)是对改进的Henon映射产生的混沌时间序列进行估算得到的Lyapunov指数图,每种情况的两个Lyapunov指数都大于零,且具有更大的参数范围,从这里也可以看出改进Henon映射具有更好的混沌性能。

(a) Henon映射,
(b) Henon映射,

(c) 改进Henon映射,
(d) 改进Henon映射,
Figure 3. Lyapunov exponent
图3. Lyapunov指数
自相关和互相关系数分别表示同一个时间序列和两个时间序列在任意两个不同时刻的取值之间的相关程度,可以通过它们来检测混沌系统产生的混沌序列的伪随机性和不可预测性。下面对传统的Henon映射和改进的Henon映射产生的混沌序列进行检测,其中控制参数
,
,初始条件
为
,序列长度为105。图4(a)、图4(d)分别表示改进前后的Henon映射产生的序列X的时间序列图,图4(b)、图4(e)分别表示改进前后的Henon映射产生的序列X的自相关图,图4(c)、图4(f)分别表示改进前后的Henon映射参数的序列X、Y的互相关图。对比图4(b)、图4(e)可以看出,改进后的Henon映射产生的序列的自相关性明显弱于改进前的映射产生的序列,改进后的Henon映射生成的序列具有理论函数
的特性。由公式(1)可知传统的Henon映射产生的序列X和序列Y的子序列
,
存在倍数关系,即
,因此图4(b)和图4(c)是类似的。图4(c)中坐标0附近的相关系数都超过了0.2,而图4(f)中的相关系数都在8 × 10−3以内,说明对映射进行改进能够有效降低其序列的自相关性和互相关性。
SP800-22 Revision 1a是美国国家标准技术研究所(NIST)发布的一系列关于信息安全的指南,里面给出了15种用于检测比特序列随机特性的测试方法 [16]。每种方法都会计算得到一个p值,和给定的显著性水平进行比较,以此来判定该比特序列是否具有随机性。在进行测试之前,需要先将混沌系统产生的序列转换成比特序列,转换方法是先将序列的每个元素取绝对值,之后将其小数点后的四位数对24取模并将结果转换成长度为4的比特序列,然后再将所有元素转换得到的比特序列进行组合,最终得到用于测试的比特序列。使用的控制参数
,
,初始条件
为
,通过Henon映射生成混沌序列,并利用上述方法转换成长度为106的比特序列,采用的显著性水平为0.01,当测试计算得到的p值大于或等于显著性水平时,则认为该比特序列具有随机性,反之则认为序列是非随机的。15种测试方法的结果如表1和表2所示。测试结果显示传统的Henon映射产生的序列有部分测试未通过(未通过测试的标注*),而改进后的Henon映射产生的序列通过了全部测试,说明改进后的Henon映射产生的序列具有更好的随机性。

Table 1. SP800-22 Revision 1a test of sequence X
表1. 序列X的SP800-22 Revision 1a测试

Table 2. SP800-22 Revision 1a test of sequence Y
表2. 序列Y的SP800-22 Revision 1a测试

Table 3. Random travel test of sequence X
表3. 序列X的随机旅行测试

Table 4. Random travel variant test of sequence X
表4. 序列X的随机旅行变种测试

Table 5. Random travel test of sequence Y
表5. 序列Y的随机旅行测试

Table 6. Random travel variant test of sequence Y
表6. 序列Y的随机旅行变种测试
本节对比了传统的Henon映射和改进Henon映射的分叉图、混沌轨道图、Lyapunov指数图、自相关系数图、互相关系数图和SP800-22 Revision 1a标准测试结果,说明了改进Henon映射具有更好的混沌特性,从而可以更好地应用到涉及基于混沌的图像加密算法。
3. 图像加密算法
3.1. 加密系统的密钥
对于本文提出的加密算法,使用到的密钥有
,分别作为两个改进Henon映射的初始值和控制参数,设大小为
的明文图像矩阵为P。
3.2. 图像加密的过程
本文采用了像素级和比特级的双重置乱、扩散来对图像进行加密,具体的加密流程如图5所示。

Figure 5. Flow chart of encryption algorithm
图5. 加密流程
Step 1. 生成与明文相关的哈希值h。SHA-256是一种安全散列算法,它可以把数据或消息压缩成摘要,从而减小数据量,将数据的格式固定下来。对于任意长度的数据,SHA-256都会产生一个长度为256的比特序列,也可以称为哈希值。通过公式(4)将明文图像P转换成哈希值h,同时h也是解密过程的密钥,
(4)
其中
是将明文图像按行展开成长度为
的一维向量。将h平均分为16部分,每部分都是16位的二进制数,依次转换成十进制,得到
,并计算
,
(5)
Step 2. 生成序列
,
,
,
。将密钥
,
,
,
代入到改进Henon映射中,迭代
次,舍弃前600个值以避免瞬态效应,产生长度为
的序列
,
,然后利用公式(6) (7)对两个序列进行更新,
(6)
(7)
上式使用了
,
对密钥流进行更新,使得密钥流与明文相关。同样地,通过密钥
,
,
,
和改进Henon映射产生长度为
的序列
,
,然后利用公式(8) (9)对两个序列进行更新,
(8)
(9)
Step 3. 像素级置乱。将明文图像
按行展开成一维序列
,对Step 2得到的序列
进行升序排列,得到
,用
表示
中每个元素在
中的索引组成的序列,即
,
。利用
对序列
进行置乱,得到
:
,
(10)
Step 4. 比特级置乱。由Step 2得到的序列
中的每个元素都是0到7之间的整数,序列
中的每个元素都是0到255间的整数,因此它们的二进制形式都是一个8比特的数,利用序列
对序列
的每个元素都进行循环移位操作,将
转换为二进制形式,然后向右循环移动
位,之后再转换成十进制,记为
,其中
。例如
,
,则13的二进制形式是“00001101”,向右循环移动5位之后得到“01101000”,转换为十进制是104。Step 3结束之后会得到序列E。
Step 5. 扩散。由Step 4得到序列E的第一个元素、公式(5)得到的哈希值
,
和公式(8)(9)得到的序列
、
的第一个元素计算密文图像的第一个元素,计算过程如公式(11)所示,
(11)
其中
是比特异或操作。之后利用序列E的第i个元素、公式(5)得到的哈希值
,
、序列
、
的第i个元素和序列C的第
个元素计算密文图像的第i个元素,
,最终得到密文序列C,
(12)
Step 6. 将扩散后得到的密文序列C转换成大小为
的二维矩阵,得到密文图像。
以上为本文提出的加密算法的具体过程,解密过程为加密过程的逆过程。
4. 实验仿真及性能分析
4.1. 仿真结果
本文采用大小为
的Lena灰度图和Rice灰度图进行仿真,加密系统使用到的密钥分别是:
,
,
,
,
,
,
,
。明文图像和加密图像如图6所示,其中(a) (b)是Lena灰度图的明文和密文图像,(c) (d)是Rice灰度图的明文和密文图像。可以看出,密文图像不包含明文图像中的任何特征信息。
(a) Lena明文图像
(b) Lena密文图像
(c) Rice明文图像
(d) Rice密文图像
Figure 6. Plaintext image and ciphertext image
图6. 明文图像和密文图像
4.2. 性能分析
4.2.1. 密钥空间分析
密钥空间是指所有可能的加密密钥组成的集合,这个集合的元素越多,则通过暴力解密所需要遍历的情况越多,破译该系统所需要花费的时间也就越长,所以算法的加密效果更好。本文使用的加密密钥是
,其中,
,
,
,
是混沌系统的初始值,取值区间是
。
,
,
,
是混沌系统的控制参数,理论上可以取任意非零实数,步长是10−14,因此密钥空间大于10112,这说明本文的加密算法能够有效抵抗穷举攻击。
4.2.2. 直方图分析
对加密前后的图像的像素进行汇总,可以得到它们的直方图,直方图分布越均匀,说明图像的可读性越差,安全性更高,比较Lena灰度图和Rice灰度图加密前后的直方图,如图7所示,可以看出,明文图像存在较为集中的像素值区域,而密文图像各像素值的数量差别不大。
(a) Lena明文直方图
(b) Lena密文直方图
(c) Rice明文直方图
(d) Rice密文直方图
Figure 7. Histogram of plaintext image and ciphertext image
图7. 明文图像和密文图像的直方图
4.2.3. 相邻像素相关性分析
通常来讲,在自然图像中,任意像素点的像素值与相邻像素点的像素值具有较高的相关性,加密算法会在一定程度上降低这种相关性。
随机选取明文图像和密文图像各6000个像素点,以这些点为基准分别沿水平方向,竖直方向和对角线方向取其相邻像素点,与之构成像素对,利用式(13)~(14)分别计算加密前后的图像在水平,竖直和对角线这三个方向的相关系数,结果如表7所示。
,
(13)
,
(14)

Table 7. Correlation coefficient of adjacent pixels
表7. 相邻像素相关系数
4.2.4. 信息熵
熵描述的是分子间的混乱程度,当信息熵越大,说明信息混乱程度越大,相对应的也就是加密效果越好,通过公式(15)计算图像加密前后的信息熵:
(15)
其中i表示图像像素值的大小,
表示像素值i的占比,T表示灰度级别,对于灰度级别为256的均匀分布的完全随机图像而言,H的理论值为8。当图像的信息熵越接近这个理论值,说明这幅图像的随机性越强。表8展示了密文图像的信息熵,并与文献 [17] 和文献 [18] 中的加密算法进行比较,可以看出,本文算法加密图像得到的信息熵更加接近理论值,可以更好地抵抗信息熵攻击。
4.2.5. 密钥敏感性分析
衡量两幅相同大小的图像的差别有定性和定量两种方式。定性方式是直接求两幅图像的差图像,然后对比观察差图像 [19]。定量方式有两种衡量指标:像素变化率(NPCR)和归一平均变化强度(UACI),对应的计算公式如(16)~(17)所示。在理想的情况下,NPCR和UACI的理论值分别为99.6094%和33.4635% [20]。
,
(16)
(17)
其中
,
是比较的两幅图像。
优良的加密算法需要有较高的密钥敏感度,密钥即使发生微小的变化,也能够使得加密或解密之后的图像与正确加密或解密的图像差别显著。具体表现有两点,一是利用两个差别很小的密钥对同一幅明文图像进行加密,得到的两个加密图像差别显著,另外一个是利用两个差别很小的密钥对同一幅密文图像进行解密,得到的两幅加密图像也差别巨大。
本文使用一组密钥
,每次修改密钥中的一个值,将这个值增加10−14,而其他保持不变,利用修改前后的密钥去加密同一幅图像,可获得两幅密文图像,计算这两幅密文图像的NPCR和UACI,结果如表9所示,NPCR和UACI的数值都很接近理论值,说明密钥即使只发生了微小变化,加密后的密文图像跟原来的密文图像的差别也很大,即说明该加密系统有较好的密钥敏感性。
4.2.6. 明文敏感性分析
明文敏感性衡量的是利用同一密钥加密两个差别很小的明文图像所得到的密文图像的差别程度。如果这两个密文图像的差别很小,那么说明该加密系统具有较弱的明文敏感性;如果这两个密文图像的差别很大,那么说明该加密系统具有较好的明文敏感性。本文对明文图像进行一些微小修改,具体操作是从明文图像中随机选取1个像素点,将该像素点的值增加1或减少1,即可得到修改后的明文图像,然后使用同一个密钥去加密修改前后的两个明文图像,得到两个密文图像,比较这两个密文图像的差别,计算NPCR和UACI的值,重复测试200次,每次计算可得到一组NPCR和UACI的值,最后计算200组NPCR和UACI的平均值,计算结果如表10所示。和文献 [21] 和文献 [22] 相比,本文具有更好的明文敏感性,更好地抵御差分攻击。
5. 结论
本文对传统的Henon映射进行了改进,扩大了Henon映射的混沌参数范围,增强了Henon映射产生的混沌序列的混沌特性。并提出了一个像素级和比特级双重置乱、再扩散的图像加密算法。最后,在密钥空间、直方图、相邻像素相关性、信息熵,密钥敏感性和明文敏感性等方面对加密算法进行了性能分析检测。实验结果表明:本文所提出的算法具有较好的加密效果,能在一定程度上抵抗暴力攻击,统计攻击和差分攻击,与其他一些图像加密算法相比,本文的算法具有更强的抗攻击能力。
基金项目
论文研究资助项目为广东省普通高校重点研究项目(No. 2019KZDXM034),广东省基础与应用基础研究基金项目(No. 2020B1515310018)。
NOTES
*通讯作者。