基于动态混沌映射的跨平面彩色图像加密算法
2022-08-23代高乐
葛 斌,代高乐
随着信息传输技术的快速发展,数字图像作为一种直观、高效的传输媒介,常常被人们作为传递信息的工具. 若图像信息被不法分子窃取,就会对个人、企业甚至国家造成不必要的损失[1]. 传统的加密算法DES、RSA 和IDEA 等主要针对文本加密,图像加密的效果并不理想,因此,急需设计一种高效快捷的图像加密算法进行图像加密[2].
混沌因具有内在随机性、不可预测性及对初始值的高度敏感性,被广泛运用于图像加密算法中. 混沌映射包括:低维映射与高维映射. 其中,低维映射的形式简单、运算效率高,但安全性低[3];高维映射的参数多、安全性高,但效率低下且存在资源浪费[4]. 因此,一些学者采用二维映射[5-8],在保证运算效率的同时提高混沌映射的安全性.
而针对彩色图像的加密算法而言,仅依赖混沌映射的复杂度,不足以保证其安全性,置乱和扩散也是算法的重要组成部分. 采用bit 位的置乱方法增大了算法的计算量,加密效率较低[9-10];三通道采用同一种方法进行加密,使得攻击者在破解单一通道的内容即可得到整张图像的信息,加密算法的安全性较低[11].AHMAD 等人[12]提出运用混沌序列排序对图像进行跨平面置乱,提高了彩色图像整体的加密效果,但扩散部分简单.
鉴于已经研究存在的不足,本文提出一种有较大混沌区间的2D HCLM 混沌映射,利用SHA-512 使密钥与明文相关,采用跨平面置乱的方法降低彩色图像三平面像素的相关性,正反两轮的扩散使像素点分布均匀. 仿真结果表明,2D HCLM 映射产生的混沌序列更具有随机性,所设计的跨平面彩色图像加密算法可抵御常用的攻击手段,具有较高的安全性.
1 动态混沌映射的设计与性能评估
1.1 2D HCLM 映射的设计
Henon 映射作为经典的二维混沌映射,其数学表达式为:
其中:a、b为控制参 数,xi和yi表示混沌序列迭代i次后的结果. 当a∈[1.07,1.4]时,Henon映射处于混沌状态.
文献[8]提出改进的Henon 混沌映射,将Henon 映射与Iterative 映射复合,增大了混沌映射的映射范围,增强了混沌映射的混沌性.当控制参数a∈[0.8,1.5],b=0.3,r=0.1 时,该映射处于混沌状态,其定义如下:
上述映射虽然在合适的参数下具有一定的混沌性,但由于其混沌区间小,混沌行为简单导致加密效果不理想. 为此,本文设计了一种动态2D HCLM 混沌映射. 通过引入余弦映射公式将混沌区间扩展到0 附近,并嵌入动态调节参数w使得混沌行为更为复杂.2D HCLM混沌映射的定义如公式(3)所示.
其中:控制参数a∈[0,1.4],b∈[0,0.3],abs为取绝对值.
1.2 性能评估
为了验证设计的动态2D HCLM 映射性能,主要考虑以下指标:分岔图、李雅普诺夫指数、样本熵和NIST 测试. 所有性能评估都是居于公式(3)中,令b=0.3,u=3.99 所得出的结果.
分岔图可以反映出非线性系统的行为、描绘出系统从周期到混沌的运动轨迹. 混沌映射的分岔图达到满映射的状态时,说明其混沌区间连续、混沌行为复杂、混沌性好. 图1展示了混沌映射的分岔图,其中图1(a)为传统Henon 映射、图1(b)为文献[8]提出的改进的Henon 映射、图1(c)为2D HCLM 映射的分岔图. 从图1 中可以看出,2D HCLM 映射在控制参数a取值范围相同的情况下混沌区间更广,混沌行为更为复杂.
图1 Henon、改进Henon 和2D HCLM 分岔图
李雅普诺夫指数(LE)描述了相空间中两条相邻轨迹之间的平均指数收敛或发散速率. 当LE 曲线在0 的上方时,混沌映射处于混沌状态. 且李雅普诺夫指数越大,混沌映射的混沌性能越好. 图2 展示了混沌映射的LE 曲线图. 图2(a)为传统Henon 映射,图2(b)为改进的Henon 映射,图2(c)为2D HCLM 映射. 从图中可以看出2D HCLM 映射与前两者相比李雅普诺夫指数更大,具有更复杂的混沌行为.
图2 Henon、改进Henon 和2D HCLM 李雅普诺夫指数图
样本熵(Sample Entropy)通过度量信号中产生新模式的概率大小来衡量时间序列复杂性,新模式产生的概率越大,序列的复杂性就越大.2D HCLM 混沌映射与改进的Henon 样本熵对比如图3 所示,从图中可以看出2D HCLM混沌映射的样本熵均大于1.5,效率更高且具有更好的混沌性.
图3 样本熵对比图
随机性检验套件NIST SP 800-22 Test Suite是用于测试序列的随机性,为满足NIST 测试要求,首先对16 000 000 个混沌序列值进行二值化处理,然后对取得的128 000 000 位二进制序列进行NIST 检验. 对于随机性检验,每一项都会产生[0,1]的P值,当P值大于显著性水平(α=0.01)时,则表示二进制序列通过测试且满足随机性特点,从表1 结果可以看出2D HCLM 的两组混沌序列测试结果均大于0.01,说明2D HCLM 映射具有良好的随机性.
表1 NIST 测试
2 加密算法
本文提出一种基于2D HCLM 映射具有自适应的跨平面彩色图像加密算法. 该算法利用2D HCLM 映射产生的混沌序列对图像进行加密,加密过程可分为两轮置乱、两轮扩散操作,算法流程图如图4 所示.2D HCLM 映射使用SHA-512 产生的密钥作为混沌映射的初始值,并随机选取控制参数值,生成的混沌序列用于行列置乱和非序列扩散. 在扩散操作时,结合三通道像素点迭代,增强了密文的扩散性. 本文通过上述方式提高了算法的安全性,密文图像可有效抵抗常见的攻击手段.
图4 加密算法流程图
2.1 生成初始值密钥
将与明文相关的密钥作为混沌映射的初始值,以达到一次一密的效果,可有效抵抗密文攻击提高算法安全性. 具体操作步骤如下:
步骤1:对明文图像I 进行SHA-512 操作,得到长度为128 位16 进制的密钥key.
步骤2:将16 进制的密钥key 转换为二进制字符串,获得一个长512 位的key1.
步骤3:对key1 执行每两位异或操作,获得长度减半的256 位字符串key2.
步骤4:根据公式(4)对key2 进行处理,得到4 个长度为64 位的子密钥,分别为K1、K2、K3和K4.l表示起始位,h表示中止位.
步骤5:根据公式(5)和公式(6)生成2D HCLM 混沌映射所需的初始值x0、x1、y0 和y1.
2.2 生成混沌序列
通过上述操作,可得到2D HCLM 映射两组初始值x0、y0、x1 和y1,置乱和扩散所需的混沌序列生成步骤如下:
步骤1:输入随机选取的初始值x∈[0,1]和参数u=3.99,并代入公式(1)中迭代(v+M×N)次,舍弃前v=1 000 个数,再利用公式(7)对混沌序列处理得到伪随机序列X.
其 中:xm为 舍弃v个数 后 的混沌 序列,mod为模运算.
步骤2:将X重新组合成一个大小为M×N的矩阵L,用于像素点的跨平面置乱.
步骤3:随机选取系统控制参数a0、b0 和u,以及通过公式(6)得到的初始值x0 和y0 代入公式(3),经过(v+max(M,N×3))次迭代,并舍去前v个数使混沌序列达到更为混沌的状态,生成两组伪随机序列X0、Y0. 再运用公式(8)、公式(9)得到混沌序列A0、B0,A0、B0分别用于数字图像矩阵的行、列置乱.
其中:abs表示为取绝对值;max 表示为取最大值;ceil表示为向上取整.
步骤4:设置随机控制参数a1、b1 和u,初始值x1 和y1,代入公式(3)中迭代(v+M×N× 3)次,前v个数作为无用的迭代结果,并代入公式(8)、公式(9)得到两组混沌序列A1、B1,用于两轮扩散. 此时,已经产生了五组所需的混沌序列.
2.3 加密过程
步骤1:输入大小为M×N的彩色图像I,并将其拆分为R、G、B 三个通道,分别对应矩阵Ir、Ig、Ib.
步骤2:根据表2 中的规则和矩阵L中对应的数字,对矩阵Ir、Ig、Ib进行像素点的跨平面置乱并将三平面组合为矩阵P(M×N× 3),具体操作如图5 所示.
表2 像素点排列规则
图5 跨平面置乱
步骤3:对矩阵P进行扩展Z字形置乱操作,得到置乱后的矩阵P',如图6 所示.
图6 扩展Z 字形扫描
步骤4:对混沌序列A0、B0 进行排序,如图7 所示. 利用A0 所得到的索引序列对矩阵P' 进行列排序,利用B0 所得到的索引序列对矩阵P' 进行行排序,最终得到行列排序后的矩阵Q(M×N× 3),矩阵索引排序如图8 所示.
图7 混沌序列排序
图8 矩阵按索引排序置乱
步骤5:利用混沌序列A1 构造矩阵T,根据公式(10)对矩阵Q进行正向非序列扩散得到矩阵D. 其中T(i,j)为 伪 随 机 矩 阵的像素值;Q(i,j)为置乱后矩阵的像素值;D(i,j)为正向扩散后矩阵的像素值.
步骤6:利用混沌序列B1 构造矩阵S,根据公式(11)对矩阵D进行反向非序列扩散得到 矩阵E. 其中S(i,j)为伪 随机矩 阵的像 素值;D(i,j)为正向扩散后矩阵的像素值;E(i,j)为反向扩散后矩阵的像素值.
步骤7:利用公式(12)将矩阵E组合成密文图像C.
2.4 解密过程
解密过程为加密过程的逆过程. 首先,将密钥和控制参数代入2D HCLM 映射中产生所需要的伪随机序列;接着,进行正反两轮逆扩散和逆行列置乱;然后,实施反向Z 字形置乱和跨平面重组,得到解密后的明文图像.
3 仿真实验与安全性分析
为证明所设计彩色图像加密方案的有效性,实验选取图像处理标准测试数据集中多组不同的彩色图像作为测试对象,在MAT‐LABR2017a 的仿真环境中进行测试.
3.1 密钥空间
加密算法的密钥空间至少大于2100即128位才能满足对抗暴力攻击加密的条件. 在本文设计的加密算法中采用SHA-512 所产生的密钥有2D HCLM 中的控制参数a0、a1、b和u,以及初始值x、x0、x1、y0、y1. 本文设计算法的密钥空间为2512远大于2100. 因此,该加密算法可有效抵抗暴力攻击.
3.2 密钥敏感度分析
高度敏感的密钥是一个加密算法的必要条件,密钥值细微改变而加密图像有明显变化,说明密钥敏感性强.
为了测试密钥的敏感性,以图9 为例. 图9 中(a)为原始图像;(b)为用K1 加密的图像;(c)为用K2 加密的图像;(d)为用K1 正确解密的图像;(e)为用K3 错误解密的图像. 实验获取一个密钥值K1,并两次随机改变K1 小数点后的某一位数得到K2 和K3. 用2D HCLM 映射的初始值K1=0.5 和K2=K1+10-14进行两次加密后图像像素点均匀分布看不出任何明文信息,但两次加密后的效果明显不同. 图中展示了用K1=0.5 和K3=K1-10-14两个不同的密钥解密的结果,从两个解密的图像中可以看出即使对密钥值进行细微的改动也会得到两种不同的结果. 两个实验表明,采用2D HCLM的加密算法对密钥和初始值极其敏感.
图9 密钥敏感性测试
3.3 信息熵分析
信息熵是分析图像信息的随机性指标,加密后的图像信息熵越高,表示像素随机性越好,图像加密效果越好. 本文算法通过两轮置乱和两轮扩散充分隐藏了原图像的内容,进而增大了密文图像的信息熵. 信息熵的计算方法如公式(13)所示.
其中:a表示为灰度值随机变量,N代表图像的灰度,P(ai)表示灰度值出现的概率. 变量不确定性越大,信息熵也就越大,所以获得图像内容的信息量也就越少,加密图像的理想信息熵为8[10].
表3 展示了几种算法对彩色Lena(256×256)图片进行加密后信息熵的对比,实验结果表明本文提出的算法具有良好的加密效果.
表3 不同算法Lena 的信息熵
3.4 直方图分析
图像的直方图反应了图像像素的分布密度,加密图像的像素点分布越均匀,攻击者越难从像素值的数量预测明文信息,加密效果越好. 本文算法采用非序列扩散方法修改置乱图像的像素值,使像素值分布均匀以抵抗统计攻击.
实验选取Baboon 作为测试图像,图片加密前后直方图对比如图10 所示,展示了不同图像在加密前后R、G、B 三个通道的直方图对比. 从图10 中的直方图对比可以看出加密前后的直方图具有明显差异.
图10 加密前后图像直方图
3.5 相邻像素相关性分析
加密算法对数字图像进行加密后若不能够降低水平方向、垂直方向和对角线方向上的相关性,则加密后的图像更容易受到统计攻击. 本文算法采用跨平面置乱与Z 字形置乱相结合的方式进行一轮置乱,再根据混沌序列进行二轮行列置乱有效降低了相邻像素间的相关性.
实验随机选取3 000 对像素点做100 组测试其相关性,用加密后Lena 的像素相关性与有关的算法实验作对比如表4 所示,实验结果显示,加密后的像素点相关性趋近于0,表明本文提出的加密算法可以有效去除相邻像素间的相关性.
表4 不同算法中Lena 的像素相关性
3.6 差分攻击
差分攻击是另一种安全攻击方式,具体是使用相同的加密算法对两个差异较小的明文图像分别进行加密,通过不同密文间的差别建立起明文与密文之间的关系,从而破解密文. 本算法利用SHA-512 生成与明文相关的密钥值,达到一次一密的效果,提高了加密算法的安全性. 因此,即使对明文图像进行微小的改变,也会导致两次加密的密文图像有显著区别.
为了检验图像是否具有良好地抵抗差分攻击,本实验用NPCR(像素数变换率)和UACI(像素平均变化强度)来检测本文提出的加密算法的性能,NPCR 和UACI 的计算方法如下:
其 中:M×N是 一 个 色 平 面 的 大 小,E1 和E2表示只有一个像素点不同的色平面加密后的密文图像,D(i,j)表示两个密文像素不同点的个数,Q表示最大允许的像素值.
理论上NPCR 的值应大于99.609 4%,且数值越大越好;UACI 的理论值为33.463 5%,数值越接近加密效果越好. 随机改变原图像的一个像素点进行二次加密,并与第一次加密结果作对比,计算两次加密图像的NPCR 和UACI 的数值,以Lena 为代表测试加密图像并与先前提出的几种算法进行对比,实验结果如表5 所示.
表5 不同加密算法Lena 的NPCR 和UACI
4 结语
结合已有的混沌映射和图像加密算法的优缺点,本文提出了一种自适应图片大小、安全可靠的彩色图像加密算法. 主要是利用2D HCLM 映射生成混沌序列,基于这种安全的混沌序列,设计跨平面Z 字形置乱和非序列扩散,快速、高效地增强了图像加密算法安全性和可靠性.
在实际应用中,有时需要对高分辨率图像进行加密处理. 为了避免资源浪费,提高加密效率,在下一步的研究中,将运用分块与置乱扩散并行执行的方法提高加密速度,节省资源开销.