纪元法,李 菊,孙希延,严素清
(1. 桂林电子科技大学广西精密导航技术与应用重点实验室,广西 桂林 541004;2. 桂林电子科技大学信息与通信学院,广西 桂林 541004;3. 卫星导航定位与位置服务国家地方联合工程研究中心,广西 桂林 541004)
在网络通信飞速发展的今天,数字图像已成为现在最流行的多媒体形式之一,但是如果双方的通信通道不够安全,这些共享的数据就可能会被攻击者截获,从而泄露一些机密和私人信息,因此保证数字图像的高保密性传输是一个非常重要的研究领域。
图像加密一般是将原始图像通过加密算法变成类似噪声或者与原图毫无关系的新图像,且只有接收者才能复原数据。随着“混沌密码”这一概念被Robert A.J.Matthews首次提出后,掀起了一股基于混沌的图像加密算法研究热潮[1]。早期一些低维混沌系统所用的低维混沌映射由于结构简单、周期轨道少等弱点,导致该加密系统安全性较低[2-4],于是一些高维混沌映射的研究逐渐兴起。Hua等人[5]提出了一种耦合型二维混沌映射,将两个一维混沌映射按照特定方式组合,提高了加密系统的安全性,但是不能有效抵抗差分攻击,防御能力较低。在此基础上,一些学者将方向转向将混沌系统与其它加密技术进行结合。李等人[6]设计了一种具有非周期混沌映射和随机循环移位的鲁棒加密方案,该方案提高了加密速度,但是在安全性上得不到保障。此外还提出一些与压缩感知[7]、DNA编码[8]等相结合的图像加密算法,但仍存在着一些不足,其中有些算法的安全性需要得到进一步的检测,要确保更高的安全性和加密效率,需要进一步深入研究。
针对数字图像在网络传输中的安全性和可靠性问题,提出了一种基于改进二维混沌映射的彩色图像加密算法。首先对彩色图像的各个分量进行Arnold变换,接着用文中提出的改进二维混沌映射随机产生几个不同的混沌矩阵,用一种新的置乱和扩散方法对水平连接后的图像进行处理,保证该系统的随机性和可靠性,仿真结果和性能测试反映了该算法具有较好的加密效果和较高的安全性能。
一维Logistic映射和Sine映射是生成所提出的二维混沌映射(2D-SLSM)的基础,它们的数学表达式分别如下
xi+1=L(x)=4ηxi(1-xi)
(1)
xi+1=S(x)=βsin(πxi)
(2)
其中Logistic映射和Sine映射的控制参数范围都在[0,1]内,且分别在η∈[0.89,1]、β∈[0.87,1]时存在混沌行为。
由于一维Logistic映射和Sine映射结构简单,混沌范围比较窄,存在着一定性能上的缺陷,可能会对后面的其它操作带来一些负面影响,因此将它们进行新的耦合,提出了改进的混沌映射2D-SLSM,与Logistic映射和Sine映射相比,2D-SLSM的结构更加复杂,其输出也更难以预测,其数学定义如下
(3)
其中参数λ>500。图1分别为2D Logistic、2D-SLMM[9]、2D-LASM[10]和2D-SLSM的混沌轨迹,参数分别设置为:1.9、1、0.9和0.55,这能使各混沌映射能达到最好的输出效果。从图1中可以看出,所提出的2D-SLSM输出分布在整个相平面,比另外三个二维混沌映射占据范围更广且更均匀,表现出更好的遍历性和输出随机性。
图1 不同映射的混沌轨迹
给定一个大小为M×N×3的原始图像P,基于2D-SLSM的图像加密算法(SLSM-IEA)主要由Arnold变换、置乱和扩散组成,循环移位和像素异或操作衔接其中,保证加密的随机性和安全性。解密是加密过程的逆过程,加密的总体框架如图2所示。
图2 加密总体框架
从安全方面和系统结构的综合考虑,将密钥的长度设置为231位,它由以下几个部分组成:K={x0,y0,r,a1,a2,a3},其中(x0,y0)是初始状态值,r是干扰参数,a1,a2,a3是r的扰动参数。x0,y0和r的数学表达式如下所示
(4)
a1,a2,a3分别是由25比特的数据流{b1,b2,…,b25}产生的十进制数,由以下式子得来
r(i)=500+mod(r×ai,2)
(5)
置乱操作可以改变像素位置的行和列,使图片像素在较短步骤里被打乱,从而变成无法识别的密文,提出的置乱操作整体可分为以下3个步骤:
步骤1:对混沌序列S分别进行列排序和行排序,得到索引矩阵I1和I2;
步骤2:创建索引坐标矩阵PM1和PM2,存放图像位置信息,其中横坐标和纵坐标的值分别由索引矩阵I1和I2组成,表达式如下:
PM1(x,y)=PM1(I1(x,y),y)
PM2(x,y)=PM2(x,I2(x,y))
(6)
步骤3:对图像P进行位置变换,找出C中对应PM1中的位置,放入P中对应PM2中的位置。具体置乱方式如下:
P(PM(x,y))↔P(PM(x+1,y+1))
(7)
图3(a)(b)展示了一个具体置乱的数字例子,P为经过水平组合后的图像矩阵,大小为4×12,C为置乱结果。
图3 置乱操作示意图
扩散会更改像素值,并将较小的差异扩散到密文的所有像素中。一个好的扩散算法会使得加密系统有更高的安全性,有足够的能力抵抗数据丢失,假设置乱结果T和生成的混沌矩阵S的大小都为m×n,加密的扩散过程具体操作定义如下
(8)
(9)
在置乱结果之间进行逐位“异或”操作,可以生成新的用于扩散的混沌序列。“异或”运算的主要贡献是可以将原来的像素值完全改变成新的像素值。整个扩散步骤分为两个部分进行:当执行行扩散时,R为行数;当执行列扩散时,R为列数。解密时的扩散操作是式(8)的逆操作。
假设输入的彩色图像P大小为M×N×3,加密具体步骤如下:
步骤1 Arnold变换:将彩色图像按照R、G、B三个分量进行分离,分别旋转90°、180°和270°后再进行Arnold变换,然后将三个图像水平拼接起来,得到大小为M×3*N的图像P1。Arnold变换的表达式如下:
(10)
式中,a、b、N为正整数。取a=b=1,N为矩阵的宽度,在解密过程中可以应用Arnold的逆变换。
步骤2 混沌序列的产生:通过密钥K生成所需参数x0,y0,r(i),2D-SLSM可以生成3个随机的二维混沌序列S1、S2和S3,将混沌序列S3参照以下规则变为二进制序列A,用于像素异或:
(11)
步骤3 置乱:通过3.2节介绍的置乱方法进行位置交换,得到两轮置乱结果P2;
步骤4 循环移位:将矩阵P2的数据按照图4的步骤进行位置移动,得到图像P3;
图4 循环移位示意图
步骤5 扩散:根据3.3节描述的扩散操作,对矩阵P3的数据进行改变,得到两轮扩散结果P4;
步骤6 像素异或:根据步骤2产生的二进制序列A,当A(i)=0时,不做任何操作;当A(i)=1时,让P4中当前像素值和右侧像素值进行异或操作,最后得到加密结果C。
为了验证本算法的安全性能,本节从密钥安全性、抵御数据丢失和差分攻击能力和相邻像素相关性等几方面进行分析。
该系统使用密钥及其生成的混沌矩阵来加密普通图像,结合Arnold变换和置乱-扩散结构增加系统的复杂性,使得加密过程具有更强的安全性,图5(a)展示了在该加密系统下将一幅彩色图像加密成肉眼无法识别的类似噪声的图片,并成功解密恢复出了明文。
图5 仿真结果示意图和密钥敏感性分析
该系统将密钥长度设为2231比特,远远大于2100,满足密钥空间的标准。密钥敏感性也是一个考核算法是否有足够安全性的标准,用户只有在使用正确密钥的情况下才能恢复密文对应的明文。图5(b)展示了当使用与正确密钥仅有一位比特差时的解密效果,从图中可以看出,解密失败,反映出该系统密钥的较强敏感性。比特变化率(NBCR)可用于测试加密算法的密钥灵敏度,其数学表达式如下
(12)
其中B1和B2是两个图像,Ham[B1,B2]是B1和B2的汉明距离,Len是B1或B2的位长。当NBCR接近50%,这意味着两个测试图像是完全不一样的。
为了测试本算法的密钥敏感性,用两个只有一位差的密钥去加密同一个明文,测试结果如图5(c)所示,两幅密文和两幅解密后的明文的NBCR值都接近50%,也说明了当任意一位密钥被改变时,加密同一个明文所得到的结果是完全不一样的,不能成功解密出正确的明文,再次体现了本算法密钥的较强敏感性。
在图像传输中,总会遇到由于噪声损失或数据损失从而图像像素有一定丢失的情况,所以在密文图像有一定损失的情况下,一个好的加密算法应该有可以恢复明文的大部分可视化信息的能力。图6显示了当密文在数据丢失不同程度下的解密情况。
图6 抵抗数据丢失能力的仿真图
图6中第一列分别是丢失23.43%、46.87%和70.31%数据的密文,其余几列分别是对应密文的解密图像,3幅不同的密文在这几种丢失情况下都可以恢复大部分可视化信息,甚至在丢失70%密文信息的时候,本算法恢复出来的图像仍能携带着原始图像大部分“特征信息”,体现出本算法较强的抵御数据丢失能力。
差分攻击是一种攻击者常用的测试方法,用同一个加密系统,不断去分析修改后的明文与密文之间的关系,从而破译加密系统。为了检验本系统抗差分攻击的能力,可以用像素变化率(NPCR)和归一化平均变化强度(UACI)来进行测试[11],它们的定义分别如下所示
(13)
(14)
其中m和n是图像的长和宽,C1和C2是由只有一个像素值不同的两幅图像经过同一个加密系统的密文,G(i,j)由式(16)得来:
(15)
对于大小为512×512的图像,若NPCR大于99.5893%,UACI 在区间 (33.3730%, 33.5541%)内,则认定该系统有抵抗差分攻击的能力。表1给出了本算法和其它3种算法的测试结果,本算法和文献[13]满足所有要求,文献[12]次之,文献[14]最少,因此本算法有足够能力抵抗差分攻击。
表1 不同加密算法的测试结果
一般未经过加密的图像的像素有着很高的相关性,一个好的加密算法应该要削弱这些相关性,从而使攻击者很难从中寻找到关联,提高加密安全性。两个像素的相关性可以通过以下式子进行计算:
(16)
密文图像的计算结果越接近0,代表其方向上的相关性越弱,表1比较了本算法和文献[12]、[13]、[14]中的算法在水平、垂直和对角线上的相邻像素相关性,所有算法结果都接近0,在消除相邻像素相关性能力上都有不错的表现,攻击者很难从这方面对加密图像进行破译,提高了加密安全性。
针对图像安全问题,用两个现有的一维混沌映射,耦合形成了一个新的具有复杂混沌行为的二维混沌映射,并在此基础上提出了一种彩色图像加密算法。Arnold变换与置乱和扩散操作进行结合,改变明文像素的位置和像素值,增加加密的复杂性和和随机性。实验结果表明,本算法相邻像素相关性弱,趋近于0;密钥敏感性较强,用与正确密钥只有一位差的密钥也无法成功破译密文;抵御数据丢失能力上有一定优势,即使在丢失大部分密文也能恢复相应可视化信息;抵抗差分攻击能力强,攻击者难以从密文和明文之间找到联系,今后将继续研究加密在视频方向上的应用。