一种基于三维Arnold映射的图像分组加密方法

文档序号:6583474阅读:713来源:国知局

专利名称::一种基于三维Arnold映射的图像分组加密方法
技术领域
:本发明涉及一种基于三维Arnold映射的图像分组加密方法,属于信息安全领域中的密码技术,是一种利用电子计算机技术、混沌映射实现的基于s-p网络的图像数据加密方案。
背景技术
:随着Internet在多个领域的快速发展,现代社会对国际互联网的依赖越来越深,然而,随着互联网同时出现的安全问题也成为了用户在选择使用时关注的一个重要方面。近年来,网络安全事故的频频发生,给大到国家小到个人的国际互联网用户带来了巨大的损失,因此,信息安全问题成为了计算机领域不容忽视的问题。随着学科的发展,密码术在许多研究人员的不懈努力下,已经发展成为信息安全领域最受欢迎的数据保护手段之一。混沌密码系统具有各态遍历性和对初值、参数敏感的特点,非常适合构建加密方法,而且混沌密码系统还具有加密速度快,资源耗费少,实现过程简单明了,为数据的安全传输提供了很好的加密应用,因此混沌密码学(明文数据与乱数流叠加产生密文)成为近代加密学的一个热点。常见的混沌密码系统主要分为两类1.基于混沌的流密码,即利用混沌映射产生密钥流,一次与一个明文符号进行加密操作;2.基于混沌的块密码,把一定大小的一组明文作为明文块,通过混沌映射进行加密操作。一般来说,基于混沌的块密码的应用要比流密码的应用广泛的多。混沌密码学还正处于发展阶段,近些年来,很多关于混沌系统的图像加密方案接连呈现于大家的视野,但是却不得不说一些低维混沌密码系统已经被证明存在安全问题。例如,使用一维混沌系统的加密方法,密钥空间不够,直接导致无法抵御穷举攻击,同时容易利用相空间重构方法破解出密钥,从而不能抵御已知明文攻击。二维Cat映射和Baker映射在某些参数下不能保证其安全性。Cat映射加密方法在某些控制参数下经过多次迭代可恢复明文,Baker映射加密方法在某些控制参数下迭代多次并不能改变明文。这就需要在方法构建时有效的排除此类弱密钥,以保证方法安全。可见在混沌密码方法构建的过程中,混沌映射的应用方式直接影响到方法的安全性。许多利用高维混沌的加密方法也就应时而生了。
发明内容要解决的技术问题为了避免现有技术的不足之处,本发明提出一种基于三维Arnold映射的图像分组加密方法,以保证在混沌密码方法构建的过程中,混沌映射应用方式影响到方法的安全性。本发明的思想在于首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。技术方案—种基于三维Arnold映射的图像分组加密方法,其特征在于対于数字圉像Pwxh,其中W是图像的宽度,H是图像的高度,均以像素计,其加密的具体步骤如下步骤1:输入4个32位无符号整型密钥key0,keyl,key2,key3,所述的key0、keyl、key2、key3为由用户提供的32位无符号整型密钥;步骤2:计算x01=(key0+keyl)/(0xffffffff*2)和x02=(key2+key3)/(0xffffffff*2),以xOl和x02分别作为logistic的参数,然后采用logistic映射迭代100次得到x21和x22,x2=(x21+x22)/2;所述的logistic映射为xn+1=xn,yG(0,2),xnG[-l,l];其中的x01、x02、x21、x22均为求双精度数x2的中间变量;步骤3:以x2为参数,采用chebyshev每迭代100次,取混沌序列值,生成S_xO[times]数组中的一个值,直至生成整个以times为大小的数组;所述的times为加密轮数大于4;所述的chebyshev映射为:xn+1=cos(kcos—1(xn)),k>2,xnG[-1,1];步骤4:计算y01=(key0+key2)/(Oxffffffff*2)和y02=(keyl+key3)/(Oxffffffff*2),分别用logistic映射迭代100次得到y21和y22,y2=(y21+y22)/2;其中的y01、y02、y21、y22均为求双精度数y2的中间变量;步骤5:以y2为参数,用chebyshev每迭代100次,取混沌序列值,然后把序列映射到(1,2]范围内生成S_uO[times]数组的一个值,直至生成整个以times为大小的数组;步骤6:第k轮第j块sbOX_xO经过下列迭代logxO[k]=S_xO[k],logxO[k][j]=l—suO承logxO[k]承logxO[k][j_l],sbox_xO[k][j]=fabs(cos(4承acos(logxO[k][j])))其中xO[][]是为计算sbOX_xO[k][j]值而建立的临时中间数组;步骤7:计算zOl=(key0+keyl)/(0xffffffff*2),z02=(key2+key3)/(0xffffffff*2),分别用chebyshev映射迭代100次得到z21和z22,z2=(z21+z22)/2;其中的z01、z02、z21、z22均为求双精度数z2的中间变量;步骤8:以z2为参数,用logistic每迭代100次,取混沌序列值,生成P_uO[times]数组中的一个值,直至生成整个以times为大小的数组;步骤9:将数字图像PwxH按8承8像素点分块,每一块中第l个像素点P。={r,g,b}T,以S_uO[k]为参数用Logistic映射生成长度为6的混沌序列D[O..5],其中r为数字图像块中红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值;步骤10:通过K[i]=(D[i]*106)mod256(i=O,l,,5)生成K[O..5],把K[O.5]作为三维Arnold映射的参数,根据Arnold映射获得矩阵A,1"12+ai3*fefll2*"23+fll3*(l+a23*fe)y4=Z)12l+ai2*6l2+Z12*ai3*to(l+ai2*Z>12)*a23+Z12*ai3*(l+a23*fe)6l3(l+"13*6l3)*te(l+"13*fe)*(l+a23*te)5其中a12=k[O],a13=k[l],a23=k[2],b12=k[3],b13=k[4],b23=k[5];由B={KeK[l],K[2]K[3],K[4]K[5]}T生成歹ij矩阵B,通过S『(A^Pi)eB得到S盒的输出结果S。,其中Pi为第i个像素点的值P二(r,g,b);步骤11:根据sbox—x「(sbox—xw+(Pi小rePi小gePi小b)/255)/2修改用于加密每块中第i个像素的混沌映射的初始参数;每次新生成用于加密此像素点的数组K中的K[3]、K[4]、K[5],而K[O]、K[l]、K[2]选取第i_l个像素点对应数组K中的K[3]、K[4]、K[5];步骤12:将S。的每个字节分成高4位和低4位生成sbox—out,用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤6、7中的前s个元素与p[O..378]—一对应,对p[O..378]进行排序,同时改变s[O..378]序列中元素的位置,s[379..384]位置不变;步骤13:合并高4位和低4位生成p[192],把前三个字节与后三个字节交换位置;步骤14:再用xn+1=cos(4cos—'GO),xnG[-l,l]生成混沌值映射到整数m,0<m<n-l,选取第m种排序方法进行置乱;重复步骤611,直到加密完成,其中n为排序方法,n=width/block—size。上述方法的解密方法为加密过程的逆过程。有益效果本发明提出的一种基于三维Arnold映射的图像分组加密方法,首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。主要优越性在于有足够大的密钥空间抵抗穷举攻击;任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性;统计特性不会暴露任何有用信息,密图相邻像素相关性小和抗攻击能力强。图l:本发明的加密过程图2:采用本方法的加密图像试验图3:采用本方法的加密图像试验图4:Lena图像加密后的统计直方图图5:明密文图像中的水平相邻像素相关性分析具体实施例方式现结合实施例、附图对本发明作进一步描述数字图像Input—Picture,用Mwxh表示,w是图像的宽度,以像素计,将图像按8*8像素点分块,block—size是加密块的大小,n=w/block—size,每一加密块中第一个像素点P。={r,g,b}T'。下文所有双精度的值key0key3以及int类型times都由用户提供,取u0=1.9999。具体加密过程如下(参见附图1):61.分别利用公式xOl=(keyO+keyl)/(0xffffffff*2)和x02=(key2+key3)/(0xffffffff*2),得到的xOl和x02作为logistic的参数,迭代100次得到x21和x22。2.用x2=(x21+x22)/2得到的x2作为chebyshev的参数,然后每迭代100次,取混沌序列值,生成S—xO[times]中的一个数组元素值,直至生成整个以times为大小的数组,数组中的每一个值作为每轮生成s盒混沌映射的初始值。3.分别利用公式yOl=(key0+key2)/(Oxffffffff*2),y02=(keyl+key3)/(0xffffffff*2),得到的yOl和y02作为logistic的参数,迭代100次得到y21和y22。4.用y2=(y21+y22)/2得到的y2作为chebyshev的参数,然后每迭代100次,取混沌序列值,把序列映射到(1,2]范围内生成S—uO[times]中的一个数组元素值,直至生成整个以times为大小的数组,数组中的每一个值作为每轮生成s盒混沌映射的参数。5.分别利用公式zOl=(key0+keyl)/(0xffffffff*2),z02=(key2+key3)/(0xffffffff*2),得到的zOl和z02作为chebyshev的参数,迭代100次得到z21和z22。6.用z2二(z21+z22)/2得到的z2作为chebyshev的参数,然后每迭代100次,取混沌序列值0,生成P_uO[timeS]数组中的一个值,直至生成整个以times为大小的数组,数组中的每一个值作为对应每轮生成P盒混沌映射的初始值。7.将第k轮s盒混沌映射的参数S_uO[k]赋值给suO,将另一参数S_xO[k]赋值给logxO[k][O],利用迭代公式logxO[k][j]=l-su0*lOgX0[k]*lOgX0[k][j-1]得到logxO[k][j],作为fabs(cos(4*aC0S(logxO[k][j])))的参数,算出第k轮j±央s盒混沌映射的初始值sbOX_xO[k][j]。8.以S_uO[k]为参数代入公式xn+1=xn,iiG(0,2),xnG[-1,1]生成一个长度为6的混沌序列D[O..5],并通过K[i]=(D[i]*106)mod256生成Arnold矩阵。9.取K混沌序列的后三个值作为三维Arnold映射的参数,并且算出B二(K十K[1],K[2]K[3],K[4]④K[5]厂的值。10.S盒的输出为S。=(A*P。)④B,修改用于加密每块中第i个像素的混沌映射的初始参数,利用sbox—Xl=(sbox—Xw+(Pi—lr④Pw.gePH.b)/255)/2,计算出加密每块中第i个像素的混沌映射的初始参数sboX_Xi。11.将s盒输出的结果的每个字节分成高低4位生成sbox—out,用P—uO[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤10中的前s个元素与p[O..378]—一对应,对p[O..378]进行排序,同时改变s序列中元素的位置,s[379..384]位置不变。把前三个字节与后三个字节交换位置后,合并高低四位生成p[192]。12.利用xn+1=cos(4cos—'GO),xnG[-1,1]生成混沌值映射到整数m(O<m<n-1),选取第m种排序方法进行置乱。13.重复8-12步骤,直到加密完成。解密过程为加密过程的逆过程。根据本实施例可以看出本发明具有如下特点本方法首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。I.密钥空间大由于本方法复合使用了多个混沌映射,而且本方法所采用的是128位密钥,密钥空间为2128,所以本方法有足够的密钥空间抵抗穷举攻击。II.敏感度高本方法中混沌映射的初始值和参数是由128位密钥整体生成,其中任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性。随机选取128加密密钥为5fe2345978d2e3al4dfea580falb3e68,加密4轮,对512*512的lena图进行加密,加密时间为0.359s。实验结果如附图2,很明显,图像的加密结果使得原始信息不可辨识,同时如果输入正确的密钥就可以得到如附图3所示的正确解密结果。表1的结果说明该方法对于一个固定长度的明文块,当密钥的任意一位发生改变时,密文块的每个位发生改变的概率为50%,满足精确密钥雪崩标准,可以在一定程度上抵抗差分密码攻击。原始密钥改变一位新密文与原密文不同位数百分比5fe2345978d2e3al4dfea580falb3e685fe2345978d2e3al4dfea580falb3e6949.9簡%5fe2145978d2e3al4dfea580falb3e6849.9875%5fe2345978d2e3alcdfea580falb3e6849.9828%表l密钥改变一位密文变化百分比表2的结果说明该方法对于一个固定长度的明文块,当明文块的任意变时,密文块的每个位发生改变的概率为50%,满足精确密钥雪崩标准,可以在抵抗差分密码攻击。密钥改变明文块一位新密文与原密文不同位数百分比5fe2345978d2e3al4dfea580falb3e68改变每块第一个字节的最低1位50.0287%改变每块第91个字节的最高1位50.0111%改变每块最后一个字节的最低1位49.9816%表2明文块改变一位密文变化百分比8位发生改定程度上III.统计特性不会暴露任何有用信息—个好的图像加密方法应该使得密图在统计上不能提供任何有用的信息,从而使得破解变得更加困难,比较理想的状态是加密过程将原始图像像素值的不均匀分布变成了像素值的均匀分布;使密文像素值在整个空间范围内取值概率均等,则明文的统计特性完全被打破。这样使得加密的安全性更高。附图4展示了原图与密图的色彩分量的灰度直方图。可以看出,密图的红、绿、蓝分量的灰度直方图都呈均匀分布,这说明加密方法对原图像起到了很好的混淆效果,有效地掩盖了原图的统计特征,攻击者很难通过对密图灰度直方图的分析得到有用的信息。IV.密图相邻像素相关性小为了检验明文图像和密文图像相邻像素的相关性,从密图中随机选取1000个相邻像素对(分别在水平、竖直和对角线方向上)。然后,用公式定量计算相邻像素相关性并画出对应的分析图像。附图5即为该方法像素点相关性分析的结果,其中,x和y分别表示图像中两个相邻像素的灰度值,Yxy即为两个相邻像素的相关系数。通常原始明文图像的相邻像素的相关系数接近于1,即相邻像素是高度相关的。而比较理想的加密方法使得密图的相邻像素的相关系数接近于0,即相邻像素已基本不相关,这样可以说明明文的统计特征已被扩散到随机的密文中。V.抗攻击能力强低维混沌系统受有限精度影响产生短周期效应,严重影响其产生序列的随机性。而尽管采用复杂的非线性高维混沌系统可以克服一维混沌系统不能抵御相空间重构攻击的缺点,但此类方案计算复杂度高,难以满足实时性要求。本方法利用三维Arnold映射构建的S盒,用Chebyshev映射构建的扩散过程以及密钥产生器,能够很好地增加方法的抗攻击能力。根据香农的信息论,当密图信源随机的传输信息时,信源的熵值应为8,因此,考虑到现实中的信源很少真正随机的传输数据,一个安全的图像加密算法加密后的图像的熵值应该尽可能的接近于8。利用公式,我们得到密图的熵值H(S)=7.999745,这说明加密过程中的信息泄漏是可以忽略的,并且加密系统可以抵抗熵攻击。此外,我们可以看到,明文图像中的每一个像素在迭代过程中都做为产生logistic序列的参数出现,所以密钥子序列的产生与明文高度相关,因而本方法能够有效抵抗已知明文攻击。权利要求一种基于三维Arnold映射的图像分组加密方法,其特征在于对于数字图像PW×H,其中W是图像的宽度,H是图像的高度,均以像素计,其加密的具体步骤如下步骤1输入4个32位无符号整型密钥key0,key1,key2,key3,所述的key0、key1、key2、key3为由用户提供的32位无符号整型密钥;步骤2计算x01=(key0+key1)/(0xffffffff*2)和x02=(key2+key3)/(0xffffffff*2),以x01和x02分别作为logistic的参数,然后采用logistic映射迭代100次得到x21和x22,x2=(x21+x22)/2;所述的logistic映射为xn+1=1-μxn,μ∈(0,2),xn∈[-1,1];其中的x01、x02、x21、x22均为求双精度数x2的中间变量;步骤3以x2为参数,采用chebyshev每迭代100次,取混沌序列值,生成S_x0[times]数组中的一个值,直至生成整个以times为大小的数组;所述的times为加密轮数大于4;所述的chebyshev映射为xn+1=cos(kcos-1(xn)),k≥2,xn∈[-1,1];步骤4计算y01=(key0+key2)/(0xffffffff*2)和y02=(key1+key3)/(0xffffffff*2),分别用logistic映射迭代100次得到y21和y22,y2=(y21+y22)/2;其中的y01、y02、y21、y22均为求双精度数y2的中间变量;步骤5以y2为参数,用chebyshev每迭代100次,取混沌序列值,然后把序列映射到(1,2]范围内生成S_u0[times]数组的一个值,直至生成整个以times为大小的数组;步骤6第k轮第j块sbox_x0经过下列迭代logx0[k]=S_x0[k],logx0[k][j]=1-su0*logx0[k]*logx0[k][j-1],sbox_x0[k][j]=fabs(cos(4*acos(logx0[k][j])))其中x0[][]是为计算sboxx0[k][j]值而建立的临时中间数组;步骤7计算z01=(key0+key1)/(0xffffffff*2),z02=(key2+key3)/(0xffffffff*2),分别用chebyshev映射迭代100次得到z21和z22,z2=(z21+z22)/2;其中的z01、z02、z21、z22均为求双精度数z2的中间变量;步骤8以z2为参数,用logistic每迭代100次,取混沌序列值,生成Pu0[times]数组中的一个值,直至生成整个以times为大小的数组;步骤9将数字图像PW×H按8*8像素点分块,每一块中第1个像素点P0={r,g,b}T,以Su0[k]为参数用Logistic映射生成长度为6的混沌序列D,其中r为数字图像块中红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值;步骤10通过K[i]=(D[i]*106)mod256(i=0,1,...,5)生成K,把K作为三维Arnold映射的参数,根据Arnold映射获得矩阵A,<mrow><mi>A</mi><mo>=</mo><mfencedopen='['close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>a</mi><mn>12</mn></msub><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub></mtd><mtd><msub><mi>a</mi><mn>12</mn></msub><mo>*</mo><msub><mi>a</mi><mn>23</mn></msub><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>23</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>b</mi><mn>12</mn></msub></mtd><mtd><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>12</mn></msub><mo>*</mo><msub><mi>b</mi><mn>12</mn></msub><mo>+</mo><msub><mi>b</mi><mn>12</mn></msub><mo>*</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub></mtd><mtd><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>12</mn></msub><mo>*</mo><msub><mi>b</mi><mn>12</mn></msub><mo>)</mo></mrow><mo>*</mo><msub><mi>a</mi><mn>23</mn></msub><mo>+</mo><msub><mi>b</mi><mn>12</mn></msub><mo>*</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>23</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>b</mi><mn>13</mn></msub></mtd><mtd><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><msub><mi>b</mi><mn>13</mn></msub><mo>)</mo></mrow><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub></mtd><mtd><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>23</mn></msub><mo>*</mo><msub><mi>b</mi><mn>23</mn></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow>其中a12=k,a13=k[1],a23=k[2],b12=k[3],b13=k[4],b23=k[5];由生成列矩阵B,通过B得到S盒的输出结果S0,其中Pi为第i个像素点的值P=(r,g,b);步骤11根据修改用于加密每块中第i个像素的混沌映射的初始参数;每次新生成用于加密此像素点的数组K中的K[3]、K[4]、K[5],而K、K[1]、K[2]选取第i-1个像素点对应数组K中的K[3]、K[4]、K[5];步骤12将S0的每个字节分成高4位和低4位生成sbox_out,用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤6、7中的前s个元素与p一一对应,对p进行排序,同时改变s序列中元素的位置,s[379..384]位置不变;步骤13合并高4位和低4位生成p[192],把前三个字节与后三个字节交换位置;步骤14再用xn+1=cos(4cos-1(xn)),xn∈[-1,1]生成混沌值映射到整数m,0<m<n-1,选取第m种排序方法进行置乱;重复步骤6~11,直到加密完成,其中n为排序方法,n=width/block_size。F2009102191657C0000022.tif,F2009102191657C0000023.tif,F2009102191657C0000024.tif2.根据权利要求l所述的基于三维Arnold映射的图像分组加密方法,其特征在于上述方法的解密方法为加密过程的逆过程。全文摘要本发明涉及一种基于三维Arnold映射的图像分组加密方法,其特征在于首先采用扩展到三维的Amold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。主要优越性在于有足够大的密钥空间抵抗穷举攻击;任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性;统计特性不会暴露任何有用信息,密图相邻像素相关性小和抗攻击能力强。文档编号G06T9/00GK101739695SQ20091021916公开日2010年6月16日申请日期2009年11月26日优先权日2009年11月26日发明者周哲,张云鹏,张向彬,朱欤,杨海兵,潘文杰,赵新奎申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1