基于DNA序列与多混沌映射的图像融合加密方法 【技术领域】
本发明涉及DNA计算领域和数字图像加密的领域,具体是一种数字图像加密方法,主要是利用DNA序列的相加运算结合多混沌映射来实现图像的融合,以达到图像加密的目的。
背景技术
在当今社会,计算机网络改变了人们的通信方式,人们可以通过网络便捷地传输各种多媒体信息。由于网络的开放性,多媒体信息安全与保密越来越引起人们的重视。数字图像是多媒体通信中的重要信息载体,因而如何保护图像信息成为了普遍关注的问题。
由于混沌具有类随机、初值敏感性以及难以预测等特性,成为研究者们关注的焦点。根据置乱的对象来分,基于混沌的图像加密方法可以分为两类:像素位置置乱和像素值置乱。像素位置置乱的特点是加密效率高,效果好,但算法的安全性不高,难以抵抗统计攻击;像素值置乱的特点是算法安全性高,但加密效果不好,效率低。此外,传统的基于混沌的像素值的加密算法均是用单一混沌映射产生的混沌序列直接与像素的灰度值叠加来实现图像的加密。大量文献指出,利用单一混沌映射实现的图像加密算法具有安全性较低,混沌序列易破译以及密钥空间小等缺点。除了基于混沌的图像加密方法外,一些学者还提出了利用图像融合技术来实现图像的加密,然而,现存的图像融合方法具有融合参数难以控制的缺点,如果融合参数等于0,则原始图像被显示出来;反之,如果融合参数等于1,则模板图像被显示出来。可见,该方法的安全性受到了威胁,攻击者通过融合参数的调节就可以获得原始图像。
DNA加密系统是近年来伴随着DNA计算的研究而出现的密码学新领域,其特点是以DNA为信息载体,以现代生物技术为实现工具,挖掘DNA固有的高存储密度和高并行性等优点,实现加密、解密等密码学功能。已有的基于DNA加密的算法大多要用生物实验进行操作,由于生物实验设备昂贵,实验环境难以控制,实验灵敏性高等缺点,目前基于DNA加密的研究还是理论多于实践。
为了克服上述加密方案的缺点,本发明提出一种基于DNA序列和多混沌映射的图像融合加密算法,摆脱了DNA加密中的复杂生物操作,单纯的利用DNA序列的加运算并结合多混沌序列来实现图像的融合。本算法对图像的加密效果较好,密钥空间大,对密钥的敏感性强,能够有效地抵抗穷举攻击以及统计攻击。
【发明内容】
为实现以上目的,本发明采用的技术方案是:首先对原始图像和模板图像进行DNA编码,然后利用Cubic映射和小波函数产生的二维混沌序列置乱由编码得到的两个DNA序列矩阵。接着对置乱后的两个DNA序列矩阵做加法运算,得到一个新的DNA序列矩阵,最后利用Logistic映射产生的混沌序列与该DNA序列矩阵相作用来得到加密图像。附图1所示为本发明的算法流程图,其具体包括以下技术环节:
1.混沌序列的产生
本发明用Cubic映射、小波函数映射和Logistic映射来实现图像加密。
(1)Cubic映射
Cubic映射定义如下:
xn-1=μxn3+(1-μ)xn (1)
其中xn∈[-1,1],n=0,1,2,…,当μ∈[3.2,4]时,产生混沌序列。
(2)小波函数映射
小波函数在一定的条件下迭代也能够产生混沌现象。在一个一维小波函数构成的迭代公式(2)中:
xn+1=k(1-xn2)exp(-0.5(xn+μ)2)---(2)]]>
当k=1.33,x∈(0,1),μ∈[-0.77,-0.29]时会出现混沌现象。
(3)Logistic映射
Logistic映射是一种典型的混沌映射,其定义如下:
xn+1=μxn(1-xn) (3)
其中μ∈[0,4],xn∈(0,1),n=0,1,2,…。当0<μ≤3.569945时,该动力系统从稳定状态分叉产生倍周期;当3.569945<μ≤4时,该动力系统进入混沌状态。
本发明中,由Cubic映射与小波函数产生的混沌序列,是直接通过初值x0、y0产生的实数混沌序列,而为了与DNA序列相作用,必须将由Logistic映射产生的混沌序列转换成二值序列。根据所有的由任意初值产生的混沌实数序列来定义一个阈值函数f(x),取阈值为0.5,则f(x)定义如下:
f(x)=0,0<x≤0.5;1,0.5<x≤1;---(4)]]>
通过f(x)就可以把混沌实数序列转换成二值序列。
2.图像的DNA编码与解码
单链DNA序列由四种碱基A(adenine)、C(cytosine)、G(guanine)、T(thymine)组成,其中A与T、C与G互补。用00、01、10、11分别对DNA序列中的四个碱基进行二进制编码,由于二进制数字0与1互补,从而00与11互补,01与10互补。本文用A表示01,T表示10,C表示00,G表示11。通常8位灰度图像的每一个像素灰度值可以由8位二进制数表示,而这8位二进制数又可编码成长度为4的DNA序列。
反之,对DNA序列矩阵进行解码时,用01表示A,10表示T,00表示C,11表示G,这样一个DNA序列矩阵就可以解码成二值矩阵,然后,将每8位矩阵元素组成一组进行十进制转换,就可以还原成0~255之间的一个实数。
例如:原始图像的第一个像素灰度值是75,转换成二进制数是
用上述DNA编码映射准则进行编码得到DNA序列[CAGT];反之用A映射01,T映射10,C映射00,G映射11,对这个DNA序列进行解码,即可得到二进制序列
。
3.DNA序列的加减运算
本发明用DNA序列地加法运算来实现两幅图像的融合,以此来达到加密的目的;相反地,利用减法运算来实现加密图像的恢复.本文采用01----A,10----T,00----C,11----G的映射规则进行DNA编码,利用二进制的模二运算得出DNA序列的加减运算规则,见表1与表2.
A+A=T T+A=G C+A=A G+A=C A+T=G T+T=C C+T=T G+T=A A+C=A T+C=T C+C=C G+C=G A+G=C T+G=A C+G=G G+G=T
表1.DNA序列的加运算
A-A=C A-T=G A-C=A A-G=T T-A=A T-T=C T-C=T T-G=G C-A=G C-T=T C-C=C C-G=A G-A=T G-T=A G-C=G G-G=C
表2.DNA序列的减运算
4.基于DNA序列与多混沌映射的图像加密算法
本发明算法主要包括以下四部分:首先,将原始图像和模板图像编码成两个DNA序列矩阵;然后,按照上述3中的DNA加法运算方法来相加两个DNA序列矩阵,得到‘和’DNA序列矩阵;接着,利用Logistic混沌映射产生的混沌序列对‘和’DNA序列矩阵进行取补操作;最后,对取补后的DNA序列矩阵进行解码,就可以得到加密图像,算法流程图见图1。然而,由于原始图像和模板图像的相邻像素之间的相关性较大,使得由编码得到的DNA序列矩阵出现了许多相同的碱基,见图2(a)、(b),其中图2(a)显示了对原始图像编码后的DNA序列矩阵的部分图,图2(b)显示了对模板图像编码后的DNA序列矩阵的部分图。因此为了降低像素之间的相关性,必须在做DNA相加运算之前对DNA序列矩阵进行置乱。置乱后的原始图像和模板图像的DNA序列矩阵的部分图见图2(c)、(d)。
本发明的具体步骤如下:
(1)输入两幅8位灰度图像A(m,n)、B(m,n),m、n为图像A、B的行列维数;
(2)将图像A、B转化成二值矩阵,按照DNA编码规则进行DNA编码,得到两个DNA序列矩阵Ab、Bb;
(3)利用Cubic映射和小波函数分别以初值x0,y0,系统参数μ1,μ2产生两个混沌序列{xm}、{yn};
(4)将这两个序列按升序排列,得到两个新序列{xm′}、{yn′};
(5)将{xm′}、{yn′}各元素所在的位置之值替换原序列{xm}、{yn}中的该元素,得到两个新的序列{xm″},{yn″};
(6)用这两个序列作为置乱矩阵的行地址和列地址,用此矩阵对DNA序列矩阵Ab、Bb的位置进行置乱,得到新的DNA序列矩阵Ab′、Bb′;
(7)按照DNA加运算规则,执行Ab′+Bb′得到序列矩阵Cb;
(8)利用Logistic混沌映射,在初值为z0,系统参数为μ3的条件下,产生长度为m×n×8/2的混沌序列zi;
(9)利用阈值函数f(x)将混沌序列转化成二值序列,并对其重构得到大小与DNA序列矩阵Cb相同的二值矩阵z,当z(i,j)=1时,Cb(i,j)取补,否则不变;执行取补后,得到DNA序列矩阵Cb′;
(10)对序列矩阵Cb′按照(2)的逆过程获得矩阵C,输出图像C。
图像的解密过程是加密的逆过程,只需将DNA加法操作替换成DNA减法操作即可,这里不再累赘。
从上述算法分析,攻击者必须具备四组密钥6个密钥参数,即Cubic映射初值(x0)、系统参数(μ1);小波函数初值(y0)、系统参数(μ2);Logistic映射初值(z0)、混沌系统参数(μ3);以及模板图像。只有四组密钥同时具备才能顺利对图像进行解密,大大提高了图像的安全性。
本发明与现有技术相比具有以下优点:
(1)与传统的基于混沌的加密方案比,本发明具有加密效果好,密钥空间大,密钥灵敏性高以及抗穷举攻击与统计分析攻击等优点。
(2)与传统的基于融合的图像加密方案相比,本发明利用DNA加法操作实现图像的融合,融合效果好,并且有效地克服了传统融合方法中参数难以控制的缺点。
(3)与基于DNA密码系统的加密方案比,本发明可对数字图像进行加密,相对于复杂的生物操作,本算法易于实现与控制。
【附图说明】
图1本发明算法流程图;
图2对原始图像和模板图像的DNA序列矩阵置乱前后的部分图;
图3正确与错误密钥下的加密、解密图;
图4密钥灵敏性测试图;
图5原始图像和加密图像的直方图;
图6原始图像和加密图像水平方向像素间的相关图。
【具体实施方式】
结合图1对本发明的实施过程作详细的说明,但不局限于本实施例。
在MATLAB7.1环境下,对两幅256×256的标准灰度图像,在x0=0.3000000001,y0=0.2000000001,z0=0.6000000001,μ1=3.6000000001,μ2=-0.5000000001,μ3=3.9000000001的条件下进行仿真实验。
步骤1:输入lena灰度图像A(m,n)和模板图像B(m,n)见附图3(a)、(b),m、n为图像A、B的行列维数,其中m=256,n=256。图像A与B可表示成矩阵形式见式(5):
A=101107...203100106...202............6657...129mn---(5)]]>
步骤2:将图像A、B转化成二值矩阵,按照DNA编码规则进行DNA编码,得到两个DNA序列矩阵Ab、Bb。两矩阵的部分图见图2(a)、(b);
步骤3:利用Cubic映射和小波函数分别以初值x0=0.3000000001,y0=0.2000000001,系统参数μ1=3.6000000001,μ2=-0.5000000001,产生两个混沌序列X=x1x2…xm,Y=y1y2…yn;
步骤4:利用公式(6)对序列X,Y执行升序排列;
[X′,X′′]=Sort(X)[Y′,Y′′]=Sort(Y)---(6)]]>
函数Sort(·)为索引排序函数,X′,Y′为序列X,Y升序后得到的新序列,X″,Y″为其对应的索引值;
步骤5:用公式(7)来置乱两个DNA序列矩阵Ab、Bb的位置,得到置乱后的序列矩阵Ab′、Bb′,两序列矩阵的部分图见附图2(c)、(d);
Ab(i,j)↔Ab(X′′(i),Y′′(j))Bb(i,j)↔Bb(X′′(i),Y′′(j))---(7)]]>
其中i=1,2…m,j=1,2…n;
步骤6:按照DNA加运算规则,执行Ab′+Bb′得到DNA序列矩阵Cb;
步骤7:利用Logistic混沌映射,在初值为z0=0.6000000001,系统参数为μ3=3.9000000001的条件下,产生长度为m×n×8/2的混沌序列Z={z1z2…zm×n×4};
步骤8:利用阈值函数f(x)将混沌序列转化成二值序列,并对其重构得到大小与矩阵Cb相同的二值矩阵z,当z(i,j)=1时,Cb(i,j)取补,否则不变,执行取补后,得到DNA序列矩阵Cb′;
步骤9:对矩阵Cb′按照(2)的逆过程获得矩阵C,输出图像C,加密图像见附图3(c);
图像解密是加密的逆过程,解密图见附图3(f)。此外,图3(d)、(e)显示了错误密钥和错误模板图下的解密图像,图3(d)、(e)难以辨认原始图像,可见本发明算法具有较好的加密效果。
为了更好的说明该加密算法的安全性,本发明分别对密钥空间,密钥的灵敏性,灰度直方图以及像素之间的相关性等进行了分析。
1.密钥空间分析
在本发明算法中,除模板图像之外,共有6个密钥参数μ0,μ1,y0,μ2,z0,μ3,其中x0∈[-1,-1],μ1∈[3.2,4],y0∈[0,1],μ2∈[-0.77,-0.29],z0∈[0,1],μ3∈[3.569945,4],在该算法中,给它们的精度是10位,计算其密钥空间为1010×1010×1010×1010×1010×1010=1060,可见该算法具有足够大的密钥空间来抵抗穷举攻击。
2.密钥灵敏性分析
为了测试密钥的灵敏性,使用微小差异的密钥进行解密,附图4为解密后的结果图。图4(a)表示x0=0.3000000002,其它密钥不变的解密图;图4(b)表示y0=0.2000000002,其它密钥不变的解密图;类似地,图4(c)表示改变z0后的解密图。图4可以说明,只要密钥中存在微小的差异,都不能恢复原图像。可见,该算法具有较强的密钥灵敏性,可以有效的抵抗穷举攻击。
3.灰度直方图分析
我们通过直方图的比较,来分析加密前后图像统计特性的改变。从附图5(a)、(b)中可以看出,加密前后图像的直方图发生了较大的变化。加密前的图像象素比较集中,即在(0,255)的两端象素分布比较少,而中间分布的较多,而加密后的图像象素分布比较均匀,两图像相似度较低,攻击者难以利用像素灰度值的统计特性恢复原图像。由此可见,该算法具有很好的抵御统计分析能力。
4.相关性分析
原始图像像素间的相关性很高,为了破坏统计攻击,必须降低加密图像的相关性。我们从原始图像和加密图像中随机的选取在水平方向、垂直方向以及对角方向上3000对相邻像素点,然后利用公式(8)-(11)计算像素间的相关性。
E(x)=1NΣi=1Nxi---(8)]]>
D(x)=1NΣi=1N(xi-E(x))2---(9)]]>
cov(x,y)=1NΣi=1N(xi-E(x))(yi-E(y))---(10)]]>
rxy=cov(x,y)D(x)×D(y)---(11)]]>
其中x和y是两相邻像素间的灰度值。
原始图像 加密图像 水平方向 0.9455 0.0058 垂直方向 0.9688 0.0015 对角方向 0.9232 0.0035
表3.原始图像和加密图像中两相邻像素的相关系数
原始图像和加密图像水平方向的相关性见附图6(a)、(b),相关系数分别是0.9455和0.0058.其它方向的相关系数见表3。从图6(b)和表3可以看出加密图像的像素间的相关性很低,几乎接近0,再次说明,本算法具有很强的抗统计攻击能力。
本实例中的数据只为方便说明加密算法的过程,该发明的实施及加密效果不依赖于具体数值.