基于混沌系统和双向扩散的图像加密算法
2022-01-09李国东
费 敏,李国东
(新疆财经大学 统计与数据科学学院,新疆 乌鲁木齐 830012)
0 引 言
目前,混沌研究逐渐取得一些成果,研究人员开始把混沌的研究成果应用到图像研究与应用领域,利用混沌解决一些问题,例如信息安全与图像识别方面,应用比较多的是图像加密领域[1-9]。文献[10]提出的加密方案为后来的很多学者设计加密方案提供了思路,所给出的加密方案解决了部分加密方案所使用到的混沌系统结构单一等问题,并且加密方案依据明文图像信息决定所筛选的像素点个数,利用进行预处理后的伪随机序列对筛选出的明文像素点做运算,从而生成第二级密钥,将其代入分段线性混沌映射按照给出的具体加密方案完成图像加密,通过仿真实验证明加密方案各项安全性指标均非常接近理想值,并且加密效果优良[10]。文献[11]为了提升加密效率,对文献[10]给出的加密方案进行改进,具体改进方法是对彩色图像进行加密,首先将彩色图像转化为R、G、B灰度图像,借助Henon映射和二维Logistic映射生成伪随机序列,并且对得到的伪随机序列进行预处理,利用预处理后的伪随机序列从明文图像中筛选出一部分像素点,通过分析文献[10]中筛选出的像素点与混沌映射产生的伪随机序列之间的计算规则发现,原有的依次做加法运算再做取模运算的计算规则的计算时间非常长导致整个加密方案加密效率不高,因此对原有计算规则进行改进,运用改进后的筛选出的像素点与混沌映射产生的伪随机序列之间的运算规则得到伪随机序列,将其作为第二级密钥,代入超Lorenz混沌系统产生混沌序列,按照“正向扩散-置乱-后向扩散”的顺序完成对彩色图像的加密。通过实验仿真发现运用改进后的方法能够大大节约加密的时间,一定程度上能够提升加密效率,并且加密方案与明文紧密相关联,解决了部分加密方案无法抵御明文攻击的问题[11]。文献[12]采用随机分块、块内块间同步置乱扩散及环形扩散等操作,通过实验仿真发现所设计的加密方案能够大大提高图像加密效率[12]。基于上述加密方案,设计一种“扩散-置乱-扩散”结构的图像加密算法。
1 分段线性混沌映射
分段线性混沌映射表达式为:
(1)
其中,p表示分段线性混沌映射的参数,0
2 算法设计
设P表示明文图像,大小为M×N。密钥用K表示,具体为K={x0,p,y0,q,r1,r2,r3,r4},其中x0与p和y0与q表示两个分段线性混沌映射的初始值与参数,r1,r2,r3和r4表示4个8位的随机整数,取值区间为[0,255]。具体加密流程如图1所示。
图1 加密算法流程
2.1 混沌密码发生器
给出的式(2)~式(5)称为混沌密码发生器,借助分段线性混沌映射所生成的伪随机序列,并且利用式(2)~式(5)给出的具体运算规则进行运算能够得到四个跟明文图像大小完全一致即无任何差异的随机矩阵,将这四个随机矩阵记为X,Y,R,W,四个矩阵大小全部是M×N,具体的运算规则由式(2)~式(5)展示[13]。
Step1:将x0和p,y0和q分别作为分段线性混沌系统也就是表达式(1)的初始值以及参数,为了避免暂态效应,舍去迭代分段线性混沌映射r1+r2次,再继续迭代分段线性混沌映射M×N次,生成长度为M×N的状态变量序列,记为{xi},i=1,2,…,MN,{yi},i=1,2,…,MN。
Step2:由向量{xi}和{yi},按式(2)~式(5)得到矩阵X,Y,R和W。
(2)
(3)
(4)
(5)
其中,floor(t)表示返回小于或者等于数t的最大整数,u=1,2,…,M,v=1,2,…,N。利用生成的X矩阵完成前向扩散操作,Y矩阵完成后向扩散操作,R和W矩阵完成置乱操作。
2.2 前向扩散算法
Step1:借助混沌密码发生器得到的X矩阵以及r3,r4,根据式(6)和式(7)给出的具体计算规则对明文图像第一行的所有像素值进行变换,即将P(1,j)转化为A(1,j)。
A(1,1)=mod(P(1,1)+X(1,1)+r3+r4,256)
(6)
A(1,j)=mod(P(1,j)+X(1,j)+A(1,j-1),256),j=2,3,…,N
(7)
Step2:借助混沌密码发生器得到的X矩阵,根据式(8)给出的具体计算规则将明文图像第一列的像素值进行变换,即将P(i,1)转化为A(i,1)。
A(i,1)=mod(P(i,1)+X(i,1)+A(i-1,1),256),i=2,3,…,M
(8)
Step3:借助混沌密码发生器得到的X矩阵,根据式(9)给出的具体运算规则对明文图像除了第一行以及第一列剩余的所有像素值进行变换,即将P(i,j)转化为A(i,j)。
A(i,j)=mod(P(i,j)+A(i-1,j)+A(i,j-1)+
X(i,j),256),i=2,3,…,M,j=2,3,…,N
(9)
经过上述前向扩散操作后,得到初始密文图像,将其记为矩阵A。
2.3 明文关联的置乱算法
Step1:计算A(i,j)所在行和列的全部元素(不含A(i,j))的和,记为rowi,coli。
rowi=sum(A(i,1 toN))-A(i,j)
(10)
coli=sum(A(1 toM,j))-A(i,j)
(11)
Step2:利用式(12)和式(13)计算坐标(m,n)的值,即:
m=rowi+R(i,j)modM
(12)
n=coli+W(i,j)modN
(13)
Step3:如果m=i或n=j,则A(i,j)与A(m,n)的位置保持不变,否则A(i,j)与A(m,n)互换位置,同时根据A(m,n)的低3位的值,将A(i,j)进行循环移位,即:
A(i,j)=A(i,j)<<<(A(m,n)&0×7)
(14)
其中,“x<< Step4:按Step1~Step3的方法,先置乱矩阵A的第M行,然后再置乱矩阵A的第N列,接着按从左向右再从上而下的扫描顺序依次置乱矩阵A的元素A(1 toM-1,1 toN-1),最后置乱矩阵A的元素A(M,N)。 完成以上具体置乱步骤后,得到置乱后的中间密文图像,将其记为矩阵B。 Step1:借助混沌密码发生器生成的Y矩阵,运用式(15)以及式(16)给出的具体运算规则对置乱得到的中间密文图像的第M行的所有像素值进行变换,即将B(M,j)转化为C(M,j)。 C(M,N)=mod((B(M,N)+Y(M,N)+r1+ r2),256) (15) C(M,j)=mod((B(M,j)+Y(M,j)+ C(M,j+1)),256), j=N-1,N-2,…,1 (16) Step2:借助混沌密码发生器生成的Y矩阵,运用式(17)给出的具体运算规则对置乱得到的中间密文图像的第N列的所有像素值进行变换,即将B(i,N)转化为C(i,N)。 C(i,N)=mod((B(i,N)+Y(i,N)+ C(i+1,N)),256), i=M-1,M-2,…,1 (17) Step3:借助混沌密码发生器生成的Y矩阵,运用式(18)给出的具体运算规则对置乱得到的中间密文图像除去第M行以及第N列的剩余像素值进行变换,即将B(i,j)转化为C(i,j)。 C(i,j)=mod((B(i,j)+C(i+1,j)+C(i,j+1)+ Y(i,j)),256),i=M-1,…,1, j=N-1,…,1 (18) 经过上述后向扩散操作后得到矩阵C,将其记为最终密文图像。 Step4:倘若要对密文图像进行解密得到明文图像,就需要完成上述加密过程的逆过程[14]。 实验仿真在Matlab R2018a的环境下进行,选择大小为256×256的Lena图像进行加密仿真实验,其中密钥的具体初始值为{x0=0.789 6,p=0.548 7,y0=0.353 5,q=0.667 7,r1=69,r2=138,r3=91,r4=105}。解密还原得到的明文图像及密文图像如图2所示。 (a)还原后的Lena图像 (b)Lena密文图像图2 加密与解密实验结果 好的加密算法应该具备密钥空间大的特性[15],加密算法的初始密钥有8个,分别是:x0,p,y0,q,r1,r2,r3,r4。其中,x0,y0∈(0,1)是浮点数,精度达到了10-14,p,q∈(0,0.5),也是浮点数,其精度也达到了10-14,r1~r4为[0,255]中的整数,步进为1,因此,通过计算能够得到密钥空间的具体数值约等于1.073 7×1065,说明设计的加密方案具备抵御穷举攻击的能力。 衡量一个加密方案是否具备抵御基于统计特性的攻击的能力必须要考虑明文图像以及经过加密方案加密得到的密文图像的直方图[16]。直方图能够刻画出某个图像里各灰度值的分布状态。以大小为256×256像素的Lena、girl、全黑、全白图像为例,密文图像的直方图χ2检验结果见表1。 表1 χ2检验结果 图3 Lena图像直方图及其密文图像直方图 相关系数计算公式如下: (19) 从Lena明文以及密文图像中随机筛选出2 000对水平、垂直以及对角线方向上的相邻像素点,对筛选出的相邻像素点之间的相关系数进行计算,并且对筛选出的相邻像素点之间的关联情况图绘制出来,得到的具体结果由表2及图4展示。 图4 Lena明文和密文图像在各方向的相邻像素分布 表2 明/密文图像相邻像素相关性系数 图像水平垂直正对角反对角明文0.978 30.946 00.922 40.942 6密文0.002 40.014 60.022 60.003 6 根据表2中的具体数值,能够看出Lena明文图像在水平、垂直、正对角线以及反对角线这四个方向上相互邻近像素点的相关系数全部在1附近,但是经过所设计的加密方案加密得到的Lena密文图像在水平、垂直、正对角线以及反对角线这四个方向上相互邻近像素点的相关系数全部在0附近,也就是说经过所设计的加密方案加密得到的Lena密文图像相互邻近的像素点不存在明显的相关性。依据图4所展示的结果,能够看出明文图像在水平、垂直以及对角线方向上的相邻像素点对全部分布在直线y=x周围,但是经过加密方案加密获得的Lena密文图像在这三个方向上的相邻像素点对全部呈现均匀分布的状态,因此,通过分析以上实验结果能够反映出所设计的加密方案具备有效隐藏Lena明文图像像素统计信息的能力。 信息熵反映的是图像中灰度分布情况[17]。pi表示图像灰度i出现的概率,具体的计算公式为: (20) 由表3可知,明文图像的冗余度在5%以上,密文图像的冗余度小于0.05%,密文的信息熵接近于理想值8,说明所设计的加密方案可以对抗基于信息熵的分析。 表3 信息熵、相对熵和冗余度 当对密钥做极其不明显的改变时,分析运用所设计的加密方案加密完全一致的明文图像生成的两个密文图像间所存在的差异情况。对Lena图像运用所设计的加密以及解密方案进行加解密,对原始密钥x0改变10-16,借助改变前后的密钥以及所设计的加密方案加密相同的明文图像生成的两幅密文图像结果如图5所示。根据图5得到的两幅密文图像能够看出,对初始密钥的值做极其不明显的改变,对完全一致的明文图像加密生成的两个密文图像的差图像表现为噪声样式,也就是说所设计的加密方案具备强的密钥敏感性。并且通过得到的实验结果能够发现当密钥发生仅10-16极其不明显的变化时,也不能够获得正确解密图像。所以,从这一点也能够说明所设计的加密方案具备强的密钥敏感性。 图5 Lena图像密钥敏感性实验结果 衡量抵御差分攻击的能力的重要指标是NPCR(像素变化率)、UACI(归一化像素平均值)、BACI,计算方式如下: 100% (21) (22) (23) P1指密文图像,P2指明文图像中某一像素值产生极其不明显的变动时所对应的密文图像。随机筛选明文图像中的一点坐标,将其进行微小变动,重复100次实验计算两密文间的NPCR、UACI和BACI的平均值,结果列于表4中。由表4可知,计算结果极其接近于理论值,说明加密算法具有很强的抗差分攻击能力。 表4 明文敏感性分析结果 提出一种基于分段线性混沌系统的正向扩散以及逆向扩散相结合的图像加密方案,并且通过实验仿真分析所设计的加密算法各项安全性指标是否达到理想值即安全性能是否良好。采用“前向扩散-置乱-后向扩散”的结构来加密图像,对于所设计的加密算法而言,即使采用相同的密钥,不同的明文图像将对应不同的等价密钥和加密算法,从而得到完全不同的密文图像。依据实验仿真得到的各项安全性能指标的具体结果,能够看出所设计的加密算法具备足够大的密钥空间,拥有非常良好的密钥敏感性,并且抗统计和差分攻击能力强,是一种非常优秀的图像加密算法。2.4 后向扩散算法
3 实验仿真
4 安全性分析
4.1 密钥空间
4.2 直方图分析
4.3 相邻像素相关性分析
4.4 信息熵
4.5 密钥敏感性分析
4.6 差分攻击分析
5 结束语