CN101296079A - 基于嵌入式混沌映射的单向散列函数的构造方法和系统 - Google Patents

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

Info

Publication number
CN101296079A
CN101296079A CNA2007101010424A CN200710101042A CN101296079A CN 101296079 A CN101296079 A CN 101296079A CN A2007101010424 A CNA2007101010424 A CN A2007101010424A CN 200710101042 A CN200710101042 A CN 200710101042A CN 101296079 A CN101296079 A CN 101296079A
Authority
CN
China
Prior art keywords
hash function
sequence
way hash
message
chaos
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007101010424A
Other languages
English (en)
Inventor
张小红
李丽香
彭海朋
高洋
杨义先
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony China Ltd
Original Assignee
Sony China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony China Ltd filed Critical Sony China Ltd
Priority to CNA2007101010424A priority Critical patent/CN101296079A/zh
Publication of CN101296079A publication Critical patent/CN101296079A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统。构造方法包括步骤:接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生一组初始缓冲值混沌序列;以混沌序列对消息进行位填充处理,以便将经填充的消息垫划分成具有相同的长度子块;将初始缓冲值序列组与子块之一进行布尔运算,并将结果作为新的缓冲值序列组;对新的缓冲值序列组和以预定的顺序在子块中选择的另一子块重复该布尔运算,直到对全部所述子块进行了该布尔运算为止;将最后输出进行级联,作为关于消息的单向散列函数值序列。因此,该构造方法简单易操作,有效地实现了消息的扩散与混淆,在安全性、抵抗碰撞及运算速度方面均有明显提高。

Description

