基于嵌入式混沌映射的单向散列函数的构造方法和系统的制作方法

文档序号:7652651阅读:210来源:国知局

专利名称::基于嵌入式混沌映射的单向散列函数的构造方法和系统的制作方法
技术领域
:本发明涉及散列函数的构造方法和系统。更具体地说,本发明涉及基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改。
背景技术
:随着Intemet技术的迅猛发展,数据交换在电子商务中越来越频繁和活跃,敏感数据、电子支票、电子签名、电子邮件等的完整性和认证性就显得特别重要。消息认证就是提供一种校验数据完整性的机制,它可以确认数据来源并能判断是否被篡改等。常用到的是单向散列函数是正向计算简单,反向计算复杂,而且很难找到两个不同的输入之对应于同一个输出值的一种函数。它一般分为两类无密钥单向散列函数和有密钥单向散列函数。无密钥控制的单向散列函数,其散列值只是输入字符串的函数计算结果,任何人都可以计算,因而不具有身份认证的功能,只用于检测接收数据的完整性,如篡改检测码(MDC),用于非密码计算机应用中。常见的无密钥的单向散列函数有MD5,SHA-1等W。带密钥的散列函数是利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后。它同时也要满足各种安全性要求,其散列值不仅与输入有关,而且与密钥有关,只有持此密钥的人才能计算出相应的散列值,因而具有身份验证功能,如消息认证码(MAC)[2]。自从2004年王小云相继发现MD5,HAVAL-128、MD4,RIPEMD和SHA-1碰撞以来[3-6],单向散列函数的安全性问题成为又一个研究的热点。密码学专家已经意识到当今的散列函数的不安全性,NIST(NationalInstituteofStandardsandTechnology,美国国家标准技术研究院)计划在2010年前逐步淘汰当今所使用的SHA-1,而采用更安全,长度更长的散列函数,如SHA-224,SHA-256,SHA-384和SHA-512来代替,因此设计一个安全的散列函数成为当今密码界一个新的挑战。混沌是由确定性动力学系统产生的一种看似随机的非线性现象,混沌信号具有的非周期性、连续宽带频谱、类似噪声的特性,使它具有天然的隐蔽性。对初始条件和微小扰动的高度敏感,又使混沌信号具有长期和不可预测性。混沌信号的隐蔽性和不可预测性,使其非常适用于保密通信。近年来,利用混沌系统的确定性和对初值的敏感性来构造新的散列函数又成为一个新的研究思路,因为它确实能很好地解决传统散列函数运算量问题。文献[7-9]分别用广义混沌映射切换、时空混沌和超混沌的方法来构造单向散列函数,它们均对过原始数据的混沌迭代来完成散列函数运算,从而增加了运算复杂度,且安全性也并没有明显提高。文献[10]中使用广义的混沌猫映射,密钥空间较大,但存在大量重复的矩阵乘法运算,运行速度降低。文献[ll]中采用新颖的混沌S-box,并结合查表及函数级联操作,的确达到了充分的混淆与扩散效果,但在处理长消息文件中,频繁的查表搜索会使得最后的散列值生成时间比较长。文献[12]设计中需要生成与明文等长的混沌序列,在对计算机运算精度方面要求比较高,而且大量的浮点数很难提升运算速度,尤其是对较长的明文。文献[13]用混沌神经网络生成散列值,但在参与运算的权值也是浮点型数据,势必也增加了运算的复杂度。文献[14]中西南交通大学王小敏、张家树等构造了一种基于复合非线性数字滤波器的Hash函数生成方法,并申请相应的发明专利。文献[15]讨论了基于混沌生成散列函数可能存在的碰撞缺陷。并建议利用混沌生成散列值时可采用以下几个可参考方式1)将明文映射到相空间,并采取不同的迭^l次数。2)块得到的换代值应该作为下一块迭代过程的初始,也就是说不同块的迭代应该是相关的,而不是分离的,虽然这样做可以提高算法的并行度。3)对于块不足的处理,不能仅仅是单纯的添加某一字符,还需要添加原始明文的信息。4)对于最后生成散列值的迭代值的选择,应尽量对不同的明文选择不同迭代次数的值,这样即使最后的迭代序列完全一致,由于迭代选择不一样,也可以保证最后的散列值不一样。Anderaon.R.TheclassificationofHashfbnctions.Proc.IMAConf.Cryptography,1995:83-95ANSIX9.9.Americannationalstandard-FinancialInstitutionMessageAuthentication(Wholesale).ASCX9Secretariat-AmericanBankersAssociation,1986[3]http:〃www.md5crk.com/[4]XiaoyunWang,HongboYu,andYiqunLisaYin.EfficientCollisionSearchAttacksonSHA-0http:〃www.iacr.org./conferences/crypto2005/index[5]XiaoyunWang,YiqunLisaYin,andHongboYu.FindingCollisionsintheFullSHA-1.http:〃www.iacr.org,/conferences/crypto2005/index「6"|http:〃csrc.nist.gov/Hashstandards_comments.pdf[7]盛利元,李更强,李志炜.基于切延迟椭圓反向腔映射系统的单向Hash函数构造.物理学报,2006,(55):5700-5706[8]张瀚,王秀峰,李朝晖等.基于时空混沌系统的单向Hash函数构造.物理学报,2005,(54):4006-4011[9]彭飞,丘水生,龙敏.基于二维超混沌映射的单向Hash函数构造.物理学报,2005,(54):4562-4568[10]H.S.KwokandWallaceK.S.Tang.Achaos-basedcryptographicHashflmctionformessageauthentication.InternationalJournalofBifurcationandChaos,2005,15(12):4043-4050[11]郭现峰,张家树.基于混沌动态S-Box的Hash函数..物理学报,2006,55(9):4443-4449[12]DiXiao,XiaofengLiao,ShaojiangDeng.One-wayHashflmctionconstructionbasedonthechaoticmapwithchangeable-parameter.Chaos,SolitonsandFractals,2005,(24):65-71[13]ShigouLian,ZhongxuanLiu,ZhenRenetc.Hashflmctionbasedonchaoticneuralnetworks.正EEISCAS2006:237-240[14]王小敏,张家树,张文芳.基于复合非线性数字滤波器的Hash函数构造.物理学报,2005,(54):5566-5573[15]王继志,王英龙,王美琴.一类基于混沌映射构造Hash函数方法的碰撞缺陷.物理学报,2006,(55):5048-5054
发明内容因此,根据本发明的优选实施方式,提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改。该构造方法和系统虽然在将明文映射到相空间时没有采用不同的迭代次数,但避免碰撞现象发生的其它要点基本上都满足。而且,由于散列值长度及密钥是可变化的,这就增加了系统破解的复杂性,安全性和运算速度都有明显提高。根据本发明的一个方面,提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述构造方法包括步骤l)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化每一个都具有预定位长度的一组初始缓冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;3)将经赋值的初始緩冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的緩冲值序列组输出;4)对步骤3)所输出的新的緩冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。根据本发明的另一个方面,提供基于嵌入式混沌映射的可扩展单向散列函数的构造系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述系统包括接收装置,用于接收用户选择和密钥,以及所述消息;混沌序列产生装置,用于根据所述接收装置接收到的密钥和用户选择,产生用于构造可扩展单向散列函数的混沌序列,并以所述混沌序列初始化每一个都具有预定位长度的一组初始緩冲值序列;消息块填充装置,用于对所述接收装置接收到的所述消息进行位填充处理,以便将所述消息划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;布尔迭代装置,将经所述混沌序列产生装置赋值的所述初始緩沖值序列组与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的緩冲值序列组与以预定的顺序在所述子块中选择的另一子块进行所述布尔运算,直到对全部所述子块进行了所述布尔运算为止;以及散列值序列输出装置,用于将所述布尔迭代装置的输出进行级联,以输出关于所述消息的单向散列函数值序列。根据本发明的另一个方面,提供计算机产品,其上实施有实现基于嵌入式混沌映射的可扩展单向散列函数的构造方法的程序,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,所述构造方法包括步骤l)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化每一个都具有预定位长度的一组初始緩冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;3)将经赋值的初始緩冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的緩冲值序列组输出;4)对步骤3)所输出的新的緩冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。图l示出了利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法的示意性流程图;图2图示了产生混沌序列并初始化緩冲值序列的流程图;图3图示了在混沌参数oH).3612,初始条件x『0.8581的情况下,迭代3000次所产生的混沌序列的分布图;图4图解了消息位填充方案的示意图;图5图示了基于嵌入式混沌散列函数构造方法中的迭代过程的流程图;图6示出了迭代操作过程信号流向的示意框图;图7示出了利用基于嵌入式混沌映射的可扩展单向散列函数的构造系统的示意性框图;图8示出了混沌序列参数及密钥敏感性测试的曲线图;图9示出了原始消息1位变化后的单向散列序列的变化直方图(L=64、N=4096);图10示出了相同位置ASCII值碰撞比较的曲线图;图ll示出了相同位置Hex值碰撞比较的曲线图;以及图12示出了本发明的混沌嵌入式方案与MD5方案运行时间比较的曲线具体实施方式下面将参照示出本发明的优选实施方式的附图来更加全面地描述本发明。应该理解,本发明可以用其他不同的形式来实现,而且不应当限于这里所描述的实施方式。事实上,提供下述实施方式只是为了全面和完整地将本发明的范围传达给本领域的普通技术人员。在整个附图中,相同的附图标记表示相同的组成部分。首先,参照图l,该图示出用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法的示意性流程图。本发明通过图l所示的流程,生成抗碰撞的、带密钥的可扩展长度的单向散列序列。在图l所示的步骤S10中,选择适当的混沌映射产生混沌序列。图2示出根据本发明的优选实施方式来产生混沌序列的方法的流程图。在步骤S110中,选择一维可扩展的混沌Tent映射,该混沌Tent映射定义如下其中混沌参数a满足(KoKl,混沌序列jc,.的取值范围是区间[O,l],但x,取0或l值的概率较小。在步骤S120中,将混沌参数a、初始条件;co作为密钥。而在步骤S130中,用公式(1)迭代m次数产生混沌序列x,.。该混沌序列被证明在(0,1)区间具有相当的均勻分布,并且对参数与初始条件极端地敏感,非常便于用作混淆与扩散。图3是图示在混沌参数01=0.3612,初始条件jco-0.8581的情况下,迭代3000次所产生的混沌序列的分布图。其中,横轴表示迭代次数n,而纵轴表示第n次迭代的所得到的混沌序列x"。然后,在步骤S140中,将所产生的混沌序列x,用如下的公式(2)进行二值化,产生二进制码序列乂.如图2所示,步骤S140所产生的二进制混沌序将在本发明产生散列值的处理过程中多次使用,这将在后文中进一步叙述。接下来,再参考图l。根据本发明的实施方式,采用块处理方案。因此,在图1所示的步骤S20中,对要进行处理的原始消息进行位填充处理,以便能<formula>formulaseeoriginaldocumentpage14</formula>够将任意长度的原始消息分成等长度的块,从而利用在步骤l中所产生混沌序列进行块处理。根据本发明的优选实施方式,每个消息子块长度可以4皮假定为4X丄(丄可设定为任意整数),那么为了使得每个消息子块长度相同,必须将原始消息进行位填充。即,将原始消息填充成原始消息加上位填充位的总长度为4x丄的倍数。具体的填充方案如下(1)设原始消息长度为M丄o字节,即M^rM丄()x8位。按照公式(3)计算要扩展的长度SA:J"4xZ—mod(A/丄。x8,4x丄),mod(jWL。x8,4x丄)-01一"jo,—od(ML。x8,4x丄)=0(3)(2)为填充更具有混淆功能的消息位,继续完整地扩展4x丄位,即5X2=4xZ.(4)事实上,本发明的填充方案可适合于任意长度的消息。由于选择的整数丄值可能不一样,即使对于相同长度的消息填充的消息位长度也可能不一致。(3)在原始消息的后面用步骤SIO中生成的二进制码序列乂进行填充,填充的长度为(S/4+5X2)。图4是图示消息位填充方案的示意图。具体地说,在图4的右边的混沌二进制码序列部分中填充如下序列S=_y(7。+1,/。+ZSxl义Zs=5^+5X2(5)即在二进制码序列乂.,抽取从/o+l位开始的A所构成的子混沌序列,其中/o为选择步骤S10中生成的二进制混沌序列的初始位置。应该理解,虽然在本发明的优选实施方式中,只是按照连续的方式从混沌序列乂中选取子混沌序列,但实际上,在选取一定长度的混沌系统中,可以用算法来实现从混沌序列乂中按一定规律选择,如中间相隔几位或逆向选择等,从而得到更具有随机混淆的子混沌序列。原始消息在填充了二进制混沌序列乂后的长度,即消息衬垫的长度,为MP=(MS。+5^+5Z2)位。接下来,再回到附图l,在充填原始消息来得到消息村垫后,本发明的处理流程在步骤S30中,将经过填充的消息衬垫i^P均分为m二MiV(4x£)个子块Mji^,...,m),以便进行块处理。经过这种处理所得到的每个消息子块长度均为4x丄字节。这样所得到的每个消息子块Mi可以进一步划分长度分别为丄位的子块,令为M"、Mi2、Mi3、Mi4(i=l,…,m),因此My(j=l、2、3、4)长度为丄位。下面,在图1所示的步骤S40中,基于如图5所示的嵌入式混沌散列函数构造过程,以生成原始消息的散列值。图5是图示根据本发明的优选实施方式的基于嵌入式混沌映射的散列值生成方法的流程图。本发明所采用的方案与Merkle-Damgard块模板具有相类似的结构,但在每一轮的运算中嵌入了新的混沌序列。每个消息子块均要执行4轮操作,其中A、B、C、D、E、E,、E2、E3和E4均为iX立,t,、t2、t3、t4代表参与每一轮移位数计算的序列。A、B、C、D、E从左至右不断更新,直到所有消息操作完毕。图5中E。E2、E3、E4、t卜t2、t3、tt及初始值A、B、C、D、E均为混沌序列。下面详细描述图5中的流程。在进行第一轮操作之前,用序列乂按照公式(6)分别对初始緩冲值A、B、C、D和E进行赋值。^二少仏+l,^+丄xl)5=></s+l+Zxl,/fl+ix2)<C=y(7c+1+丄x2,/c+Zx3)Z)=j;(/fl+1+1x3,^十丄x4)£=+l+Zx4,/£+Zx5)(6)其中(("AAC,DJ)代表选择序列乂.的初始位置。同时按照公式(7)和(8)分别对E,、E2、E3、E4、t!、t2、t3和t4进行赋值。五2=+1+丄xl,/£2+丄x2)五3=y(43+1+丄x2,/£3+丄x3),五4=少(7£4+1+丄乂3,/£4+£><4)(7)/2=M7,2+l+'oxl,/,2+0x2)(8)3=y(/,3+l+f0x2,/,3+f0x3)/4=7((4+l+'0x3,/M+/0x4)其中k和々("1,2,3,4)代表选捧序列力的初始位置。然后,在对在步骤S20中均分经填充的消息衬垫得到的每个消息子块Mi的明文子块Mu、Mi2、Mi3、Mi4分别进行第一到第四轮操作。其中,第一轮操作为<D=,,C,K)£="(M,,,M,2,M,3,MM,,O(9)第二轮操作'Z)=//(5,C,Ma,,2)五2=1//CD,£2,A/,.2,Z2)£=^T(7^2,M,3,M4,M,£2,,2)(10)第三轮操作£=M(M,3,M,4,M,,,M,2,£3,,3)(11)第四轮操作£=《率,4,M,.,,M,2,M,.3,£4,/4)(12)实际上,在每轮操作中,Mu、Mi2、Mi3、Mi^支循环左移I位。其中,FF、GG、7/仏//、J7、《《均表示布尔运算,分别定义为尸尸(£,3,,0=(£3@似)>>(5>(丄3)GG(AAM,o=(,0W《々4))i>J)々3)(14)////((^,"/,0=(省A04》f(4))(c^i))《f(5)(is)//(S,C,Af,0=((~^vA/)f(5>)C(16)Jj(A£,M,0=(CDAO<<f(4))((W£)f(5))(17)^X(M"M2,M3,A/4,五,O:(O^vM2)0(M3④iAf4)ei(18)这里,符号、,、a、v、<<、>>分別代表异或、非、与、或、循环左移、循环右移。,(,)中的,是(8)式中的^2,^,",它们的长度均为,。。,<,)表示从,。长度中从右向左选取/比特,将它们转换为十进制,这个十进制值最终成为在运算中的移位量。例如,假如。为8位长数,且,=ioioiioi,则&==1、&=(01)2=1、々3)=(101)2=5、^=(1101)2=13、々5)=(01101)2=13、,(6)=(101101)2=45、/(7)=(0101101)2=45、,(8>=(10101101)2=173。在本方案中仅使用&)、"和《s)。接下来,在图1所示的步骤S50中,通过将前一步骤S40所生成的A、B、C、D和E进行级联,组成5x丄的单向散列函数值。这样的单向散列函数值与消息子块Mi有关,记成A。如图6所示的那样,经过对每一个消息子块Mi(i=l,…,m)以一定顺序重复步骤S30的处理,直到所有消息全部操作完毕(共重复m-M7V(4x丄)次),从而产生5x丄的单向散列函数值序列仏,//2,…,//m。值得注意,步骤S30的处理不一定从消息子块Mi开始,而是可以从任何消息子块Mi开始。在重复步骤S30来对其余的消息子块进行处理时,以事先预定的顺序处理其余各消息子块,而且后一次处理使用的緩冲值序列是前一次处理所输出的单向散列函数值序列。在根据本发明的一个实施方式中,按照上述参照图l、图2、图4、图5和图6描述过的流程,在不同密钥(即,不同混沌参数a、初始条件jc。)下,对4234字节的文件、空内容、l个空格、"发明专利"、"inventionpatent"和数字'T,进行处理后的散列函数值。具体地说,在使用下述公式(21)式提供的初始位置选择的情况下,对本发明在不同的散列长度,不同的参数选择,不同的消息内容情况下分别计算,结果如下表l所示表l<table>tableseeoriginaldocumentpage18</column></row><table><table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table>在表1中,采用了本发明所定义的对称单向散列函数,密钥a和xo的选择是一次一密的。如果取丄=64,即可生成320位的单向散列序列。在上述实施方式中,选择一个长度为4234字节的文件,根据消息填充位的计算方法,须补充8x64-mod(4234x8,4x64)=432位的混沌序列,整个消息衬垫长度为4234x8+432=34304位,整个迭代次数为34304/(4x64)=134次。取混沌序列的两个值=0.3612,x0=0.8581,(20)并将混沌初始位置取如下值/<formula>formulaseeoriginaldocumentpage20</formula>。"(21)并且取?0=8,则就能生成一个320位的最终散列值11134,其中下标的134代表本次运算的迭代次数。本发明用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造可以通过一个系统来实现。图7图示了实现构造基于嵌入式混沌映射的可扩展单向散列函数的系统。参考图7,该系统包括接收部分710、消息块填充部分720、消息垫分块部分730、混沌序列产生部分740、消息分块布尔迭代部分750以及散列值序列输出部分760。该接收部分710可以包括《睫盘、鼠标、盘驱动器以及通信接口,用于接收用户选择(例如,对混沌映射的选择)、产生混沌序列的密钥(例如,混沌序列的初值)以及要进行处理的原始消息。例如,该消息可以是存储在光盘上的程序或图片。根据本发明的另一个优选实施方式,该混沌序列产生部分740根据接收部分710接收到的密钥和选定的混沌映射,产生混沌序列。所述混沌映射可以是^^式(1)所定义的一维可扩展的混沌Tent映射。一^:来说,混沌序列产生部分740输出的混沌序列为二进制码序列,是通过将混沌映射输出的序列进行如公式(2)那样二值化后获得的。此外,该混沌序列产生部分740还可以按照预定算法从所产生的混沌序列抽取子混沌序列,作为后面的布尔迭代运算的初始混沌序列,以及进行位填充处理的填充序列。例如,根据本发明的优选实施方式,该混沌序列产生部分740产生前面所述的子混沌序列A、B、C、D、E、E、E2、E3、E4、t!、t2、t3和tt。该消息块填充部分720对接收部分710接收到的原始消息进行位填充处理,以便能够将任意长度的原始消息分成等长度的块。根据本发明的一种优选实施方式,每个消息子块长度可以被假定为4x丄(丄可设定为任意整数),为了使得每个消息子块长度相同,必须将原始消息长度填充成原始消息加上位填充位的总长度为4xL的倍数。公式(3)和(4)具体地给出了计算填充位长度的一个实例。根据本发明的优选实施方式,用来填充的序列可以是混沌二进制码序列,该二进制码序列可以是按照预定算法从混沌序列产生部分740所产生的混沌序列抽取的子混沌序列。根据本发明的优选实施方式,消息垫分块部分730将经过填充的消息衬垫M尸均分为m二MP/(4x丄)个子块Mi(i=l,…,m),以便进行块处理。经过这种处理所得到的每个消息子块长度均为4x丄字节。这样所得到的每个消息子块Mj可以进一步划分长度分别为Z/f立的子块,令为Mu、Mi2、Mi3、Mi4(i=l,...,m),因此Mij(j=l、2、3、4)长度为丄位。然后,根据本发明的优选实施方式,该布尔迭代部分750以混沌序列产生部分740所产生的子混沌序列为初始混沌序列,对每个消息子块均要执行4轮操作,在每一轮的运算中嵌入了已生成的混沌序列,并且对每一消息子块进行迭代。具体操作可以参看公式(6)-(18)所定义的运算。接下来,散列值序列输出部分760将布尔迭代部分750所生成的单向散列函数值A、B、C、D和E进行级联,并输出最终的单向散列函数值。为了说明本发明产生散列值的方法的安全性,进行下列测试1),敏感性测试(1)混沌密钥,敏感性测试混沌具有对初始条件及参数极端的敏感性,任何微小的变化可能会引起序列的指数级的偏离。本发明实施方式中的这两个密钥均对计算机的精度10"6相当地敏感。在本发明的优选实施方式中,在上述公开的密钥和初始条件下,对432位混沌序列中每一位的数据均进行了变化,即由0变化到1或由1变化到0。分别随机选取了7V=64、128、192、256、320、432次统计的结果,将获得的新散列值&与上述所得到的Hl34分别进行比较。根据本发明的优选实施方式,使用下面4个统计公式来衡量变化的程度a)平均变化数<formula>formulaseeoriginaldocumentpage22</formula>(21)b)平均标准偏差<formula>formulaseeoriginaldocumentpage22</formula>(22)c)平均变化百分比d)<formula>formulaseeoriginaldocumentpage22</formula>(23)平均标准偏差变化百分比<formula>formulaseeoriginaldocumentpage22</formula>(24)表2列出混沌敏感性测试结果,其中前5x64二320位混沌序列重复参与了所有操作。表2中显示了前320位平均变化位数的互=159.1666,平均变化百分比尸=49.7395%。对432位混沌序列相应的结果分别为157.6103和49.2532%。表2混沌位敏感性测试<table>tableseeoriginaldocumentpage22</column></row><table><table>tableseeoriginaldocumentpage23</column></row><table>如果将混沌参数a分别赋予a+10-',"+10-2,+10-16,并且将初始条件^改变成+10—',x。+102,…,x。+『16,这样新产生的32个散列值H'w与Hu4进行统计比较,结果如图8所示。在图中,代表[10—',10—2,…,10—'6]序歹寸,纵轴表示改变的位数,其中,"*"号指示参数",而"o"号指示初始条件。显然,变化的位数和比例非常接近160和50%,这正是最终散列值位数320的一半,因此可以说对混沌序列及密钥的^:感性非常接近理想值。(2)混沌位置选择的敏感性测试在根据本发明的优选实施方式中,还有一个非常重要的因素不可忽视,那就是混沌序列的初始位置选择。表3列出了公式(5)-(8)初始位置仅偏移l位时生成的新散列值与Hm比较结果。.表3混沌初始位置选4奪测试<table>tableseeoriginaldocumentpage23</column></row><table><table>tableseeoriginaldocumentpage24</column></row><table>平均变化位数160.8462,平均变化位数50.2644%在表3中,第一行中/A+l值无变化是因为在公式(9)中的第一步就更新了A的值。从表3中可以看出,新的散列值与第一行的差异非常大,第三列"位变化数"列出了随后每行新散列值与第一行数据位变化的结果,最后一行数据中还可以得到其变化的统计数据,从中得到它们均与理想数据非常接近。(3)消息位的测试安全的散列函数必须满足两个规则一是想寻找两个不同的输入获得相同的输出,这在计算上是不可能的,即散列函数是抗碰撞的。另一个是寻找某一输出值的输入值在计算上也是不可能的,即从输出推导输入是不可能的,即散列函数具有单向性。任何一消息位的变化均会产生50%的散列值变化,通常指该函数具有强的雪崩效应。为了测试本方案的消息敏感性,我们采用与混沌位相类似的测试方法,并在密钥与初始位置公开的情况下,将原始消息的位值仅改变l位,经过随机选4奪的A^64、128、256、512、1024、2048、4096位分别进行测试,统计测试结果如表4所示。表4原始消息l位变化测试结果<table>tableseeoriginaldocumentpage24</column></row><table>从表4可以发现,5和户%非常接近理想的160和50%,即消息l位的变化能引起强烈的雪崩效应。同时AS和A尸。/。值相对较小,说明本方案具有较强的均匀和混淆功能,最大偏差值和最小偏差值也在有限的范围内。图9显示了在丄=64、A^4096时消息l位变化的散列值变化直方图。在图9中,横轴表示所改变的位数,纵轴代表相应的变化量。从图8中可以看出,大多数变化值均较集中在改变位为160处,即320位散列值的一半。2)生日攻击散列函数具有单向性质,它是从一个任意长度的原始消息中压缩成的固定长度值,它要求具有较高的抵抗生日攻击、蛮力攻击及差分攻击等能力。生曰攻击的复杂度与最终生成的散列值长度有密切关系。本方案生成5x丄位的散列值,根据生日攻击的定义,其攻击的复杂度为25"/2,计算的复杂度为25"。如果采用每秒钟处理109消息位的计算机,若要生成320位(丄=64)的散列值,对于生日攻击,要搜索两个不同消息获得同一散列值需要大约4.63"031年;如果采用同样能力的计算机,采用蛮力攻击需要大约6.77x1079年。如果加上搜索混沌密钥空间21%的时间,那么时间的复杂度是巨大的!3)相同位置碰撞的估算本发明还采取以下两种方式估算相同位置碰撞的比例第一种方式是十六进制Hex符号(4位)比较测试,另一种是ASCII码(8位)比较测试。具体的方法是选择两个散列值,利用下列表达式估算(25)其中5,与^分别表示相同位置的第''个符号。如果A与A符号相同,则[5'—^]=1,表示有l个符号碰撞;否则^'_^=0,表示没有碰撞。设丄=64,那么产生320位的散列值中,Hex测试中系数w=80,ASCII测试中"=40。同样使用上述的原始消息及初始设置条件,分别在iV^64、128、256、512、1024、2048、4096次,对160、240和320位散列值长度进行符号碰撞测试,则整个碰撞数量Sum(c》,最大碰撞数量及碰撞%由表5列出,当A^4096,散列值长度为320位时,最大的ASCII碰撞数仅为3,而Hex仅为16,可见根据本发明的优选实施方式对同一位置出现的符号碰撞机会相当低。表5散列值结果Hex和ASCII测试结果比较<table>tableseeoriginaldocumentpage25</column></row><table><table>tableseeoriginaldocumentpage26</column></row><table>图10和图11分别列出在散列值长度不同的情况下,对于不同测试数据次数,Hex和ASCII碰撞测试的结果。图10图示了ASCII碰撞测试的结果,其横轴代表消息测试位,纵轴代表同一位置的碰撞数量的百分率,其中,带空心菱形标志""的曲线指示320位散列值长度对应的符号碰撞测试结果,带实心菱形标志""的曲线指示240位散列值长度对应的符号碰撞测试结果,而带空心正方形标志"□"的曲线指示160位散列值长度对应的符号碰撞测试结果。图11图示了Hex碰撞测试的结果,其横轴也代表消息测试位,纵轴代表同一位置的碰撞数量的百分率,其中,带标志"*"的曲线指示320位散列值长度对应的符号碰撞测试结果,带标志"□"的曲线指示240位散列值长度对应的符号碰撞测试结果,而带标志"o"的曲线指示160位散列值长度对应的符号碰撞测试结果。从图10和图11中可看出,无论生成的散列值长度多少,相同位置相同符号碰撞的比例均非常小,数值也很接近。4)与MD5进行比较表6列出了根据本发明的优选实施方式与MD5性能比较。表6本方案与MD5性能比较<table>tableseeoriginaldocumentpage26</column></row><table><table>tableseeoriginaldocumentpage27</column></row><table>表7列出在Pentium-IV,CPU1.6G,RAM256M,Matlab7.0软件测试环境下与MD5运算时间比较结果。从表中可以看出,130位的散列值与相近位数128位的MD5运行时间短2.3倍。表7根据本发明的优选实施方式与MD5运算时间比较<table>tableseeoriginaldocumentpage27</column></row><table>位运算时间与MD5的比较结果。在图12中,横轴代表bg,(位数/25),纵轴代表以秒为单位的时间,其中,带"*"的曲线指示根据本发明的优选实施方式的130位散列值长度对应的运算时间,带"□"的曲线指示根据本发明的优选实施方式的160位散列值长度对应的运算时间,带"o"的曲线指示根据本发明的优选实施方式的320位散列值长度对应的运算时间,而带""的曲线指示MD5算法的128位散列值长度对应的运算时间。从图中可以看到,随着消息长度增加,同一长度的散列值生成时间逐渐增加。但在同一消息长度中,生成不同位数的散列值,位数越大的所需时间越少,因为在根据本发明的优选实施方式中丄值越大,块的个数就越小,迭代过程也就随之减少,运算的时间明显提南。在以上说明中,根据本发明的优选实施方式说明了本发明用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统。本发明由于可选择灵活的丄值,可生成长度不固定的散列序列。另外混沌映射中参数与初始条件的敏感性,可给本发明带来较大的密钥空间,增加了强力攻击、生日攻击的时间复杂度。算法设计中只釆用布尔及移位简单运算,运行速度大幅度提高,并且每轮操作也仅执行有序的移位,为本发明在硬件中实现提供了可能,预测成本较低。较均衡的混沌序列选择为本发明提供了良好的混淆与扩散序列,可变移位量的设计又为产生较强的雪崩效应创造了基础条件。本发明的构造为最终实现抵抗碰撞的带密钥的单向散列序列提供了可行的实用价值,可广泛应用于网上银行、网上交易、网上营销等电子商务中,为它们提供可靠的身份识别、消息认证、数字签名、完整性检验等。本领域技术人员将理解,该方法可以实现为记录在计算机可读记录介质上的计算机可读代码。该计算机可读记录介质是可以存储可由计算机系统读取的数据的任何数据存储设备。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光数据存储装置和载波(诸如通过因特网的数据发送)。计算机可读记录介质还可以分布在联网的计算机系统中,以便以分布的方式存储并执行计算机可读代码。尽管上述是参照示例性实施方式来描述本发明,但本领域技术人员将理解,在不背离由所附权利要求书限定的本发明宗旨和范围的前提下,可以对本发明进行各种形式和细节上的修改。优选实施方式应该仅认为是说明性的,而不是限制性的。因此,本发明的详细描述不限定本发明的范围,本发明的范围应该由所附权利要求限定,并且本发明的范围内的所有区别技术特征应理解为包含在本发明中。权利要求1、一种基于嵌入式混沌映射的可扩展单向散列函数的构造方法,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述构造方法包括步骤1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化具有预定位长度的一组初始缓冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定数量的子块;3)将经赋值的初始缓冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组输出;4)对步骤3)所输出的新缓冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。2、根据权利要求l所述的可扩展单向散列函数的构造方法,其中,所述混沌映射为一维可扩展混沌Tent映射,该混沌Tent映射定义如下其中混沌参数a满足(KoKl,序列x,的取值范围是区间[O,1],x,取0或l值的概率小,而所述混沌参数a和初始条件X()被作为所述密钥。3、根据权利要求2所述的可扩展单向散列函数的构造方法,其中,所述混沌参数01=0.3612,而所述初始条件X(t0.8581。4、根据权利要求2所述的可扩展单向散列函数的构造方法,其中,所述混沌序列为所述序列x,的二值化序列乂.5、根据权利要求l所述的可扩展单向散列函数的构造方法,其中,所述步骤2)还包括将经过填充的消息衬垫划分为所述预定个子块;6、根据权利要求5所述的可扩展单向散列函数的构造方法,其中,每个所述子块具有相同的所述预定位长度。7、根据权利要求6所述的可扩展单向散列函数的构造方法,其中,所述子块的所述预定位长度为4x丄,丄为任意整数。8、根据权利要求7所述的可扩展单向散列函数的构造方法,其中,要进行位填充的总位长度为5Xr<formula>formulaseeoriginaldocumentpage3</formula>其中ML。代表消息长度。9、根据权利要求8所述的可扩展单向散列函数的构造方法,其中,要进行位填充的总位长度为5Xi力口^=4x£。10、根据权利要求9所述的可扩展单向散列函数的构造方法,其中,以所述混沌序列中从/o+l位到/。+^xl位的子混沌序列^W。H/。+^D在所述消息的右边进行位填充,这里^-叫+s^,/。为选择的混沌序列的初始位置。11、根据权利要求7所述的可扩展单向散列函数的构造方法,其中,每个所述子块进一步划分长度分别为丄位的小子块。12、根据权利要求ll所述的可扩展单向散列函数的构造方法,其中,所述初始緩冲值序列组包括子混沌序列A、B、C、D、E、E2、E3、E4、t1、t2、t3和tj,其分别定义如下<formula>formulaseeoriginaldocumentpage3</formula>其中X/+i,/+i)表示所述混沌序列中从z+i位到/+丄位的子混沌序列,而z,(^AS,C,A五,^^,^A)和々,(!'=1,2,3,4)均代表选择序列乂的初始位置。13.根据权利要求ll所述的可扩展单向散列函数的构造方法,其中,所述布尔运算包括异或、非、与、或、循环左移和循环右移中的一部分或全部。14、根据权利要求13所述的可扩展单向散列函数的构造方法,其中,所述布尔运算包括下列级联的第一到第四轮迭代操作第一轮<formula>formulaseeoriginaldocumentpage4</formula>第二轮<formula>formulaseeoriginaldocumentpage4</formula>第三轮<formula>formulaseeoriginaldocumentpage4</formula>第四轮C二服(C"M,.2,,4)'D"/(5,d,4)£4=,,£4,M,4,")其中Mu、Mi2、Mi3、Mi4(i=l,…,w)为所述子块Mi的所述小子块,而FF、GG、/fH、//、W和X^分别定义为<formula>formulaseeoriginaldocumentpage4</formula>AX(M!,M2,M3,M4,£,0=vM2)十(Af3"JW4)十,£)》々5))这里,、,、a、v、《和》分别代表异或、非、与、或、循环左移、循环右移,而,(,)中的,表示,^,^,",其长度均为,。,,(,)表示从,。长度中从右向左选取/比特,所选取的比特所代表的十进制数作为运算中的移位量。15、一种基于嵌入式混沌映射的可扩展单向散列函数的构造系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述系统包括接收装置,用于接收用户选择和密钥,以及所述消息;混沌序列产生装置,用于根据所述接收装置接收到的密钥和用户选择,产生用于构造可扩展单向散列函数的混沌序列,并以所述混沌序列初始化具有预定位长度的一组初始緩沖值序列;消息块填充装置,用于对所述接收装置接收到的所述消息进行位填充处理,以便将所述消息划分成预定个子块;布尔迭代装置,将经所述混沌序列产生装置赋值的所述初始緩冲值序列组与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的緩冲值序列组与以预定的顺序在所述子块中选择的另一子块进行所述布尔运算,直到对全部所述子块进行了所述布尔运算为止;以及散列值序列输出装置,用于将所述布尔迭代装置的输出进行级联,以输出关于所述消息的单向散列函数值序列。16、根据权利要求15所述的可扩展单向散列函数的构造系统,其中,所述混、;屯映射为一维可扩展混沌Tent映射,该混沌Tent映射定义如下其中混沌参数a满足(KoK1,序列x,的取值范围是区间,jc,取O或1值的概率小,而所述混沌参lta和初始条件x^皮作为所述密钥。17、根据权利要求16所述的可扩展单向散列函数的构造系统,其中,所述混沌参数cf0.3612,而所述初始条件x『0.8581。18、根据权利要求16所述的可扩展单向散列函数的构造系统,其中,所述混沌序列为所述序列jc,的二值化序列乂.19、根据权利要求15所述的可扩展单向散列函数的构造系统,还包括消息垫分块装置,将经过填充的消息衬垫划分为所述预定个子块。20、根据权利要求19所述的可扩展单向散列函数的构造系统,其中,每个所述子块具有相同的所述预定位长度。21、根据权利要求20所述的可扩展单向散列函数的构造系统,其中,所述子块的所述预定位长度为4x丄,丄为任意整数。22、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,要进行位填充的总位长度为5Zr4x丄一mod(A/丄ox8,4xi),,/mod(A/£0x8,4x丄)#0,0,z/mod(肌。x8,4x丄)二0.23、根据权利要求22所述的可扩展单向散列函数的构造系统,其中,要进行位填充的总位长度为S丄i加^=4xi。24、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,以所述混沌序列中从/o+l位到/。+^xl位的子混沌序列^處+i,/。+^D在所述消息的右边进行位填充,这里ZS=5X1+M2,/o为选择的混沌序列的初始位置。25、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,每个所述子块进一步划分长度分别为丄位的小子块。26、根据权利要求25所述的可扩展单向散列函数的构造系统,其中,所述初始緩冲值序列组包括子混沌序列A、B、C、D、E、E,、E2、E3、E4、t,、t2、t#t4,其分别定义如下<formula>formulaseeoriginaldocumentpage6</formula>其中3</+1,/+丄)表示所述混沌序列中从/+1位到/+丄位的子混沌序列,而Z,"—,C,化五,^2,^五4)和Z''("1,2,3,4)均代表选择序列乂的初始位置。27、根据权利要求26所述的可扩展单向散列函数的构造系统,其中,所述布尔运算包括异或、非、与、或、循环左移和循环右移中的一部分或全部。28、根据权利要求27所迷的可扩展单向散列函数的构造系统,其中,所述布尔运算包括下列级联的第一到第四轮迭代操作第一轮<formula>formulaseeoriginaldocumentpage7</formula>第二轮<formula>formulaseeoriginaldocumentpage7</formula>第四轮<formula>formulaseeoriginaldocumentpage7</formula>其中Mu、Mi2、Mi3、Mi4(i=l,附)为所述子块Mi的所述小子块,而FF、GG、i//f、//、XT和ia:分别定义为<formula>formulaseeoriginaldocumentpage7</formula>■//(AM,0=((DM)f(4))((M£)f(5))^S:(M,,M4,£,0=vM2)十(M3十~>M4)十,£)》/(5)这里,@、,、a、v、《和》分别代表异或、非、与、或、循环左移、循环右移,而,(。中的,表示^2,,"4,其长度均为,。,,(i)表示从,。长度中从右向左选取/比特,所选取的比特所代表的十进制位运算中的移位量。29、一种计算机产品,其上实施有实现基于嵌入式混沌映射的可扩展单向散列函数的构造方法的程序,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,所述构造方法包括步骤1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化具有预定位长度的一组初始缓冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块;3)将经赋值的初始緩冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的緩冲值序列组输出;4)对步骤3)所输出的新的緩冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。全文摘要提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统。构造方法包括步骤接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生一组初始缓冲值混沌序列;以混沌序列对消息进行位填充处理,以便将经填充的消息垫划分成具有相同的长度子块;将初始缓冲值序列组与子块之一进行布尔运算,并将结果作为新的缓冲值序列组;对新的缓冲值序列组和以预定的顺序在子块中选择的另一子块重复该布尔运算,直到对全部所述子块进行了该布尔运算为止;将最后输出进行级联,作为关于消息的单向散列函数值序列。因此,该构造方法简单易操作,有效地实现了消息的扩散与混淆,在安全性、抵抗碰撞及运算速度方面均有明显提高。文档编号H04L9/08GK101296079SQ20071010104公开日2008年10月29日申请日期2007年4月23日优先权日2007年4月23日发明者张小红,彭海朋,李丽香,杨义先,洋高申请人:索尼(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1