基于DNA序列与多混沌映射的数字图像加密方法 【技术领域】
本发明涉及DNA计算领域和数字图像加密的领域,特别涉及一种数字图像加密方法,主要是利用DNA序列的编码特性结合多混沌映射来实现数字图像的加密。
背景技术
在当今社会,计算机网络改变了人们的通信方式,人们可以通过网络便捷地传输各种多媒体信息。由于网络的开放性,多媒体信息安全与保密越来越引起人们的重视。数字图像是多媒体通信中的重要信息载体,因而如何保护图像信息成为了普遍关注的问题。
由于混沌具有类随机、初值敏感性以及难以预测等特性,成为研究者们关注的焦点。根据置乱的对象来分,基于混沌的图像加密方法可以分为两类:像素位置置乱和像素值置乱。像素位置置乱的特点是加密效率高,效果好,但算法的安全性不高,难以抵抗统计攻击;像素值置乱的特点是算法安全性高,但加密效果不好,效率低。此外,传统的基于混沌的像素值的加密算法均是用单一混沌映射产生的混沌序列直接与像素的灰度值叠加来实现图像的加密。大量文献指出,利用单一混沌映射实现的图像加密算法有安全性较低,混沌序列易破译以及密钥空间小等缺点。
DNA加密系统是近年来伴随着DNA计算的研究而出现的密码学新领域,其特点是以DNA为信息载体,以现代生物技术为实现工具,挖掘DNA固有的高存储密度和高并行性等优点,实现加密、解密等密码学功能。已有的基于DNA加密的算法大多要用生物实验进行操作,由于生物实验设备昂贵,实验环境难以控制,实验灵敏性高等缺点,目前基于DNA加密的研究还是理论多于实践。
【发明内容】
为了克服上述加密方案的缺点,本发明提出一种基于DNA序列和多混沌映射的数字图像加密方法,摆脱了DNA加密中的复杂生物操作,单纯的利用DNA编码的特性并结合多混沌序列来同时实现像素位置和像素置的置乱,并提高数字图像加密算法的效果以及安全性。本算法对图像的加密效果较好,密钥空间大,对密钥的敏感性强,能够有效地抵抗穷举攻击以及统计攻击。
本发明的技术方案是:该算法首先通过Cubic映射和小波函数产生的混沌序列置乱图像的像素位置,然后利用DNA序列的编码、取补、解码等规则结合由Logistic映射产生的混沌序列来扰乱图像的像素值。
附图1所示为本发明算法流程图,其具体包括以下技术环节:
1.混沌序列的产生
本发明算法中,用Cubic映射、小波函数映射和Logistic映射来实现图像加密。其中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]时会出现混沌现象。小波函数映射的分叉图和Lyapunov指数图见图2。
(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序列中的四个碱基进行二进制编码,共有4!=24种编码组合。由于二进制数字0与1互补,从而00与11互补,01与10互补,故在24种数字编码中,有8种编码满足碱基互补配对准则,见表1。
表1DNA序列的8种编码、解码映射准则
1 2 3 4 5 6 7 8 00---A 01---C 10---G 11---T 00---A 01---G 10---C 11---T 00---C 01---A 10---T 11---G 00---C 01---T 10---A 11---G 00---G 01---A 10---T 11---C 00---G 01---T 10---A 11---C 00---T 01---C 10---G 11---A 00---T 01---G 10---C 11---A
首先,将这8种规则映射到(0,1)之间的8个子区域中,例如:(0,0.125]区域表示规则1,(0.125,0.25]表示规则2……;然后,用两个种子(key1,key2)随机的产生两个(0,1)之间的随机数,以此来选择不同的DNA编码、解码规则,不同的编码、解码规则使得图像地加解密不同;最后,将原始图像转换成二值序列,按照选择的编码、解码准则,实现图像的加密.
实例:如原始图像的第一个像素值是
用DNA编码映射准则1进行编码得到DNA序列[CAGT],然后将上述DNA序列用DNA解码映射准则5进行解码得到二值序列[11010010]。
3.基于DNA序列与多混沌映射的图像加密算法
具体步骤如下:
(1)输入8位灰度图像A(m,n),m、n为图像A的行列维数;
(2)利用Cubic映射和小波函数分别以初值x0,y0,系统参数μ1,μ2产生两个混沌序列{xm}、{yn};
(3)将这两个序列按升序排列,得到两个新序列{xm′}、{yn′};
(4)将{xm′}、{yn′}各元素所在的位置之值替换原序列{xm}、{yn}中的该元素,得到两个新的序列{xm″},{yn″};
(5)用这两个序列作为置乱矩阵的行地址和列地址,用此矩阵对图像像素位置进行置乱,得到灰度图像B(m,n);
(6)将图像B转化成一维的二值序列M,由于每个像素值可以由8位二进制表示,所以length(M)=m×n×8;
(7)将序列M,按照种子key1选取的DNA映射规则进行编码,得到长度为m×n×8/2的DNA序列N;
(8)利用Logistic混沌映射,在初值为z0,系统参数为μ3的条件下,产生长度为m×n×8/2的混沌序列zi;
(9)利用阈值函数f(x)将混沌序列转化成二值序列,当zi=1时,该位置的碱基取补,否则不变;
(10)将改变后的DNA序列按照种子key2选取的DNA映射规则进行解码操作,还原成二值序列,重构图像矩阵,得到加密后的灰度图像。
其中,步骤(1)-(5)是图像像素位置的置乱过程,步骤(6)-(10)是图像的像素值扰乱过程。图像的解密过程是加密的逆过程,这里不再累赘。
本发明的有益效果:从上述算法分析,攻击者必须具备四组密钥8个密钥参数,即Cubic映射初值(x0)、系统参数(μ1),小波函数初值(y0)、系统参数(μ2),Logistic映射初值(z0)、混沌系统参数(μ3)、DNA编码密钥(key1)、DNA解码密钥(key2),才能顺利对图像进行解密,大大提高了图像的安全性;与传统的基于混沌的加密方案比,本发明具有加密效果好,密钥空间大,密钥灵敏性高以及抗穷举攻击与统计分析攻击等优点;与基于DNA密码系统的加密方案比,本发明可对数字图像进行加密,相对于复杂的生物操作,本算法易于实现与控制。
【附图说明】
图1本发明算法流程图;
图2小波函数的分叉图和exponent指数图;
图3本发明的结果图;
图4密钥灵敏性测试图;
图5原始图像和加密图像的直方图;
图6原始图像和加密图像水平方向像素间的相关图。
【具体实施方式】
结合附图对本发明的实施过程作详细的说明,但不局限于本实施例。
在MATLAB7.1环境下,对128×128的lena灰度图像,在x0=0.3,y0=0.1,z0=0.36,μ1=3.6,μ2=-0.5,μ3=3.9,key1=1986,key2=1的条件下进行仿真实验。实验流程如图1所示。
步骤1:输入lena灰度图像A(m,n),见附图3(a),m、n为图像A的行列维数,其中m=128,n=128。图像A可表示成矩阵形式见式(5);
[X′,X′′]=Sort(X)[Y′,Y′′]=Sort(Y)---(5)]]>
步骤2:利用Cubic映射和小波函数分别以初值x0=0.3,y0=0.1,系统参数μ1=3.6,μ2=-0.5,产生两个混沌序列X=x1x2…xm,Y=y1y2…yn;
步骤3:利用公式(6)对序列X,Y执行升序排列;
A=101107...203100106...202............6657...129mn---(6)]]>
函数Sort(·)为索引排序函数,X′,Y′为序列X,Y升序后得到的新序列,X″,Y″为其对应的索引值;
步骤4:用公式(7)来置乱图像A的位置,得到置乱后的图像B(m,n),见附图3(b);
A(i,j)↔A(X′′(i),Y′′(j))---(7)]]>
其中i=1,2…m,j=1,2…n;
步骤5:将图像B转换成一维的二进制序列M,M的长度为m×n×8;
步骤6:由种子key1=1986选取的DNA映射规则是规则7,用规则7对序列M进行DNA编码,得到DNA序列N,length(N)=m×n×4;
步骤7:利用Logistic混沌映射,在初值为z0=0.36,系统参数为μ3=3.9的条件下,产生长度为m×n×8/2的混沌序列Z={z1z2…zm×n×4};
步骤8:利用阈值函数f(x)将混沌序列转化成二值序列,当zi=1时,N(i)的碱基取补,否则N(i)不变;
步骤9:将改变后的DNA序列,按照种子key2=1选取的DNA映射规则6进行解码操作,还原成二值序列,重构图像矩阵,得到加密后的灰度图像,见附图3(c)。
图像解密是加密的逆过程,解密图见附图3(d)。
为了更好的说明该加密算法的安全性,本发明分别对密钥空间,密钥的灵敏性,灰度直方图以及像素之间的相关性等进行了分析。
1.密钥空间分析
在本发明中,共有8个密钥,分别是x0,μ1,y0,μ2,z0,μ3,key1,key2,其中x0∈[-1,-1],μ1∈[3.2,4],y0∈[0,1],μ2∈[-0.77,-0.29],z0∈[0,1],μ3∈[3.569945,4],key1,key2是随机数。如果计算精度为10-14,计算除去随机数之外的密钥空间为1014×1014×1014×1014×1014×1014=1084,可见该算法具有足够大的密钥空间来抵抗穷举攻击。
2.密钥灵敏性分析
为了测试密钥的灵敏性,使用微小差异的密钥进行解密,附图4为解密后的结果。图4(a)表示x0=0.30000000000001,其它密钥不变的解密图;与图4(a)一样,图4(b)、图4(c)分别表示y0=0.10000000000001,z0=0.36000000000001,其它密钥不变的解密图;图4(d)表示错误DNA映射规则下的解密图。图4(a)、(b)、(c)可以说明,只要密钥中存在微小的差异,都不能恢复原图像。可见,该算法具有较强的密钥灵敏性,可以有效的抵抗穷举攻击。
3.灰度直方图分析
我们通过直方图的比较,来分析加密前后图像统计特性的改变。从附图5(a)、(b)可以看出,加密前后图像的直方图发生了较大的变化。加密前的图像象素比较集中,即在(0,255)的两端象素分布比较少,而中间分布的较多,而加密后的图像象素分布比较均匀,两图像相似度较低,攻击者难以利用像素灰度值的统计特性恢复原图像。由此可见,该算法具有很好的抵御统计分析能力。
4.相关性分析
原始图像像素间的相关性很高,为了破坏统计攻击,必须降低加密图像的相关性。我们从原始图像和加密图像中随机的选取在水平方向、垂直方向以及对角方向上3000对相邻像素点,然后利用公式(8)-(11)计算像素间的相关性。
rxy=cov(x,y)D(x)×D(y)---(8)]]>
E(x)=1NΣi=1Nxi---(9)]]>
D(x)=1NΣi=1N(xi-E(x))2---(10)]]>
cov(x,y)=1NΣi=1N(xi-E(x))(yi-E(y))---(11)]]>
其中x和y是两相邻像素间的灰度值。
原始图像 加密图像 水平方向 0.9248 0.0023 垂直方向 0.9547 -0.0161
原始图像 加密图像 对角方向 0.8886 0.0015
表2.原始图像和加密图像中两相邻像素的相关系数
原始图像和加密图像水平方向的相关性见附图6(a)、(b),相关系数分别是0.9248和0.0023.其它方向的相关系数见表2。从图6(b)和表2可以看出加密图像的像素间的相关性很低,几乎接近0,再次说明,本算法具有很强的抗统计攻击能力。
本实例中的数据只为方便说明加密算法的过程,该发明的实施及加密效果不依赖于具体数值。