基于嵌入式混沌映射的单向散列函数的构造方法和系统
技术领域
本发明涉及散列函数的构造方法和系统。更具体地说,本发明涉及基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改。
背景技术
随着Internet技术的迅猛发展,数据交换在电子商务中越来越频繁和活跃,敏感数据、电子支票、电子签名、电子邮件等的完整性和认证性就显得特别重要。消息认证就是提供一种校验数据完整性的机制,它可以确认数据来源并能判断是否被篡改等。常用到的是单向散列函数是正向计算简单,反向计算复杂,而且很难找到两个不同的输入之对应于同一个输出值的一种函数。它一般分为两类:无密钥单向散列函数和有密钥单向散列函数。无密钥控制的单向散列函数,其散列值只是输入字符串的函数计算结果,任何人都可以计算,因而不具有身份认证的功能,只用于检测接收数据的完整性,如篡改检测码(MDC),用于非密码计算机应用中。常见的无密钥的单向散列函数有MD5,SHA-1等[1]。带密钥的散列函数是利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后。它同时也要满足各种安全性要求,其散列值不仅与输入有关,而且与密钥有关,只有持此密钥的人才能计算出相应的散列值,因而具有身份验证功能,如消息认证码(MAC)[2]
自从2004年王小云相继发现MD5,HAVAL-128、MD4,RIPEMD和SHA-1碰撞以来[3-6],单向散列函数的安全性问题成为又一个研究的热点。密码学专家已经意识到当今的散列函数的不安全性,NIST(National Institute ofStandards and Technology,美国国家标准技术研究院)计划在2010年前逐步淘汰当今所使用的SHA-1,而采用更安全,长度更长的散列函数,如SHA-224,SHA-256,SHA-384和SHA-512来代替,因此设计一个安全的散列函数成为当今密码界一个新的挑战。
混沌是由确定性动力学系统产生的一种看似随机的非线性现象,混沌信号具有的非周期性、连续宽带频谱、类似噪声的特性,使它具有天然的隐蔽性。对初始条件和微小扰动的高度敏感,又使混沌信号具有长期和不可预测性。混沌信号的隐蔽性和不可预测性,使其非常适用于保密通信。
近年来,利用混沌系统的确定性和对初值的敏感性来构造新的散列函数又成为一个新的研究思路,因为它确实能很好地解决传统散列函数运算量问题。文献[7-9]分别用广义混沌映射切换、时空混沌和超混沌的方法来构造单向散列函数,它们均对过原始数据的混沌迭代来完成散列函数运算,从而增加了运算复杂度,且安全性也并没有明显提高。文献[10]中使用广义的混沌猫映射,密钥空间较大,但存在大量重复的矩阵乘法运算,运行速度降低。文献[11]中采用新颖的混沌S-box,并结合查表及函数级联操作,的确达到了充分的混淆与扩散效果,但在处理长消息文件中,频繁的查表搜索会使得最后的散列值生成时间比较长。文献[12]设计中需要生成与明文等长的混沌序列,在对计算机运算精度方面要求比较高,而且大量的浮点数很难提升运算速度,尤其是对较长的明文。文献[13]用混沌神经网络生成散列值,但在参与运算的权值也是浮点型数据,势必也增加了运算的复杂度。文献[14]中西南交通大学王小敏、张家树等构造了一种基于复合非线性数字滤波器的Hash函数生成方法,并申请相应的发明专利。文献[15]讨论了基于混沌生成散列函数可能存在的碰撞缺陷。并建议利用混沌生成散列值时可采用以下几个可参考方式:
1)将明文映射到相空间,并采取不同的迭代次数。
2)块得到的换代值应该作为下一块迭代过程的初始,也就是说不同块的迭代应该是相关的,而不是分离的,虽然这样做可以提高算法的并行度。
3)对于块不足的处理,不能仅仅是单纯的添加某一字符,还需要添加原始明文的信息。
4)对于最后生成散列值的迭代值的选择,应尽量对不同的明文选择不同迭代次数的值,这样即使最后的迭代序列完全一致,由于迭代选择不一样,也可以保证最后的散列值不一样。
[参考文献]
[1]Anderaon.R.The classification of Hash functions.Proc.IMA Conf.Cryptography,1995:83-95
[2]ANSI X9.9.American national standard-Financial Institution MessageAuthentication(Wholesale).ASC X9 Secretariat-American Bankers Association,1986
[3]http://www.md5crk.com/
[4]Xiaoyun Wang,Hongbo Yu,and Yiqun Lisa Yin.Efficient CollisionSearch Attacks on SHA-0 http://www.iacr.org./conferences/crypto2005/index
[5]Xiaoyun Wang,Yiqun Lisa Yin,and Hongbo Yu.Finding Collisions in theFull SHA-1.http://www.iacr.org./conferences/crypto2005/index
[6]http://csrc.nist.gov/Hash_standards_comments.pdf
[7]盛利元,李更强,李志炜.基于切延迟椭圆反向腔映射系统的单向Hash函数构造.物理学报,2006,(55):5700-5706
[8]张瀚,王秀峰,李朝晖等.基于时空混沌系统的单向Hash函数构造.物理学报,2005,(54):4006-4011
[9]彭飞,丘水生,龙敏.基于二维超混沌映射的单向Hash函数构造.物理学报,2005,(54):4562-4568
[10]H.S.Kwok and Wallace K.S.Tang.A chaos-based cryptographic Hashfunction for message authentication.International Journal of Bifurcation andChaos,2005,15(12):4043-4050
[11]郭现峰,张家树.基于混沌动态S-Box的Hash函数..物理学报,2006,55(9):4443-4449
[12]Di Xiao,Xiaofeng Liao,Shaojiang Deng.One-way Hash functionconstruction based on the chaotic map with changeable-parameter.Chaos,Solitons and Fractals,2005,(24):65-71
[13]Shigou Lian,Zhongxuan Liu,Zhen Ren etc.Hash function based onchaotic neural networks.IEEE ISCAS 2006:237-240
[14]王小敏,张家树,张文芳.基于复合非线性数字滤波器的Hash函数构造.物理学报,2005,(54):5566-5573
[15]王继志,王英龙,王美琴.一类基于混沌映射构造Hash函数方法的碰撞缺陷.物理学报,2006,(55):5048-5054
发明内容
因此,根据本发明的优选实施方式,提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改。该构造方法和系统虽然在将明文映射到相空间时没有采用不同的迭代次数,但避免碰撞现象发生的其它要点基本上都满足。而且,由于散列值长度及密钥是可变化的,这就增加了系统破解的复杂性,安全性和运算速度都有明显提高。
根据本发明的一个方面,提供基于嵌入式混沌映射的可扩展单向散列函数的构造方法,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述构造方法包括步骤:1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化每一个都具有预定位长度的一组初始缓冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;3)将经赋值的初始缓冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组输出;4)对步骤3)所输出的新的缓冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。
根据本发明的另一个方面,提供基于嵌入式混沌映射的可扩展单向散列函数的构造系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述系统包括:接收装置,用于接收用户选择和密钥,以及所述消息;混沌序列产生装置,用于根据所述接收装置接收到的密钥和用户选择,产生用于构造可扩展单向散列函数的混沌序列,并以所述混沌序列初始化每一个都具有预定位长度的一组初始缓冲值序列;消息块填充装置,用于对所述接收装置接收到的所述消息进行位填充处理,以便将所述消息划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;布尔迭代装置,将经所述混沌序列产生装置赋值的所述初始缓冲值序列组与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组与以预定的顺序在所述子块中选择的另一子块进行所述布尔运算,直到对全部所述子块进行了所述布尔运算为止;以及散列值序列输出装置,用于将所述布尔迭代装置的输出进行级联,以输出关于所述消息的单向散列函数值序列。
根据本发明的另一个方面,提供计算机产品,其上实施有实现基于嵌入式混沌映射的可扩展单向散列函数的构造方法的程序,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,所述构造方法包括步骤:1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化每一个都具有预定位长度的一组初始缓冲值序列;2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块,其中每个所述子块具有相同的所述预定位长度;3)将经赋值的初始缓冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组输出;4)对步骤3)所输出的新的缓冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。
附图说明
图1示出了利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法的示意性流程图;
图2图示了产生混沌序列并初始化缓冲值序列的流程图;
图3图示了在混沌参数α=0.3612,初始条件x0=0.8581的情况下,迭代3000次所产生的混沌序列的分布图;
图4图解了消息位填充方案的示意图;
图5图示了基于嵌入式混沌散列函数构造方法中的迭代过程的流程图;
图6示出了迭代操作过程信号流向的示意框图;
图7示出了利用基于嵌入式混沌映射的可扩展单向散列函数的构造系统的示意性框图;
图8示出了混沌序列参数及密钥敏感性测试的曲线图;
图9示出了原始消息1位变化后的单向散列序列的变化直方图(L=64、N=4096);
图10示出了相同位置ASCII值碰撞比较的曲线图;
图11示出了相同位置Hex值碰撞比较的曲线图;以及
图12示出了本发明的混沌嵌入式方案与MD5方案运行时间比较的曲线图。
具体实施方式
下面将参照示出本发明的优选实施方式的附图来更加全面地描述本发明。应该理解,本发明可以用其他不同的形式来实现,而且不应当限于这里所描述的实施方式。事实上,提供下述实施方式只是为了全面和完整地将本发明的范围传达给本领域的普通技术人员。在整个附图中,相同的附图标记表示相同的组成部分。
首先,参照图1,该图示出用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法的示意性流程图。本发明通过图1所示的流程,生成抗碰撞的、带密钥的可扩展长度的单向散列序列。在图1所示的步骤S10中,选择适当的混沌映射产生混沌序列。图2示出根据本发明的优选实施方式来产生混沌序列的方法的流程图。在步骤S110中,选择一维可扩展的混沌Tent映射,该混沌Tent映射定义如下:
F &alpha; : x i = x i - 1 &alpha; , 0 &le; x i - 1 &le; &alpha; 1 - x i - 1 1 - &alpha; , &alpha; < x i - 1 &le; 1 - - - ( 1 )
其中混沌参数α满足0<α<1,混沌序列xi的取值范围是区间[0,1],但xi取0或1值的概率较小。
在步骤S120中,将混沌参数α、初始条件x0作为密钥。而在步骤S130中,用公式(1)迭代m次数产生混沌序列xi。该混沌序列被证明在(0,1)区间具有相当的均匀分布,并且对参数与初始条件极端地敏感,非常便于用作混淆与扩散。图3是图示在混沌参数α=0.3612,初始条件x0=0.8581的情况下,迭代3000次所产生的混沌序列的分布图。其中,横轴表示迭代次数n,而纵轴表示第n次迭代的所得到的混沌序列xn
然后,在步骤S140中,将所产生的混沌序列xi用如下的公式(2)进行二值化,产生二进制码序列yi
y i = 0,0 &le; x i &le; 0.5 , 1,0.5 < x i &le; 1 . - - - ( 2 )
如图2所示,步骤S140所产生的二进制混沌序将在本发明产生散列值的处理过程中多次使用,这将在后文中进一步叙述。
接下来,再参考图1。根据本发明的实施方式,采用块处理方案。因此,在图1所示的步骤S20中,对要进行处理的原始消息进行位填充处理,以便能够将任意长度的原始消息分成等长度的块,从而利用在步骤1中所产生混沌序列进行块处理。根据本发明的优选实施方式,每个消息子块长度可以被假定为4×L(L可设定为任意整数),那么为了使得每个消息子块长度相同,必须将原始消息进行位填充。即,将原始消息填充成原始消息加上位填充位的总长度为4×L的倍数。具体的填充方案如下:
(1)设原始消息长度为ML0字节,即MB0=ML0×8位。按照公式(3)计算要扩展的长度SL1
SL 1 = 4 &times; L - mod ( ML 0 &times; 8,4 &times; L ) , if mod ( ML 0 &times; 8,4 &times; L ) &NotEqual; 0 0 , if mod ( ML 0 &times; 8,4 &times; L ) = 0 - - - ( 3 )
(2)为填充更具有混淆功能的消息位,继续完整地扩展4×L位,即:
SL2=4×L.    (4)
事实上,本发明的填充方案可适合于任意长度的消息。由于选择的整数L值可能不一样,即使对于相同长度的消息填充的消息位长度也可能不一致。
(3)在原始消息的后面用步骤S10中生成的二进制码序列yi进行填充,填充的长度为(SL1+SL2)。图4是图示消息位填充方案的示意图。具体地说,在图4的右边的混沌二进制码序列部分中填充如下序列:
S=y(l0+1,l0+LS×1),Ls=SL1+SL2    (5)
即在二进制码序列yi,抽取从l0+1位开始的Ls所构成的子混沌序列,其中l0为选择步骤S10中生成的二进制混沌序列的初始位置。应该理解,虽然在本发明的优选实施方式中,只是按照连续的方式从混沌序列yi中选取子混沌序列,但实际上,在选取一定长度的混沌系统中,可以用算法来实现从混沌序列yi中按一定规律选择,如中间相隔几位或逆向选择等,从而得到更具有随机混淆的子混沌序列。
原始消息在填充了二进制混沌序列yi后的长度,即消息衬垫的长度,为MP=(MB0+SL1+SL2)位。
接下来,再回到附图1,在充填原始消息来得到消息衬垫后,本发明的处理流程在步骤S30中,将经过填充的消息衬垫MP均分为m=MP/(4×L)个子块Mi(i=1,...,m),以便进行块处理。经过这种处理所得到的每个消息子块长度均为4×L字节。这样所得到的每个消息子块Mi可以进一步划分长度分别为L位的子块,令为Mi1、Mi2、Mi3、Mi4(i=1,...,m),因此Mij(j=1、2、3、4)长度为L位。
下面,在图1所示的步骤S40中,基于如图5所示的嵌入式混沌散列函数构造过程,以生成原始消息的散列值。图5是图示根据本发明的优选实施方式的基于嵌入式混沌映射的散列值生成方法的流程图。本发明所采用的方案与Merkle-Damgard块模板具有相类似的结构,但在每一轮的运算中嵌入了新的混沌序列。每个消息子块均要执行4轮操作,其中A、B、C、D、E、E1、E2、E3和E4均为L位,t1、t2、t3、t4代表参与每一轮移位数计算的序列。A、B、C、D、E从左至右不断更新,直到所有消息操作完毕。图5中E1、E2、E3、E4、t1、t2、t3、t4及初始值A、B、C、D、E均为混沌序列。
下面详细描述图5中的流程。在进行第一轮操作之前,用序列yi按照公式(6)分别对初始缓冲值A、B、C、D和E进行赋值。
A = y ( l A + 1 , l A + L &times; 1 ) B = y ( l B + 1 + L &times; 1 , l B + L &times; 2 ) C = y ( l C + 1 + L &times; 2 , l C + L &times; 3 ) D = y ( l D + 1 + L &times; 3 , l D + L &times; 4 ) E = y ( l E + 1 + L &times; 4 , l E + L &times; 5 ) - - - ( 6 )
其中li(i=A,B,C,D,E)代表选择序列yi的初始位置。同时按照公式(7)和(8)分别对E1、E2、E3、E4、t1、t2、t3和t4进行赋值。
E 1 = y ( l E 1 + 1 , l E 1 + L &times; 1 ) E 2 = y ( l E 2 + 1 + L &times; 1 , l E 2 + L &times; 2 ) E 3 = y ( l E 3 + 1 + L &times; 2 , l E 3 + L &times; 3 ) E 4 = y ( l E 4 + 1 + L &times; 3 , l E 4 + L &times; 4 ) - - - ( 7 )
t 1 = y ( l t 1 + 1 , l t 1 + t 0 &times; 1 ) t 2 = y ( l t 2 + 1 + t 0 &times; 1 , l t 2 + t 0 &times; 2 ) t 3 = y ( l t 3 + 1 + t 0 &times; 2 , l t 3 + t 0 &times; 3 ) t 4 = y ( l t 4 + 1 + t 0 &times; 3 , l t 4 + t 0 &times; 4 ) - - - ( 8 )
其中
Figure A20071010104200165
(i=1,2,3,4)代表选择序列yi的初始位置。
然后,在对在步骤S20中均分经填充的消息衬垫得到的每个消息子块Mi的明文子块Mi1、Mi2、Mi3、Mi4分别进行第一到第四轮操作。其中,第一轮操作为:
A = FF ( E , B , M i 1 , t 1 ) B = GG ( D , A , M i 2 , t 1 ) C = HH ( C , A , M i 3 , t 1 ) D = II ( B , C , M i 4 , t 1 ) E 1 = JJ ( D , E 1 , M i 1 , t 1 ) E = KK ( M i 1 , M i 2 , M i 3 , M i 4 , E 1 , t 1 ) - - - ( 9 )
第二轮操作:
A = FF ( E , B , M i 2 , t 2 ) B = GG ( D , A , M i 3 , t 2 ) C = HH ( C , A , M i 4 , t 2 ) D = II ( B , C , M i 1 , t 2 ) E 2 = JJ ( D , E 2 , M i 2 , t 2 ) E = KK ( M i 2 , M i 3 , M i 4 , M i 1 , E 2 , t 2 ) - - - ( 10 )
第三轮操作:
A = FF ( E , B , M i 3 , t 3 ) B = GG ( D , A , M i 4 , t 3 ) C = HH ( C , A , M i 1 , t 3 ) D = II ( B , C , M i 2 , t 3 ) E 3 = JJ ( D , E 3 , M i 3 , t 3 ) E = KK ( M i 3 , M i 4 , M i 1 , M i 2 , E 3 , t 3 ) - - - ( 11 )
第四轮操作:
A = FF ( E , B , M i 4 , t 4 ) B = GG ( D , A , M i 1 , t 4 ) C = HH ( C , A , M i 2 , t 4 ) D = II ( B , C , M i 3 , t 4 ) E 4 = JJ ( D , E 4 , M i 4 , t 4 ) E = KK ( M i 4 , M i 1 , M i 2 , M i 3 , E 4 , t 4 ) - - - ( 12 )
实际上,在每轮操作中,Mi1、Mi2、Mi3、Mi4被循环左移L位。其中,FF、GG、HH、II、JJ、KK均表示布尔运算,分别定义为:
FF ( E , B , M , t ) = ( E &CirclePlus; B &CirclePlus; M ) > > t ( 5 ) - - - ( 13 )
JJ ( D , E , M , t ) = ( ( D &CirclePlus; M ) < < t ( 4 ) ) &CirclePlus; ( ( M &CirclePlus; E ) > > t ( 5 ) ) - - - ( 17 )
这里,符号
Figure A200710101042001710
Figure A200710101042001711
∧、∨、<<、>>分别代表异或、非、与、或、循环左移、循环右移。t(i)中的t是(8)式中的t1,t2,t3,t4,它们的长度均为t0。t(i)表示从t0长度中从右向左选取i比特,将它们转换为十进制,这个十进制值最终成为在运算中的移位量。例如,假如t0为8位长数,且t=10101101,则t(1)=(1)2=1、t(2)=(01)2=1、t(3)=(101)2=5、t(4)=(1101)2=13、t(5)=(01101)2=13、t(6)=(101101)2=45、t(7)=(0101101)2=45、t(8)=(10101101)2=173。在本方案中仅使用t(3)、t(4)和t(5)
接下来,在图1所示的步骤S50中,通过将前一步骤S40所生成的A、B、C、D和E进行级联,组成5×L的单向散列函数值。这样的单向散列函数值与消息子块Mi有关,记成H1
如图6所示的那样,经过对每一个消息子块Mi(i=1,...,m)以一定顺序重复步骤S30的处理,直到所有消息全部操作完毕(共重复m=MP/(4×L)次),从而产生5×L的单向散列函数值序列H1,H2,...,Hm。值得注意,步骤S30的处理不一定从消息子块M1开始,而是可以从任何消息子块Mi开始。在重复步骤S30来对其余的消息子块进行处理时,以事先预定的顺序处理其余各消息子块,而且后一次处理使用的缓冲值序列是前一次处理所输出的单向散列函数值序列。
在根据本发明的一个实施方式中,按照上述参照图1、图2、图4、图5和图6描述过的流程,在不同密钥(即,不同混沌参数α、初始条件x0)下,对4234字节的文件、空内容、1个空格、“发明专利”、“invention patent”和数字“1”进行处理后的散列函数值。
具体地说,在使用下述公式(21)式提供的初始位置选择的情况下,对本发明在不同的散列长度,不同的参数选择,不同的消息内容情况下分别计算,结果如下表1所示:
表1
Figure A20071010104200181
Figure A20071010104200191
Figure A20071010104200201
在表1中,采用了本发明所定义的对称单向散列函数,密钥α和x0的选择是一次一密的。如果取L=64,即可生成320位的单向散列序列。在上述实施方式中,选择一个长度为4234字节的文件,根据消息填充位的计算方法,须补充8×64-mod(4234×8,4×64)=432位的混沌序列,整个消息衬垫长度为4234×8+432=34304位,整个迭代次数为:34304/(4×64)=134次。
取混沌序列的两个值:
α=0.3612,x0=0.8581,(20)
并将混沌初始位置取如下值:
l A = l B = l C = l D = l E = 0 l E 1 = l E 2 = l E 3 = l E 4 = 0 l t 1 = l t 2 = l t 3 = l t 4 = 0 l 0 = 0 - - - ( 21 )
并且取t0=8,则就能生成一个320位的最终散列值H134,其中下标的134代表本次运算的迭代次数。
本发明用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造可以通过一个系统来实现。图7图示了实现构造基于嵌入式混沌映射的可扩展单向散列函数的系统。参考图7,该系统包括接收部分710、消息块填充部分720、消息垫分块部分730、混沌序列产生部分740、消息分块布尔迭代部分750以及散列值序列输出部分760。
该接收部分710可以包括键盘、鼠标、盘驱动器以及通信接口,用于接收用户选择(例如,对混沌映射的选择)、产生混沌序列的密钥(例如,混沌序列的初值)以及要进行处理的原始消息。例如,该消息可以是存储在光盘上的程序或图片。
根据本发明的另一个优选实施方式,该混沌序列产生部分740根据接收部分710接收到的密钥和选定的混沌映射,产生混沌序列。所述混沌映射可以是公式(1)所定义的一维可扩展的混沌Tent映射。一般来说,混沌序列产生部分740输出的混沌序列为二进制码序列,是通过将混沌映射输出的序列进行如公式(2)那样二值化后获得的。此外,该混沌序列产生部分740还可以按照预定算法从所产生的混沌序列抽取子混沌序列,作为后面的布尔迭代运算的初始混沌序列,以及进行位填充处理的填充序列。例如,根据本发明的优选实施方式,该混沌序列产生部分740产生前面所述的子混沌序列A、B、C、D、E、E1、E2、E3、E4、t1、t2、t3和t4
该消息块填充部分720对接收部分710接收到的原始消息进行位填充处理,以便能够将任意长度的原始消息分成等长度的块。根据本发明的一种优选实施方式,每个消息子块长度可以被假定为4×L(L可设定为任意整数),为了使得每个消息子块长度相同,必须将原始消息长度填充成原始消息加上位填充位的总长度为4×L的倍数。公式(3)和(4)具体地给出了计算填充位长度的一个实例。
根据本发明的优选实施方式,用来填充的序列可以是混沌二进制码序列,该二进制码序列可以是按照预定算法从混沌序列产生部分740所产生的混沌序列抽取的子混沌序列。
根据本发明的优选实施方式,消息垫分块部分730将经过填充的消息衬垫MP均分为m=MP/(4×L)个子块Mi(i=1,...,m),以便进行块处理。经过这种处理所得到的每个消息子块长度均为4×L字节。这样所得到的每个消息子块Mi可以进一步划分长度分别为L位的子块,令为Mi1、Mi2、Mi3、Mi4(i=1,...,m),因此Mij(j=1、2、3、4)长度为L位。
然后,根据本发明的优选实施方式,该布尔迭代部分750以混沌序列产生部分740所产生的子混沌序列为初始混沌序列,对每个消息子块均要执行4轮操作,在每一轮的运算中嵌入了已生成的混沌序列,并且对每一消息子块进行迭代。具体操作可以参看公式(6)-(18)所定义的运算。
接下来,散列值序列输出部分760将布尔迭代部分750所生成的单向散列函数值A、B、C、D和E进行级联,并输出最终的单向散列函数值。
为了说明本发明产生散列值的方法的安全性,进行下列测试:
1)敏感性测试:
(1)混沌密钥敏感性测试:
混沌具有对初始条件及参数极端的敏感性,任何微小的变化可能会引起序列的指数级的偏离。本发明实施方式中的这两个密钥均对计算机的精度10-16相当地敏感。
在本发明的优选实施方式中,在上述公开的密钥和初始条件下,对432位混沌序列中每一位的数据均进行了变化,即由0变化到1或由1变化到0。分别随机选取了N=64、128、192、256、320、432次统计的结果,将获得的新散列值Bi与上述所得到的H134分别进行比较。
根据本发明的优选实施方式,使用下面4个统计公式来衡量变化的程度:
a)平均变化数:
B &OverBar; = 1 N &Sigma; i = 1 N B i - - - ( 21 )
b)平均标准偏差:
&Delta;B = 1 N - 1 &Sigma; i = 1 N ( B i - B &OverBar; ) 2 - - - ( 22 )
c)平均变化百分比:
P=B/(5×L)×100%    (23)
d)平均标准偏差变化百分比:
&Delta;P = 1 N - 1 &Sigma; i = 1 N ( B i / ( 5 &times; L ) - P ) 2 &times; 100 % - - - ( 24 )
表2列出混沌敏感性测试结果,其中前5×64=320位混沌序列重复参与了所有操作。表2中显示了前320位平均变化位数的B=159.1666,平均变化百分比P=49.7395%。对432位混沌序列相应的结果分别为157.6103和49.2532%。
表2混沌位敏感性测试
N= 64  128  192  256  320  432 平均值  前320位
B 158.68  158.7188  159.4688  159.4297  159.5281  149.8287  157.6103  159.1666
  75
  △B   7.6488   8.5637   9.6883   9.4584   9.7758   21.7161   11.1419   9.027
