1. 引言
随着现代通信技术的快速发展,信息安全和知识产权保护备受关注[1]。图像在互联网中的广泛使用,使得其在传输过程中容易成为被攻击的目标,这引发了对图像安全问题的广泛研究[2]。图像加密可以将图像信息转换为难以识别的密文,从而实现对图像信息的保护,是图像安全领域研究的重点。目前,已经有许多有关图像加密的方案被提出[3]-[7]。
混沌系统由于其初始条件敏感性、随机性、遍历性和不可预测性等特点,符合密码学的需求。1989年,Matthews使用一维混沌映射生成的随机数列加密文本数据,首次将混沌系统引入了数据加密中[8]。图像相比文本有更多的数据和更高的冗余度,因此Fridrich引入了多维混沌映射并提出了“置乱–扩散”的加密结构,首次成功利用混沌系统实现了对图像的加密[9] [10]。此后,混沌系统开始被广泛应用于图像加密中。Wang等人提出了一种基于超混沌系统和离散余弦变换的彩色图像加密算法[11],他们设计了一种二维交叉耦合混沌模型来生成多种超混沌映射,利用该模型对彩色图像加密,并采用二维离散余弦变换将密文图像嵌入到载体图像中来提升算法的安全性。Li等人提出了一种基于6维高维混沌系统与DNA编码的图像加密算法[12],使用混沌系统生成的随机混沌序列对原始图像序列进行置乱和扩散,并且将图像信息编码为DNA序列后使用不同的混沌序列进行置乱和扩散来达到较好的加密效果。
元胞自动机是一种简单快捷的计算模型,它可以快速迭代生成随机序列,Wolfram在1986年使用证实了这一可行性[13]。根据元胞自动机的这一特性,有许多利用元胞自动机对图像加密的方法被提了出来。Lv等人提出了一种基于初等元胞自动机和类生命元胞自动机的图像加密方案[14],利用展示出混沌特性的初等元胞自动机和类生命元胞自动机一起形成用于置乱和扩散图像像素的混沌映射。Darani等人提出了一种结合混沌系统和元胞自动机的图像加密算法[15],利用不可逆元胞自动机来生成密钥,在使用混沌系统对图像加密的基础上将混沌系统的输出作为可逆元胞自动机的规则来改变图像信息。
混沌系统和元胞自动机各自都在图像加密领域表现优秀。大部分图像加密方法仍单独使用其中之一来实现,即使是将两者结合起来的方法也大多是将元胞自动机作为加密工具直接作用于图像。然而,由于元胞自动机的离散性,将其直接用来加密图像可能会有不可逆的风险,使还原图像出现困难。本文提出了一种基于混沌系统与元胞自动机的彩色图像加密算法,其基本原理是利用混沌系统和元胞自动机的特性共同生成用于图像加密的随机序列,增强序列的随机性,减少图像无法解密的风险。
2. 图像加密使用的算法
2.1. Chen混沌系统
Chen混沌系统是一种三维连续时间非线性动力学系统,由中国学者Chen和Ueta在1999年首次提出[16]。它与Lorenz系统类似,但不拓扑等价且更复杂,具有更为广泛的应用价值,其动力学方程为:
(1)
其中,x、y和z为系统的状态变量,a、b和c为参数。通常情况下,当a = 35、b = 3、c = 28时,系统处于混沌状态。本文使用混沌状态下的Chen系统来生成图像加密所需的随机混沌序列。
2.2. 元胞自动机
元胞自动机(CA)由规则的元胞网格组成,每个元胞都处于有限数量的状态之一。对于元胞,定义了相对于指定元胞的一组称为其邻域的元胞,通过为每个元胞分配一个状态来选择初始状态,根据一些固定规则创建新的一代,该规则根据元胞的当前状态和其领域元胞的状态确定元胞的新状态。
初等元胞自动机是一维元胞自动机,每个元胞均有0和1两种状态。确定下一代元胞状态的规则取决于元胞及其相邻两个元胞的当前状态,一个元胞及其两个邻居共有8 = 23种可能的状态,确定下一代元胞的规则必须指定每种可能性的结果状态,因此初等元胞自动机共有256 = 28种规则。例如,对于规则176 = 10110000,其演化规则如表1所示。若使用规则176的初等元胞自动机对二进制序列11101011进行演化,则演化后的结果为10101011。
Table 1. Elementary cellular automaton in Rule 176
表1. 规则176的初等元胞自动机
当前状态 |
111 |
110 |
101 |
100 |
011 |
010 |
001 |
000 |
新状态 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
Stephen Wolfram将元胞自动机定义了四类[17],其中第3类元胞自动机的几乎所有初始模式都以伪随机或混沌形式演化,任何出现的稳定结构都会很快被周围的噪音摧毁,初始模式的局部变化往往会无限传播。对于初等元胞自动机,规则30及规则30的镜像规则86,补码规则135及镜像补码规则149展示了第3类行为,这意味着即使是简单的输入都会演化为混沌、看似随机的结果。本文使用第3类元胞自动机对混沌系统生成的随机序列进行演化,进一步增强序列的随机性。
2.3. RGB像素合并
彩色图像分为R,G,B三个通道,在处理图像时若是对图像的三个通道分别进行处理,可能会更容易破坏图像的整体性。本文设计了一种RGB像素合并的方法,将每个图像RGB三通道对应位置的像素合并起来进行处理,并在其中加入了重排序和循环移位来混淆图像数据。
通常在图像中用8位表示一个像素,RGB像素合并就是将图像三通道对应位置的像素合并为24位的像素,以下步骤具体描述了像素合并的过程。
首先,将图像像素转换为8位二进制形式。
其次,将三通道对应位置的8位像素相连,合并为24位像素。在合并过程中,R,G和B三个通道前后共有六种不同的排列方式,这里设置了0~5六种规则,将RGB三通道的像素按照如图1所示的规则进行合并。每个位置上的排列规则均由混沌系统与元胞自动机生成的随机序列决定。
第三,将每个位置上的24位像素向右循环移位,图2所示为移动7位的结果,每个位置上循环移位的位数均由混沌系统与元胞自动机生成的随机序列决定。
最后,将图像所有位置的RGB像素合并后成为一个数组矩阵,每个位置存放一个24位的二进制合并像素,数组矩阵的宽和高均与原始图像相同。
Figure 1. RGB pixels merging
图1. RGB像素合并
Figure 2. 24 bits data circularly shifted right by 7 bits
图2. 24位数据向右循环移7位
在输出加密图像时需要将合并的像素拆分回三通道,本文在拆分过程中先再次将每个位置的24位像素向左循环移位,再将其拆分为三个通道上的8位像素并按照规则重新排列三通道的顺序,这样不仅可以进一步混淆加密图像的数据,在解密时也可以通过使用与加密时相反的规则来还原图像。图3展示了24位数据向左循环移13位的结果,图4展示了像素拆分回RGB三通道的六种规则。
2.4. 像素置乱
像素置乱是通过打乱图像中各像素的位置,从而实现对图像数据进行加密的一种方法。像素置乱可以降低图像相邻像素的相关性,扩散图像的像素信息,因此还可以保证图像加密的抗裁剪与抗噪声性能。
Figure 3. 24 bits data circularly shifted left by 13 bits
图3. 24位数据向左循环移13位
Figure 4. 24 bits pixel splitting back into RGB
图4. 24位像素拆分回RGB
本文采用循环移位的方式来置乱像素,通过将图像每一行的像素向右循环移位和将每一列的像素向下循环移位来打乱图像像素原本的位置,每一行和每一列循环移位的位数均由混沌系统生成的随机序列决定。图5展示了原始排列的像素分别经过行移位和列移位置乱的示例。
Figure 5. Pixels scrambling
图5. 像素置乱
2.5. 祖冲之算法的替换盒
在密码学中,替换盒(S盒)是对称密钥加密算法执行替换计算的基本结构。S盒通过将输入数据非线性替换为输出数据来实现对数据的加密,通常用于模糊密钥与密文之间的关系。
祖冲之算法(ZUC)是一种现代轻量级分组密码算法,主要用于资源受限的环境,例如物联网设备、嵌入式系统、传感器网络等。ZUC有两个S盒S0和S1,如图6所示。ZUC的S盒输入输出的均是是8位数据。例如,对于8位二进制数11001000,其十六进制为C8,若使用S0替换则输出S0第C行第8列对应的十六进制数E6,即替换为11100110;若使用S1则替换为00011011。
Figure 6. S-box of ZUC
图6. ZUC的S盒
3. 基于混沌系统与元胞自动机的图像加密算法
本文提出的基于Chen混沌系统与第3类初等元胞自动机的彩色图像加密算法框架如图7所示。
图像加密算法主要由随机序列生成和加密图像两部分组成。
在随机序列生成过程中,Chen系统会根据密钥生成三条随机混沌序列x、y和z,这三条混沌序列在经过第3类元胞自动机演化后会生成四条随机二进制序列CX、CY、CZ和CH。算法使用的密钥由两部分组成,一部分为原始图像的SHA-256哈希值,共256位,将其分成32个部分,记为
,
,……,
,每部分8位。第二部分为输入的自定义密钥,共16位,分成两个部分,记为
和
,每部分8位。这两部分组成的272位密钥通过如下公式来生成Chen系统的三个初值,其中
表示向右循环移位t位:
(2)
(3)
加密图像时,算法先根据CX控制的规则将图像每个位置在RGB三个通道上的像素合并成24位
Figure 7. Image encryption algorithm framework
图7. 图像加密算法框架
二进制像素。然后利用x,y,z控制图像各行各列的循环移位位数,置乱合并后的像素,保证加密算法的抗噪声和抗裁剪性能。再使用ZUC的S0替换像素,将CZ与像素按位异或,加密像素信息。之后使用ZUC的S1替换像素并将CH与像素按位异或,进一步加密像素信息。在像素信息的加密完成后根据x,y,z第二次置乱合并后的像素。最后根据CY控制的规则将合并的像素拆分回RGB三个通道上,得到加密图像。
4. 实验结果分析
本节讨论了提出的加密算法对图像加密的实验结果,以评估加密算法的性能。实验使用的彩色图像均来自于University of Southern California的SIPI Image Database和University of Waterloo的Image Repository。所有的实验均是在搭载了Intel(R) Core(TM) i7-8750H CPU @ 2.20 GHz,NVIDIA GeForce GTX 1050 Ti GPU和16 GB机带RAM的主机上使用Matlab R2023a进行的。
4.1. 加密结果与直方图分析
图8展示了对图像4.1.03 (256 × 256)和4.2.03 (512 × 512)加密后的结果,并绘制了原始图像与加密图像的直方图。从中可以看出,加密图像在视觉上与原始图像完全不同,从加密图像中无法分辨出原始图像。原始图像的直方图携带有大量的统计信息,而加密图像的直方图都是趋近于平坦均匀的,这表明本文提出的图像加密算法能够抵抗统计攻击。
4.2. 随机性分析
图像加密的每个步骤均依赖于混沌系统与元胞自动机生成的随机序列。为了保证图像加密的效果,需要验证序列的随机性。
美国国家标准与技术研究院(NIST)制定的SP 800-22测试标准是测试序列随机性最具代表性的方法
Figure 8. Results of different images before and after encryption and their histograms
图8. 不同图像加密前后的结果及对应的直方图
Table 2. P-values of X, Y, Z, CX, and CY
表2. X,Y,Z,CX和CY的P值
测试项 |
X |
Y |
Z |
CX |
CY |
频率 |
0.066882 |
0.637119 |
0.178278 |
0.178278 |
0.804337 |
块内频率 |
0.862344 |
0.671779 |
0.178278 |
0.407091 |
0.991468 |
累加和 |
0.772760 |
0.862344 |
0.350485 |
0.437274 |
0.568055 |
游程 |
0.772760 |
0.834308 |
0.054199 |
0.602458 |
0.964295 |
块内最长游程 |
0.637119 |
0.568055 |
0.275709 |
0.437274 |
0.568055 |
二元矩阵秩 |
0.350485 |
0.195163 |
0.706149 |
0.468595 |
0.299251 |
离散傅里叶变换 |
0.232760 |
0.122325 |
0.178278 |
0.299251 |
0.043745 |
非重叠模板匹配 |
0.998205 |
0.976060 |
0.991468 |
0.964295 |
0.985035 |
重叠模板匹配 |
0.534146 |
0.232760 |
0.637119 |
0.804337 |
0.671779 |
Maurer通用统计 |
0.134686 |
0.122325 |
0.468595 |
0.028181 |
0.911413 |
近似熵 |
0.804337 |
0.253551 |
0.020085 |
0.213309 |
0.568055 |
串行 |
0.706149 |
0.772760 |
0.706149 |
0.772760 |
0.706149 |
线性复杂度 |
0.162606 |
0.407091 |
0.468595 |
0.772760 |
0.195163 |
随机偏移 |
0.500934 |
0.931952 |
0.568055 |
0.714660 |
0.855534 |
随机偏移变化 |
0.637119 |
0.834308 |
0.637119 |
0.973388 |
0.764655 |
Table 3. The minimum pass rate of X, Y, Z, CX, and CY
表3. X,Y,Z,CX和CY的最低通过率
测试项 |
X |
Y |
Z |
CX |
CY |
频率 |
60/64 |
60/64 |
60/64 |
60/64 |
60/64 |
块内频率 |
累加和 |
游程 |
块内最长游程 |
二元矩阵秩 |
离散傅里叶变换 |
非重叠模板匹配 |
重叠模板匹配 |
Maurer通用统计 |
近似熵 |
串行 |
线性复杂度 |
随机偏移 |
36/39 |
32/35 |
36/39 |
38/41 |
42/45 |
随机偏移变化 |
之一,该标准包含15个测试项,专门用于对二进制序列的随机性进行测试。每项测试完成后都会输出该项测试的P值与最低通过率,当P值大于等于0.01时,说明该项测试通过。若每项测试均能通过,则认为该序列具备较好的随机性。
表2和表3分别列出了加密算法根据大小为4K的图像生成的X、Y、Z、CX和CY的P值和最低通过率,可以看出这五条序列均通过了所有测试项,都具有较好的随机性,并且这五条序列每项测试的通过率都较高。在随机偏移和随机偏移变化测试中,CX和CY的最低通过率均要优于X、Y和Z。从随机性测试的结果中可以看出,混沌系统生成的混沌序列具备较好的随机性,用元胞自动机来演化混沌序列可以进一步提高序列的随机性,将混沌系统与元胞自动机结合起来生成的随机序列可以满足加密算法的需要。
4.3. 密钥空间与密钥敏感性分析
通常当密钥空间大于2100时,则认为该密钥可以抵抗暴力攻击。本文使用的密钥由256位图像的哈希值和16位自定义密钥组成,共272位,密钥空间为2272,远大于2100,足够抵抗暴力攻击。
对图像Lena (512 × 512)测试密钥敏感性,先生成密钥K1,仅改变K1的最后一位得到K2。图9展示了分别使用K1和K2对Lena加密和解密的结果,可以看出,即使密钥仅有1位发生改变,加密同一张图像得到的加密图像也完全不同,且只有正确的密钥才能解密图像,本文使用的密钥具备较好的敏感性。
4.4. 信息熵分析
信息熵可以体现信息的不确定性。加密图像的信息熵越大,说明其各像素值出现的概率越接近,加密图像信息的不确定性就越好,从加密图像中获取原始图像信息也就越难。有256种不同像素的8位图像的信息熵理论上最大为8,因此,加密图像的信息熵越接近8,其像素值分布越趋近于完全随机。
Figure 9. The results of encrypting and decrypting image Lena using K1 and K2
图9. 使用K1和K2对图像Lena加密和解密的结果
表4列出了图像Lena、4.2.03和4.2.07 (均为512 × 512)的原始图像和加密图像的信息熵,并与其他方法进行了对比。可以看出,加密图像的信息熵均高于原始图像且接近理想值8,说明本文提出的加密算法具有较好的随机性。
Table 4. Information entropy of original images and images encrypted using different methods
表4. 原始图像和不同方法加密图像的信息熵
图像 |
通道 |
原始图像 |
本文 |
[11] |
[12] |
[15] |
Lena |
R |
7.2531 |
7.9993 |
- |
7.993 |
7.9993 |
G |
7.5940 |
7.9992 |
- |
7.992 |
7.9993 |
B |
6.9684 |
7.9993 |
- |
7.994 |
7.9993 |
4.2.03 |
R |
7.7067 |
7.9993 |
7.9993 |
7.993 |
7.9993 |
G |
7.4744 |
7.9993 |
7.9993 |
7.999 |
7.9993 |
B |
7.7522 |
7.9993 |
7.9992 |
7.999 |
7.9993 |
4.2.07 |
R |
7.3388 |
7.9993 |
- |
7.999 |
7.9993 |
G |
7.4963 |
7.9993 |
- |
7.999 |
7.9993 |
B |
7.0583 |
7.9993 |
- |
7.999 |
7.9993 |
4.5. 相关性分析
大部分普通图像的相邻像素的值之间存在很强的相关性,一种有效的图像加密算法应该能够减弱相邻像素的相关性,相关性越弱,加密算法的效果越好。相邻像素的相关性可以通过相关系数来衡量。
表5列出了图像Lena的原始图像和加密图像在水平、垂直和对角方向上的相邻像素的相关系数,并与其他方法进行了对比。可以看出原始图像在三个方向上的相关系数非常高且接近1,而加密图像在三个方向上的相关系数远小于原始图像且均接近0,本文提出的加密算法可以有效减弱相邻像素的相关性。
Table 5. Correlation coefficients of original images and images encrypted using different methods
表5. 原始图像和不同方法加密图像的相关系数
方向 |
通道 |
原始图像 |
本文 |
[12] |
[15] |
水平 |
R |
0.9797 |
0.0049 |
−0.0014 |
−0.0003 |
G |
0.9704 |
−0.0036 |
−0.0012 |
0.0008 |
B |
0.9356 |
−0.0037 |
−0.0058 |
0.0004 |
垂直 |
R |
0.9889 |
0.0002 |
0.0011 |
−0.0001 |
G |
0.9813 |
−0.0005 |
−0.0097 |
−0.0010 |
B |
0.9526 |
0.0004 |
0.0063 |
0.0007 |
对角 |
R |
0.9697 |
0.0023 |
−0.0019 |
−0.0002 |
G |
0.9560 |
−0.0030 |
−0.0045 |
0.0008 |
B |
0.9143 |
−0.0014 |
−0.0047 |
0.0002 |
4.6. 抗差分攻击
利用图像加密算法加密经过轻微改动的图像得到的加密图像会与原本的加密图像存在差异,通过分析加密图像之间差异来发现加密算法漏洞的方法称为差分攻击。通常可以使用像素变化率(NPCR)和平均变化强度(UACI)来评估图像加密算法抵抗差分攻击的能力[4]。当NPCR和UACI分别接近期望值99.6094%和33.4635%时,图像加密算法能够有效抵抗差分攻击。
本文在计算NPCR和UACI时,仅将原始图像的其中一个像素的值改变1。表6和表7分别列出了在本文加密算法下图像Lena、4.2.03和4.2.07的NPCR和UACI,并与其他方法进行了对比。可以看出,实验图像的NPCR和UACI均接近期望值,说明本文的图像加密算法可以有效抵抗差分攻击。
4.7. 抗裁剪和抗噪声攻击
加密图像在无线传输过程中,可能会遭到黑客的裁剪攻击,导致图像的部分数据丢失,使加密后的
Table 6. NPCR of images using different methods
表6. 不同方法图像的NPCR
图像 |
通道 |
本文 |
[11] |
[15] |
Lena |
R |
99.6006 |
- |
99.6113 |
G |
99.5792 |
- |
99.6106 |
B |
99.6181 |
- |
99.6069 |
4.2.03 |
R |
99.6113 |
99.6227 |
99.6102 |
G |
99.6033 |
99.6304 |
99.6106 |
B |
99.5949 |
99.6052 |
99.6083 |
4.2.07 |
R |
99.6162 |
- |
99.6058 |
G |
99.5728 |
- |
99.6077 |
B |
99.6304 |
- |
99.6138 |
Table 7. UACI of images using different methods
表7. 不同方法图像的UACI
图像 |
通道 |
本文 |
[11] |
[15] |
Lena |
R |
33.4747 |
- |
33.4575 |
G |
33.4484 |
- |
33.4698 |
B |
33.4238 |
- |
33.4651 |
4.2.03 |
R |
33.5037 |
33.3952 |
33.4784 |
G |
33.4150 |
33.4674 |
33.4579 |
B |
33.4673 |
33.4584 |
33.4686 |
4.2.07 |
R |
33.5658 |
- |
33.4498 |
G |
33.4561 |
- |
33.4483 |
B |
33.5164 |
- |
33.4651 |
图像无法被正确解密。同时,通信信道中可能会存在噪声,加密图像在传输时可能会受到噪声干扰,影响后续的解密过程。理想的图像加密算法应该具备一定的抗裁剪和抗噪声攻击的能力。
图10展示了对图像Lena的加密图像进行不同程度的裁剪后解密的结果。可以看出,加密图像在受到裁剪攻击后仍能解密出原始图像的大部分信息,本文提出的图像加密算法具有一定的抗裁剪攻击能力。
Figure 10. Decryption results of the encrypted image Lena after being subjected to clipping attack
图10. 图像Lena的加密图像受到裁剪攻击后的解密结果
图11展示了对图像Lena的加密图像加入不同密度的椒盐噪声后解密的结果。可以看出,加密图像在受到噪声攻击后仍能解密出原始图像的大部分信息,本文提出的图像加密算法具有一定的抗噪声攻击能力。
4.8. 时间复杂度分析
算法的时间复杂度是衡量算法性能的重要指标,如果算法运行的时间过长则其很难具备实际应用意义。表8列出了加密算法加密不同尺寸的彩色图像大约所需的时间,并与其他方法进行了对比。可以看出本文提出的图像加密算法加密时间较短,运行效率较高。
Figure 11. Decryption results of the encrypted image Lena after being subjected to noise attack
图11. 图像Lena的加密图像受到噪声攻击后的解密结果
Table 8. Correlation coefficients of original images and images encrypted using different methods
表8. 原始图像和不同方法加密图像的相关系数
图像尺寸 |
加密时间 |
[15] |
256 × 256 |
1.68 s |
23 s |
512 × 512 |
5.97 s |
- |
5. 总结
本文提出了一种基于混沌系统与元胞自动机的图像加密算法,专门用于保护RGB彩色图像在传输过程中的安全性。该算法主要使用具有混沌特性的初等元胞自动机来迭代Chen混沌系统生成的混沌序列,使生成的随机序列更具随机性,使用这些随机序列来控制加密过程中的各个步骤并与图像像素按位异或来加密图像信息。同时,该算法还根据RGB图像的特性采用RGB像素合并保护图像的完整性并混淆像素,利用像素置乱保证算法的抗裁剪性能和抗噪声性能,并使用了ZUC的两个S盒替换图像像素信息来模糊密文与密钥的关系。实验结果证明了将混沌系统与元胞自动机结合起来提升随机序列随机性的可行性,本文提出的图像加密算法具有较好的加密效果,较强的鲁棒性和较低的时间复杂度,这保证了加密算法的可行性。