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

技术编号:4220600 阅读:443 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于三维Arnold映射的图像分组加密方法,其特征在于:首先采用扩展到三维的Amold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。主要优越性在于:有足够大的密钥空间抵抗穷举攻击;任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性;统计特性不会暴露任何有用信息,密图相邻像素相关性小和抗攻击能力强。

【技术实现步骤摘要】

本专利技术涉及,属于信息安全领域中的密码技术,是一种利用电子计算机技术、混沌映射实现的基于s-p网络的图像数据加密方案。
技术介绍
随着Internet在多个领域的快速发展,现代社会对国际互联网的依赖越来越深,然而,随着互联网同时出现的安全问题也成为了用户在选择使用时关注的一个重要方面。近年来,网络安全事故的频频发生,给大到国家小到个人的国际互联网用户带来了巨大的损失,因此,信息安全问题成为了计算机领域不容忽视的问题。 随着学科的发展,密码术在许多研究人员的不懈努力下,已经发展成为信息安全领域最受欢迎的数据保护手段之一。混沌密码系统具有各态遍历性和对初值、参数敏感的特点,非常适合构建加密方法,而且混沌密码系统还具有加密速度快,资源耗费少,实现过程简单明了,为数据的安全传输提供了很好的加密应用,因此混沌密码学(明文数据与乱数流叠加产生密文)成为近代加密学的一个热点。 常见的混沌密码系统主要分为两类1.基于混沌的流密码,即利用混沌映射产生密钥流,一次与一个明文符号进行加密操作;2.基于混沌的块密码,把一定大小的一组明文作为明文块,通过混沌映射进行加密操作。 一般来说,基于混沌的块密码的应用要比流密码的应用广泛的多。 混沌密码学还正处于发展阶段,近些年来,很多关于混沌系统的图像加密方案接连呈现于大家的视野,但是却不得不说一些低维混沌密码系统已经被证明存在安全问题。例如,使用一维混沌系统的加密方法,密钥空间不够,直接导致无法抵御穷举攻击,同时容易利用相空间重构方法破解出密钥,从而不能抵御已知明文攻击。二维Cat映射和Baker映射在某些参数下不能保证其安全性。Cat映射加密方法在某些控制参数下经过多次迭代可恢复明文,Baker映射加密方法在某些控制参数下迭代多次并不能改变明文。这就需要在方法构建时有效的排除此类弱密钥,以保证方法安全。可见在混沌密码方法构建的过程中,混沌映射的应用方式直接影响到方法的安全性。许多利用高维混沌的加密方法也就应时而生了。
技术实现思路
要解决的技术问题 为了避免现有技术的不足之处,本专利技术提出,以保证在混沌密码方法构建的过程中,混沌映射应用方式影响到方法的安全性。 本专利技术的思想在于首先采用扩展到三维的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, y G (0, 2),xnG ;其中的x01、x02、x21、x22均为求双精度数x2的中间变量; 步骤3 :以x2为参数,采用chebyshev每迭代100次,取混沌序列值,生成S_ xO 数组中的一个值,直至生成整个以times为大小的数组;所述的times为加密轮 数大于4 ;所述的chebyshev映射为:xn+1 = cos (kcos—1 (xn)) , k > 2, xn G ; 步骤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为大小的数组; 步骤6 :第k轮第j块sbOX_xO经过下列迭代 logxO = S_xO , logxO = l—suO承logxO承logxO , sbox_xO = fabs(cos(4承acos(logxO))) 其中xO是为计算sbOX_xO 值而建立的临时中间数组; 步骤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为大小的数组; 步骤9 :将数字图像PwxH按8承8像素点分块,每一块中第l个像素点P。 = {r, g, b}T, 以S_uO为参数用Logistic映射生成长度为6的混沌序列D,其中r为数字图像块中 红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值; 步骤10 :通过K = (D*106)mod256(i = O,l, ,5)生成K,把 K作为三维Arnold映射的参数, 根据Arnold映射获得矩阵A, 1 "12 + ai3*fe fll2*"23 + fll3*(l + a23*fe)y4= Z)12l + ai2*6l2 + Z 12*ai3*to(l + ai2*Z>12)*a23 + Z 12*ai3*(l + a23*fe) 6l3 (l + "13*6l3)*te (l + "13*fe)*(l + a23*te)5其中a12 = k , a13 = k , a23 = k , b12 = k , b13 = k , b23 = k; 由B = {KeK, K K,K K}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 、 K 、 K,而K 、 K 、 K选取第i_l个像素点对应数组K中的K 、 K、 K; 步骤12 :将S。的每个字节分成高4位和低4位生成sbox—out,用P_u0 作为初始值生成长度为(8*8-1)*3*2的序列p,把步骤6、7中的前s个元素 与p —一对应,对p进行排序,同时改变s序列中元素的位置, s 位置不变; 步骤13 :合并高4位和低4位生成p,把前三个字节与后三个字节交换位置; 步骤14 :再用xn+1 = cos(4cos—'GO), xn G 生成混沌值映射到整数m, 0 < m &l本文档来自技高网
...

【技术保护点】
一种基于三维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分别作为logistg,b}↑[T],以Su0[k]为参数用Logistic映射生成长度为6的混沌序列D[0..5],其中:r为数字图像块中红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值;步骤10:通过K[i]=(D[i]*10↑[6])mod256(i=0,1,...,5)生成K[0..5],把K[0..5]作为三维Arnold映射的参数,根据Arnold映射获得矩阵A,***其中a↓[12]=k[0],a↓[13]=k[1],a↓[23]=k[2],b↓[12]=k[3],b↓[13]=k[4],b↓[23]=k[5];由B={K[0]⊕K[1],K[2]⊕K[3],K[4]⊕K[5]}↑[T]生成列矩阵B,通过S↓[0]=(A*P↓[i])⊕B得到S盒的输出结果S↓[0],其中P↓[i]为第i个像素点的值P=(r,g,b);步骤11:根据sbox_x↓[i]=(sbox_x↓[i-1]+(P↓[i-1].r⊕P↓[i-1].g⊕P↓[i-1].b)/255)/2修改用于加密每块中第i个像素的混沌映射的初始参数;每次新生成用于加密此像素点的数组K中的K[3]、K[4]、K[5],而K[0]、K[1]、K[2]选取第i-1个像素点对应数组K中的K[3]、K[4]、K[5];步骤12:将S↓[0]的每个字节分成高4位和低4位生成sbox_out[0..384],用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤6、7中的前s[0..378]个元素与p[0..378]一一对应,对p[0..378]进行排序,同时改变s[0..378]序列中元素的位置,s[379..384]位置不变;步骤13:合并高4位和低4位生成p[192],把前三个字节与后三个字节交换位置;步骤14:再用x↓[n+1]=cos(4cos↑[-1](x...

【技术特征摘要】

【专利技术属性】
技术研发人员:张云鹏周哲杨海兵朱欤潘文杰赵新奎张向彬
申请(专利权)人:西北工业大学
类型:发明
国别省市:87[中国|西安]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利