P%   49.5898%   49.5996%   49.8340%   49.8218%   49.8525%   46.8215% 49.2532%   49.7395%
△P%   2.3902% 3.7997% 3.0276% 2.9558% 3.0549% 6.7863% 3.6691%   3.0456%
  最大值   175   184   188   188   189   189   185.5   184.8
  最小值   141   137   136   133   133   51   121.83   136
如果将混沌参数α分别赋予α+10-1,α+10-2,...,α+10-16,并且将初始条件x0改变成x0+10-1,x0+102,...,x0+10-16,这样新产生的32个散列值H’134与H134进行统计比较,结果如图8所示。在图中,p代表[10-1,10-2,...,10-16]序列,纵轴表示改变的位数,其中,“*”号指示参数α,而“o”号指示初始条件x0
显然,变化的位数和比例非常接近160和50%,这正是最终散列值位数320的一半,因此可以说对混沌序列及密钥的敏感性非常接近理想值。
(2)混沌位置选择的敏感性测试:
在根据本发明的优选实施方式中,还有一个非常重要的因素不可忽视,那就是混沌序列的初始位置选择。表3列出了公式(5)-(8)初始位置仅偏移1位时生成的新散列值与H134比较结果。
表3混沌初始位置选择测试
Figure A20071010104200231
Figure A20071010104200241
在表3中,第一行中lA+1值无变化是因为在公式(9)中的第一步就更新了A的值。从表3中可以看出,新的散列值与第一行的差异非常大,第三列“位变化数”列出了随后每行新散列值与第一行数据位变化的结果,最后一行数据中还可以得到其变化的统计数据,从中得到它们均与理想数据非常接近。
(3)消息位的测试:
安全的散列函数必须满足两个规则:一是想寻找两个不同的输入获得相同的输出,这在计算上是不可能的,即散列函数是抗碰撞的。另一个是寻找某一输出值的输入值在计算上也是不可能的,即从输出推导输入是不可能的,即散列函数具有单向性。任何一消息位的变化均会产生50%的散列值变化,通常指该函数具有强的雪崩效应。
为了测试本方案的消息敏感性,我们采用与混沌位相类似的测试方法,并在密钥与初始位置公开的情况下,将原始消息的位值仅改变1位,经过随机选择的N=64、128、256、512、1024、2048、4096位分别进行测试,统计测试结果如表4所示。
表4原始消息1位变化测试结果
  N=   64   128   256   512   1024   2048   4096   总平均
  B   160.1875   160.0781   160.1367   159.5840   160.2217   159.9722   159.8398   160.0029
  △B   0.9724   1.5897   2.3008   3.4213   4.9610   7.1964   10.0354   4.3539
P%   50.0586%   50.0244%   50.0427%   49.8700%   50.0693%   49.9913%   49.9500% 50.0009%
  △P%   0.3039%   0.4968%   0.7190%   1.0692%   1.5503%   2.2489%   3.1361%   1.3606%
  最大值   177   181   184   188   190   194   194   186.86
  最小值   140   140   132   132   131   121   121   131
从表4可以发现,B和P%非常接近理想的160和50%,即消息1位的变化能引起强烈的雪崩效应。同时△B和△P%值相对较小,说明本方案具有较强的均匀和混淆功能,最大偏差值和最小偏差值也在有限的范围内。
图9显示了在L=64、N=4096时消息1位变化的散列值变化直方图。在图9中,横轴表示所改变的位数,纵轴代表相应的变化量。从图8中可以看出,大多数变化值均较集中在改变位为160处,即320位散列值的一半。
2)生日攻击
散列函数具有单向性质,它是从一个任意长度的原始消息中压缩成的固定长度值,它要求具有较高的抵抗生日攻击、蛮力攻击及差分攻击等能力。
生日攻击的复杂度与最终生成的散列值长度有密切关系。本方案生成5×L位的散列值,根据生日攻击的定义,其攻击的复杂度为25×L/2,计算的复杂度为25×L。如果采用每秒钟处理109消息位的计算机,若要生成320位(L=64)的散列值,对于生日攻击,要搜索两个不同消息获得同一散列值需要大约4.63×1031年;如果采用同样能力的计算机,采用蛮力攻击需要大约6.77×1079年。如果加上搜索混沌密钥空间2106的时间,那么时间的复杂度是巨大的!
3)相同位置碰撞的估算
本发明还采取以下两种方式估算相同位置碰撞的比例:第一种方式是十六进制Hex符号(4位)比较测试,另一种是ASCII码(8位)比较测试。具体的方法是选择两个散列值,利用下列表达式估算:
c V = &Sigma; i = 1 n [ s i - s i &prime; ] , - - - ( 25 )
其中si与s′i分别表示相同位置的第i个符号。如果si与s′i符号相同,则[si-s′i]=1,表示有1个符号碰撞;否则[si-s′i]=0,表示没有碰撞。
设L=64,那么产生320位的散列值中,Hex测试中系数n=80,ASCII测试中n=40。同样使用上述的原始消息及初始设置条件,分别在N=64、128、256、512、1024、2048、4096次,对160、240和320位散列值长度进行符号碰撞测试,则整个碰撞数量Sum(cV),最大碰撞数量及碰撞%由表5列出,当N=4096,散列值长度为320位时,最大的ASCII碰撞数仅为3,而Hex仅为16,可见根据本发明的优选实施方式对同一位置出现的符号碰撞机会相当低。
表5散列值结果Hex和ASCII测试结果比较
Figure A20071010104200261
图10和图11分别列出在散列值长度不同的情况下,对于不同测试数据次数,Hex和ASCII碰撞测试的结果。图10图示了ASCII碰撞测试的结果,其横轴代表消息测试位,纵轴代表同一位置的碰撞数量的百分率,其中,带空心菱形标志“◇”的曲线指示320位散列值长度对应的符号碰撞测试结果,带实心菱形标志“◆”的曲线指示240位散列值长度对应的符号碰撞测试结果,而带空心正方形标志“□”的曲线指示160位散列值长度对应的符号碰撞测试结果。图11图示了Hex碰撞测试的结果,其横轴也代表消息测试位,纵轴代表同一位置的碰撞数量的百分率,其中,带标志“*”的曲线指示320位散列值长度对应的符号碰撞测试结果,带标志“□”的曲线指示240位散列值长度对应的符号碰撞测试结果,而带标志“o”的曲线指示160位散列值长度对应的符号碰撞测试结果。从图10和图11中可看出,无论生成的散列值长度多少,相同位置相同符号碰撞的比例均非常小,数值也很接近。
4)与MD5进行比较
表6列出了根据本发明的优选实施方式与MD5性能比较。
表6本方案与MD5性能比较
比较内容 MD5 嵌入式混沌方案
  散列值长度 128位   5×L位
  迭代次数 512的倍数   m=MP/(4×L)
  最大扩充位 512位   8×L-1位
  填充内容 1+0...0+消息长度(最后64位)   混沌序列
  执行的操作 布尔运算和加法运算   布尔运算
  子块大小 4×128   4×L
  操作轮数 4轮   4轮
  每轮操作步数 16步   6步
  函数总量 4个   6个
  是否有溢出   无
  密钥空间 0   2106
  移位数 固定   可变
表7列出在Pentium-IV,CPU 1.6G,RAM256M,Matlab 7.0软件测试环境下与MD5运算时间比较结果。从表中可以看出,130位的散列值与相近位数128位的MD5运行时间短2.3倍。
表7根据本发明的优选实施方式与MD5运算时间比较
Figure A20071010104200271
图12分别显示出根据本发明的优选实施方式设计出的130位、160位和320位运算时间与MD5的比较结果。在图12中,横轴代表log2(位数/25),纵轴代表以秒为单位的时间,其中,带“*”的曲线指示根据本发明的优选实施方式的130位散列值长度对应的运算时间,带“□”的曲线指示根据本发明的优选实施方式的160位散列值长度对应的运算时间,带“o”的曲线指示根据本发明的优选实施方式的320位散列值长度对应的运算时间,而带“◇”的曲线指示MD5算法的128位散列值长度对应的运算时间。从图中可以看到,随着消息长度增加,同一长度的散列值生成时间逐渐增加。但在同一消息长度中,生成不同位数的散列值,位数越大的所需时间越少,因为在根据本发明的优选实施方式中L值越大,块的个数就越小,迭代过程也就随之减少,运算的时间明显提高。
在以上说明中,根据本发明的优选实施方式说明了本发明用于防止信息篡改的、利用基于嵌入式混沌映射的可扩展单向散列函数的构造方法和系统。本发明由于可选择灵活的L值,可生成长度不固定的散列序列。另外混沌映射中参数与初始条件的敏感性,可给本发明带来较大的密钥空间,增加了强力攻击、生日攻击的时间复杂度。算法设计中只采用布尔及移位简单运算,运行速度大幅度提高,并且每轮操作也仅执行有序的移位,为本发明在硬件中实现提供了可能,预测成本较低。较均衡的混沌序列选择为本发明提供了良好的混淆与扩散序列,可变移位量的设计又为产生较强的雪崩效应创造了基础条件。本发明的构造为最终实现抵抗碰撞的带密钥的单向散列序列提供了可行的实用价值,可广泛应用于网上银行、网上交易、网上营销等电子商务中,为它们提供可靠的身份识别、消息认证、数字签名、完整性检验等。
本领域技术人员将理解,该方法可以实现为记录在计算机可读记录介质上的计算机可读代码。该计算机可读记录介质是可以存储可由计算机系统读取的数据的任何数据存储设备。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光数据存储装置和载波(诸如通过因特网的数据发送)。计算机可读记录介质还可以分布在联网的计算机系统中,以便以分布的方式存储并执行计算机可读代码。
尽管上述是参照示例性实施方式来描述本发明,但本领域技术人员将理解,在不背离由所附权利要求书限定的本发明宗旨和范围的前提下,可以对本发明进行各种形式和细节上的修改。优选实施方式应该仅认为是说明性的,而不是限制性的。因此,本发明的详细描述不限定本发明的范围,本发明的范围应该由所附权利要求限定,并且本发明的范围内的所有区别技术特征应理解为包含在本发明中。

Claims (29)

1、一种基于嵌入式混沌映射的可扩展单向散列函数的构造方法,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述构造方法包括步骤:
1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化具有预定位长度的一组初始缓冲值序列;
2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定数量的子块;3)将经赋值的初始缓冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组输出;
4)对步骤3)所输出的新缓冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部子块进行了步骤3)为止;
5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。
2、根据权利要求1所述的可扩展单向散列函数的构造方法,其中,所述混沌映射为一维可扩展混沌Tent映射,该混沌Tent映射定义如下:
F &alpha; : x i = x i - 1 &alpha; , 0 &le; x i - 1 &le; &alpha; 1 - x i - 1 1 - &alpha; , &alpha; < x i - 1 &le; 1
其中混沌参数α满足0<α<1,序列xi的取值范围是区间[0,1],xi取0或1值的概率小,而所述混沌参数α和初始条件x0被作为所述密钥。
3、根据权利要求2所述的可扩展单向散列函数的构造方法,其中,所述混沌参数α=0.3612,而所述初始条件x0=0.8581。
4、根据权利要求2所述的可扩展单向散列函数的构造方法,其中,所述混沌序列为所述序列xi的二值化序列yi
y i = 0 , 0 &le; x i &le; 0.5 , 1 , 0.5 < x i &le; 1 .
5、根据权利要求1所述的可扩展单向散列函数的构造方法,其中,所述步骤2)还包括将经过填充的消息衬垫划分为所述预定个子块;
6、根据权利要求5所述的可扩展单向散列函数的构造方法,其中,每个所述子块具有相同的所述预定位长度。
7、根据权利要求6所述的可扩展单向散列函数的构造方法,其中,所述子块的所述预定位长度为4×L,L为任意整数。
8、根据权利要求7所述的可扩展单向散列函数的构造方法,其中,要进行位填充的总位长度为SL1
SL 1 = 4 &times; L - mod ( ML 0 &times; 8,4 &times; L ) , if mod ( ML 0 &times; 8,4 &times; L ) &NotEqual; 0 , 0 , if mod ( ML 0 &times; 8,4 &times; L ) = 0 .
其中ML0代表消息长度。
9、根据权利要求8所述的可扩展单向散列函数的构造方法,其中,要进行位填充的总位长度为SL1加SL2=4×L。
10、根据权利要求9所述的可扩展单向散列函数的构造方法,其中,以所述混沌序列中从l0+1位到l0+LS×1位的子混沌序列S=y(l0+1,l0+LS×1)在所述消息的右边进行位填充,这里Ls=SL1+SL2,l0为选择的混沌序列的初始位置。
11、根据权利要求7所述的可扩展单向散列函数的构造方法,其中,每个所述子块进一步划分长度分别为L位的小子块。
12、根据权利要求11所述的可扩展单向散列函数的构造方法,其中,所述初始缓冲值序列组包括子混沌序列A、B、C、D、E、E1、E2、E3、E4、t1、t2、t3和t4,其分别定义如下
A = y ( l A + 1 , l A + L &times; 1 ) B = y ( l B + 1 + L &times; 1 , l B + L &times; 2 ) C = y ( l C + 1 + L &times; 2 , l C + L &times; 3 ) D = y ( l D + 1 + L &times; 3 , l D + L &times; 4 ) E = y ( l E + 1 + L &times; 4 , l E + L &times; 5 ) E 1 = y ( l E 1 + 1 , l E 1 + L &times; 1 ) E 2 = y ( l E 2 + 1 + L &times; 1 , l E 2 + L &times; 2 ) E 3 = y ( l E 3 + 1 + L &times; 2 , l E 3 + L &times; 3 ) E 4 = y ( l E 4 + 1 + L &times; 3 , l E 4 + L &times; 4 ) t 1 = y ( l t 1 + 1 , l t 1 + t 0 &times; 1 ) t 2 = y ( l t 2 + 1 + t 0 &times; 1 , l t 2 + t 0 &times; 2 ) t 3 = y ( l t 3 + 1 + t 0 &times; 2 , l t 3 + t 0 &times; 3 ) t 4 = y ( l t 4 + 1 + t 0 &times; 3 , l t 4 + t 0 &times; 4 )
其中y(l+1,l+L)表示所述混沌序列中从l+1位到l+L位的子混沌序列,而li(i=A,B,C,D,E,E1,E2,E3,E4)和
Figure A2007101010420003C3
均代表选择序列yi的初始位置。
13、根据权利要求12所述的可扩展单向散列函数的构造方法,其中,所述布尔运算包括异或、非、与、或、循环左移和循环右移中的一部分或全部。
14、根据权利要求13所述的可扩展单向散列函数的构造方法,其中,所述布尔运算包括下列级联的第一到第四轮迭代操作:
第一轮:
A = FF ( E , B , M i 1 , t 1 ) B = GG ( D , A , M i 2 , t 1 ) C = HH ( C , A , M i 3 , t 1 ) D = II ( B , C , M i 4 , t 1 ) E 1 = JJ ( D , E 1 , M i 1 , t 1 ) E = KK ( M i 1 , M i 2 , M i 3 , M i 4 , E 1 , t 1 )
第二轮:
A = FF ( E , B , M i 2 , t 2 ) B = GG ( D , A , M i 3 , t 2 ) C = HH ( C , A , M i 4 , t 2 ) D = II ( B , C , M i 1 , t 2 ) E 2 = JJ ( D , E 2 , M i 2 , t 2 ) E = KK ( M i 2 , M i 3 , M i 4 , M i 1 , E 2 , t 2 )
第三轮:
A = FF ( E , B , M i 3 , t 3 ) B = GG ( D , A , M i 4 , t 3 ) C = HH ( C , A , M i 1 , t 3 ) D = II ( B , C , M i 2 , t 3 ) E 3 = JJ ( D , E 3 , M i 3 , t 3 ) E = KK ( M i 3 , M i 4 , M i 1 , M i 2 , E 3 , t 3 )
第四轮:
A = FF ( E , B , M i 4 , t 4 ) B = GG ( D , A , M i 1 , t 4 ) C = HH ( C , A , M i 2 , t 4 ) D = II ( B , C , M i 3 , t 4 ) E 4 = JJ ( D , E 4 , M i 4 , t 4 ) E = KK ( M i 4 , M i 1 , M i 2 , M i 3 , E 4 , t 4 )
其中Mi1、Mi2、Mi3、Mi4(i=1,...,m)为所述子块Mi的所述小子块,而FF、GG、HH、II、JJ和KK分别定义为:
FF ( E , B , M , t ) = ( E &CirclePlus; B &CirclePlus; M ) > > t ( 5 )
GG ( D , A , M , t ) = ( &Not; ( M < < t ( 4 ) ) &CirclePlus; D &CirclePlus; A ) > > t ( 3 )
Figure A2007101010420004C7
Figure A2007101010420004C8
JJ ( D , E , M , t ) = ( ( D &CirclePlus; M ) < < t ( 4 ) ) &CirclePlus; ( ( M &CirclePlus; E ) > > t ( 5 ) )
Figure A2007101010420005C1
这里,
Figure A2007101010420005C2
∧、∨、《和》分别代表异或、非、与、或、循环左移、循环右移,而t(i)中的t表示t1,t2,t3,t4,其长度均为t0,t(i)表示从t0长度中从右向左选取i比特,所选取的比特所代表的十进制数作为运算中的移位量。
15、一种基于嵌入式混沌映射的可扩展单向散列函数的构造系统,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,其中,所述系统包括:
接收装置,用于接收用户选择和密钥,以及所述消息;
混沌序列产生装置,用于根据所述接收装置接收到的密钥和用户选择,产生用于构造可扩展单向散列函数的混沌序列,并以所述混沌序列初始化具有预定位长度的一组初始缓冲值序列;
消息块填充装置,用于对所述接收装置接收到的所述消息进行位填充处理,以便将所述消息划分成预定个子块;布尔迭代装置,将经所述混沌序列产生装置赋值的所述初始缓冲值序列组与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组与以预定的顺序在所述子块中选择的另一子块进行所述布尔运算,直到对全部所述子块进行了所述布尔运算为止;以及
散列值序列输出装置,用于将所述布尔迭代装置的输出进行级联,以输出关于所述消息的单向散列函数值序列。
16、根据权利要求15所述的可扩展单向散列函数的构造系统,其中,所述混沌映射为一维可扩展混沌Tent映射,该混沌Tent映射定义如下:
F &alpha; : x i = x i - 1 &alpha; , 0 &le; x i - 1 &le; &alpha; 1 - x i - 1 1 - &alpha; , &alpha; < x i - 1 &le; 1
其中混沌参数α满足0<α<1,序列xi的取值范围是区间[0,1],xi取0或1值的概率小,而所述混沌参数α和初始条件x0被作为所述密钥。
17、根据权利要求16所述的可扩展单向散列函数的构造系统,其中,所述混沌参数α=0.3612,而所述初始条件x0=0.8581。
18、根据权利要求16所述的可扩展单向散列函数的构造系统,其中,所述混沌序列为所述序列xi的二值化序列yi
y i = 0 , 0 &le; x i &le; 0.5 , 1 , 0.5 < x i &le; 1 .
19、根据权利要求15所述的可扩展单向散列函数的构造系统,还包括消息垫分块装置,将经过填充的消息衬垫划分为所述预定个子块。
20、根据权利要求19所述的可扩展单向散列函数的构造系统,其中,每个所述子块具有相同的所述预定位长度。
21、根据权利要求20所述的可扩展单向散列函数的构造系统,其中,所述子块的所述预定位长度为4×L,L为任意整数。
22、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,要进行位填充的总位长度为SL1
SL 1 = 4 &times; L - mod ( ML 0 &times; 8,4 &times; L ) , if mod ( ML 0 &times; 8,4 &times; L ) &NotEqual; 0 , 0 , if mod ( ML 0 &times; 8,4 &times; L ) = 0 .
23、根据权利要求22所述的可扩展单向散列函数的构造系统,其中,要进行位填充的总位长度为SL1加SL2=4×L。
24、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,以所述混沌序列中从l0+1位到l0+LS×1位的子混沌序列S=y(l0+1,l0+LS×1)在所述消息的右边进行位填充,这里Ls=SL1+SL2,l0为选择的混沌序列的初始位置。
25、根据权利要求21所述的可扩展单向散列函数的构造系统,其中,每个所述子块进一步划分长度分别为L位的小子块。
26、根据权利要求25所述的可扩展单向散列函数的构造系统,其中,所述初始缓冲值序列组包括子混沌序列A、B、C、D、E、E1、E2、E3、E4、t1、t2、t3和t4,其分别定义如下
A = y ( l A + 1 , l A + L &times; 1 ) B = y ( l B + 1 + L &times; 1 , l B + L &times; 2 ) C = y ( l C + 1 + L &times; 2 , l C + L &times; 3 ) D = y ( l D + 1 + L &times; 3 , l D + L &times; 4 ) E = y ( l E + 1 + L &times; 4 , l E + L &times; 5 ) E 1 = y ( l E 1 + 1 , l E 1 + L &times; 1 ) E 2 = y ( l E 2 + 1 + L &times; 1 , l E 2 + L &times; 2 ) E 3 = y ( l E 3 + 1 + L &times; 2 , l E 3 + L &times; 3 ) E 4 = y ( l E 4 + 1 + L &times; 3 , l E 4 + L &times; 4 ) t 1 = y ( l t 1 + 1 , l t 1 + t 0 &times; 1 ) t 2 = y ( l t 2 + 1 + t 0 &times; 1 , l t 2 + t 0 &times; 2 ) t 3 = y ( l t 3 + 1 + t 0 &times; 2 , l t 3 + t 0 &times; 3 ) t 4 = y ( l t 4 + 1 + t 0 &times; 3 , l t 4 + t 0 &times; 4 )
其中y(l+1,l+L)表示所述混沌序列中从l+1位到l+L位的子混沌序列,而li(i=A,B,C,D,E,E1,E2,E3,E4)和均代表选择序列yi的初始位置。
27、根据权利要求26所述的可扩展单向散列函数的构造系统,其中,所述布尔运算包括异或、非、与、或、循环左移和循环右移中的一部分或全部。
28、根据权利要求27所述的可扩展单向散列函数的构造系统,其中,所述布尔运算包括下列级联的第一到第四轮迭代操作:
第一轮:
A = FF ( E , B , M i 1 , t 1 ) B = GG ( D , A , M i 2 , t 1 ) C = HH ( C , A , M i 3 , t 1 ) D = II ( B , C , M i 4 , t 1 ) E 1 = JJ ( D , E 1 , M i 1 , t 1 ) E = KK ( M i 1 , M i 2 , M i 3 , M i 4 , E 1 , t 1 )
第二轮:
A = FF ( E , B , M i 2 , t 2 ) B = GG ( D , A , M i 3 , t 2 ) C = HH ( C , A , M i 4 , t 2 ) D = II ( B , C , M i 1 , t 2 ) E 2 = JJ ( D , E 2 , M i 2 , t 2 ) E = KK ( M i 2 , M i 3 , M i 4 , M i 1 , E 2 , t 2 )
第三轮:
A = FF ( E , B , M i 3 , t 3 ) B = GG ( D , A , M i 4 , t 3 ) C = HH ( C , A , M i 1 , t 3 ) D = II ( B , C , M i 2 , t 3 ) E 3 = JJ ( D , E 3 , M i 3 , t 3 ) E = KK ( M i 3 , M i 4 , M i 1 , M i 2 , E 3 , t 3 )
第四轮:
A = FF ( E , B , M i 4 , t 4 ) B = GG ( D , A , M i 1 , t 4 ) C = HH ( C , A , M i 2 , t 4 ) D = II ( B , C , M i 3 , t 4 ) E 4 = JJ ( D , E 4 , M i 4 , t 4 ) E = KK ( M i 4 , M i 1 , M i 2 , M i 3 , E 4 , t 4 )
其中Mi1、Mi2、Mi3、Mi4(i=1,...,m)为所述子块Mi的所述小子块,而FF、GG、HH、II、JJ和KK分别定义为:
FF ( E , B , M , t ) = ( E &CirclePlus; B &CirclePlus; M ) > > t ( 5 )
GG ( D , A , M , t ) = ( &Not; ( M < < t ( 4 ) ) &CirclePlus; D &CirclePlus; A ) > > t ( 3 )
Figure A2007101010420007C7
Figure A2007101010420007C8
JJ ( D , E , M , t ) = ( ( D &CirclePlus; M ) < < t ( 4 ) ) &CirclePlus; ( ( M &CirclePlus; E ) > > t ( 5 ) )
Figure A2007101010420008C2
这里,∧、∨、《和》分别代表异或、非、与、或、循环左移、循环右移,而t(i)中的t表示t1,t2,t3,t4,其长度均为t0,t(i)表示从t0长度中从右向左选取i比特,所选取的比特所代表的十进制位运算中的移位量。
29、一种计算机产品,其上实施有实现基于嵌入式混沌映射的可扩展单向散列函数的构造方法的程序,所述可扩展单向散列函数将消息映射成单向散列序列,用于防止所述消息被篡改,所述构造方法包括步骤:
1)接收预定的混沌映射、初始值和密钥并接收要处理的所述消息,以产生用于构造可扩展单向散列函数的混沌序列,并用所述混沌序列初始化具有预定位长度的一组初始缓冲值序列;
2)以所述混沌序列作为填充序列,对所述消息进行位填充处理,以便将经填充的消息垫划分成预定个子块;3)将经赋值的初始缓冲值序列与一个所述子块进行布尔运算,并将所述布尔运算结果作为新的缓冲值序列组输出;
4)对步骤3)所输出的新的缓冲值序列组和以预定的顺序在所述子块中选择的另一子块重复步骤3)的所述布尔运算,直到对全部所述子块进行了步骤3)为止;
5)将步骤4)的输出进行级联,以输出关于所述消息的单向散列函数值序列。
CNA2007101010424A 2007-04-23 2007-04-23 基于嵌入式混沌映射的单向散列函数的构造方法和系统 Pending CN101296079A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2007101010424A CN101296079A (zh) 2007-04-23 2007-04-23 基于嵌入式混沌映射的单向散列函数的构造方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2007101010424A CN101296079A (zh) 2007-04-23 2007-04-23 基于嵌入式混沌映射的单向散列函数的构造方法和系统

Publications (1)

Publication Number Publication Date
CN101296079A true CN101296079A (zh) 2008-10-29

Family

ID=40066115

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007101010424A Pending CN101296079A (zh) 2007-04-23 2007-04-23 基于嵌入式混沌映射的单向散列函数的构造方法和系统

Country Status (1)

Country Link
CN (1) CN101296079A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102332976A (zh) * 2011-09-15 2012-01-25 江西理工大学 异维可切换混沌系统设计方法及电路
CN101741560B (zh) * 2008-11-14 2014-07-02 北京石油化工学院 基于整数非线性映射的散列函数构造方法
CN104104496A (zh) * 2014-07-08 2014-10-15 华侨大学 一种基于混沌动力理论的单向哈希函数构造方法
CN104158648A (zh) * 2013-05-14 2014-11-19 罗伯特·博世有限公司 用于生成哈希值的方法和装置
CN105281911A (zh) * 2015-08-04 2016-01-27 电子科技大学 一个由字符串映射到固定大小矩阵的哈希函数
CN105391544A (zh) * 2015-11-19 2016-03-09 北京石油化工学院 一种适用于RFID认证系统的Hash函数构造方法
CN108197420A (zh) * 2017-12-25 2018-06-22 中国人民解放军63921部队 一种基于ut变换的空间目标碰撞预警距离计算方法
CN108830092A (zh) * 2018-05-29 2018-11-16 成都大象分形智能科技有限公司 涉及数据随机加密的神经网络模型加密保护系统及方法
CN112099953A (zh) * 2020-09-17 2020-12-18 北京石油化工学院 一种基于耦合动态整数帐篷映射的并行Hash函数构造方法
CN113259085A (zh) * 2021-06-17 2021-08-13 中南大学 基于旋转法的三维多腔混沌系统的构建方法及伪随机序列生成器
CN113411801A (zh) * 2021-08-19 2021-09-17 北京电信易通信息技术股份有限公司 一种基于身份签密的移动终端认证方法
CN115225330A (zh) * 2022-06-21 2022-10-21 中国电信股份有限公司 一种数据加密方法、装置、电子设备及存储介质

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741560B (zh) * 2008-11-14 2014-07-02 北京石油化工学院 基于整数非线性映射的散列函数构造方法
CN102332976B (zh) * 2011-09-15 2013-11-06 江西理工大学 异维可切换混沌系统设计方法及电路
CN102332976A (zh) * 2011-09-15 2012-01-25 江西理工大学 异维可切换混沌系统设计方法及电路
CN104158648B (zh) * 2013-05-14 2019-03-29 罗伯特·博世有限公司 用于生成哈希值的方法和装置
CN104158648A (zh) * 2013-05-14 2014-11-19 罗伯特·博世有限公司 用于生成哈希值的方法和装置
CN104104496A (zh) * 2014-07-08 2014-10-15 华侨大学 一种基于混沌动力理论的单向哈希函数构造方法
CN104104496B (zh) * 2014-07-08 2018-02-23 华侨大学 一种基于混沌动力理论的单向哈希函数构造方法
CN105281911A (zh) * 2015-08-04 2016-01-27 电子科技大学 一个由字符串映射到固定大小矩阵的哈希函数
CN105281911B (zh) * 2015-08-04 2018-09-25 电子科技大学 将任意长度字符串映射到固定大小矩阵的哈希函数方法
CN105391544A (zh) * 2015-11-19 2016-03-09 北京石油化工学院 一种适用于RFID认证系统的Hash函数构造方法
CN108197420A (zh) * 2017-12-25 2018-06-22 中国人民解放军63921部队 一种基于ut变换的空间目标碰撞预警距离计算方法
CN108197420B (zh) * 2017-12-25 2021-09-07 中国人民解放军63921部队 一种基于ut变换的空间目标碰撞预警距离计算方法
CN108830092A (zh) * 2018-05-29 2018-11-16 成都大象分形智能科技有限公司 涉及数据随机加密的神经网络模型加密保护系统及方法
CN108830092B (zh) * 2018-05-29 2020-04-24 成都大象分形智能科技有限公司 涉及数据随机加密的神经网络模型加密保护系统及方法
CN112099953A (zh) * 2020-09-17 2020-12-18 北京石油化工学院 一种基于耦合动态整数帐篷映射的并行Hash函数构造方法
CN113259085A (zh) * 2021-06-17 2021-08-13 中南大学 基于旋转法的三维多腔混沌系统的构建方法及伪随机序列生成器
CN113411801A (zh) * 2021-08-19 2021-09-17 北京电信易通信息技术股份有限公司 一种基于身份签密的移动终端认证方法
CN115225330A (zh) * 2022-06-21 2022-10-21 中国电信股份有限公司 一种数据加密方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN101296079A (zh) 基于嵌入式混沌映射的单向散列函数的构造方法和系统
Kanso et al. Keyed hash function based on a chaotic map
Megha Mukundan et al. Hash‐One: a lightweight cryptographic hash function
US20120166808A1 (en) Lattice-based ring signature method
Zong et al. Collision attacks on round-reduced gimli-hash/ascon-xof/ascon-hash
CN107579811A (zh) 一种基于sm3密码杂凑算法的硬件优化方法
CN108768656B (zh) 一种基于哈希算法的数据校验方法
CN105787390B (zh) 一种数据完整性的验证方法及其系统
Wu et al. Encryption of accounting data using DES algorithm in computing environment
CN108028756A (zh) 消息认证码生成装置、消息认证码生成方法和消息认证码生成程序
Li et al. A image encryption algorithm based on coexisting multi-attractors in a spherical chaotic system
Hong et al. A new dedicated 256-bit hash function: FORK-256
Lafitte et al. SAT-based cryptanalysis of ACORN
Liu Digital signature and hash algorithms used in Bitcoin and Ethereum
CN102752285A (zh) 基于高碰撞概率散列函数预先验证的计算机系统登录方法
CN1815948B (zh) 基于复合非线性数字滤波器的混沌散列构造方法
Zhang et al. Meet-in-the-middle attack with splice-and-cut technique and a general automatic framework
Kahri et al. An FPGA implementation of the SHA-3: The BLAKE hash function
CN102542070A (zh) 基于随机函数的单向哈希函数构造方法
Shahapure et al. Variation and security enhancement of block ciphers by embedding
CN108039944A (zh) 具有前向安全性的揭序加密框架算法
Xiang et al. One-way hash function based on cascade chaos
Jiao Specifications and improvements of LPN solving algorithms
Saravanan et al. Modified whirlpool hash based bloom filter for networking and security applications
CN113721888B (zh) 一种Equihash算法的数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20081029