基于整数非线性映射的散列函数构造方法

文档序号:371841阅读:677来源:国知局

专利名称::基于整数非线性映射的散列函数构造方法
技术领域
:本发明涉及信息安全
技术领域
中一种提取消息摘要的散列函数构造方法,尤其是广泛用于数字证书、电子签名、口令保护、数字信息的完整性验证等安全应用场合的基于整数非线性映射的散列函数构造方法。
背景技术
:近十几年来,美、俄、欧、日等都相继制定了各自的Hash函数算法标准。安全Hash算法SHA-1、SHA-2是美国国家标准与技术研究所(NIST)的标准算法;RIPEMD-160是欧共体PIPE计划下开发的标准Hash算法,其输出为160bit;GOSTHash算法是俄国国家标准,它的输出为256bit;N-Hash算法是由日本电报电话公司研究发明的。但时至今日,我国尚未公布类似的Hash函数算法标准。近年来,密码学界对Hash函数的设计与分析给予了广泛的关注。在2004年美密会上,王小云等宣布了包括MD4,MD5,HAVAL-128以及RIPEMD在内的碰撞实例。王小云等人对SHA-1的分析也已取得突破性成果,她们已将碰撞攻击的复杂度从269提高到263。SHA-1被认为是现代网络安全的基石,被广泛使用于银行、安全通讯以及电子商务中。由于王小云等人揭示出SHA-1的脆弱性,美国NIST正在举行Hash函数标准的公开征集。传统的Hash函数(MDx系和SHA系)的主要设计原则基于Merkle-Damgard结构,它们具有许多共同的设计准则,各轮的混合运算设计极为相似,全都采用了整数模加和逻辑函数(轮函数)。从世界范围来看,随着新的攻击方法的提出,如此众多的Hash算法在不长的时间相继被攻破,说明其设计准则存在缺陷,也是长期以来Hash函数设计走“近亲路线”的结果。美国NIST鼓励设计者在新的应用和协议中使用SHA-2Hash函数。但由于SHA-2与SHA-1同属一个Hash算法类别,也存在被类似方法攻击的可能。为获得更安全的Hash函数,近年来利用混沌系统对变量和参数的变化的敏感特性构造单向Hash函数的研究也已取得一些进展。Hash函数与分组加密算法有很多相同的密码学特征,而其根本不同点在于Hash算法是不可逆的,而分组加密算法是可逆的。混沌映射的不可逆性表明,基于混沌映射构造Hash函数比构造分组密码算法更有优势。但是,由于数字化混沌系统的动力学特性退化问题及构造方案本身的缺陷,目前基于混沌理论的Hash函数构造方案还无法得到人们的信任。时空混沌系统具有非常多的正李雅普诺夫指数,系统在时间及空间方向上都是混沌的,其动力学行为非常丰富而复杂,空间上的任何一点的微小变化都会随时间的增加而扩散开去,产生很大的变化。利用时空混沌可以大大提高系统的复杂性,从而有利于提高系统的安全性。2005年张在文献1“基于时空混沌系统的单向Hash函数构造”(张瀚等,物理学报,2005,54(9))给出一种基于CML的单向Hash函数构造方案,但该方案存在以下缺陷1)采用了单向耦合映像格子系统模型(OCML)。由于OCML易同步,且计算效率高,因此在人们将时空混沌应用到密码学领域的研究中,该模型应用较多,但用该模型构造单向Hash函数,却存在初始扰动传播放大速度较慢、扩散机制不强的问题。我们经仿真研究发现,初始条件或系统参数的微小差异,需要通过约4×L次迭代(L为OCML的格点数),才能使混沌轨道有明显分离,变成互不相关的两条轨道;2)明文信息作为初值来驱动OCML,一个格点只能调制1个字节的明文信息,当明文文件较大时,需要的OCML格点规模太大,计算效率极低;3)明文映射方式存在严重缺陷。2007年S.Wang在文献[2]“Hashfunctionbasedonchaoticmaplattices”(S.Wang,G.Hu,Chaos,17)给出基于时空混沌构造单向Hash函数的新方案,与文献1相比,提高了效率,但与MD5及SHA-1相比,执行效率仍然偏低。目前提出的基于混沌的hash函数与传统的基于逻辑函数的Hash函数的一个重要区别就是基于混沌的hash函数界定在实数域上,而传统的Hash函数采用的是有限整数的按位操作。在实数域上构造混沌hash函数还面临以下几方面问题1)实数域几乎被不可数的无穷多的无理数所充满,然而,由于计算机截断误差的存在,它不能处理无理数,产生不了一个非周期轨道,在有限精度实现的情况下,数字化混沌系统的动力学特性相对连续系统而言存在严重的退化;2)实数域上,计算机精度及所采用的机器甚至语言类型都可能影响有限精度混沌系统的最终结果,因此,基于实数域上混沌的Hash算法中普遍存在由于计算机的有限精度或各计算机精度不同所导致的Hash值计算失败的难题,使混沌Hash函数的实际应用受到很大限制;3)不利于软硬件高速实现。
发明内容根据
背景技术
所述,本发明的目的在于克服现有的混沌散列函数设计方案所存在的问题,提供一种基于整数非线性映射的散列函数构造方法,用于解决信息系统安全中的消息验证、数字签名等技术问题。本发明采用分段式非线性码字扩展方案,通过整数非线性映射拉伸与折叠的非线性本质实现消息的非线性扩展,增强了码字扩展的非线性扩散程度,提高了运算效率;将整数非线性映射与逻辑函数相结合,作为压缩函数混合运算的主要非线性部件,具有较为理想的混淆与扩散特性;压缩函数内部采用并行迭代结构,有利于软硬件高速并行实现。本发明的方法安全、快速,易于软硬件实现。为了实现上述目的,本发明是通过以下技术方案来实现的(1)消息填充将任意长度的明文消息M分割成1024比特的消息块M0,...,M1,...,Mt,最后一个块填充为Mt=*...*10...0Mdlen(H)Length(M),其中,Mdlen(H)表示输出的散列长度,长度为10比特,Length(M)表示M的长度的二进制形式,长度为64比特。将每个消息块Mi划分成两组,每组由16个32比特的消息字组成,分别为m0,m1,...,m15及m′0,m′1,...,m′15。(2)给定一组初始向量及参数k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac.(3)非线性分段式码字扩展利用上式对消息字m0,m1,...,m15及m′0,m′1,...,m′15进行消息扩展,先通过循环移位及模加方式进行10次迭代操作,随后再利用非线性映射进行码字扩展,得到扩展后的码字序列W0,W1...,W63及W′0,W′1,...,W′63。(+表示mod232的加法运算,∨表示逐比特逻辑或,表示逐比特逻辑异或,<<表示左移位操作,>>表示右移位操作,<<<表示循环左移位操作)。(4)并行方式的混合迭代运算1)2)Fort=0to11{当t为偶数时k=(t/2)*8+16;i=0,…,7i=0,…,7当t为奇数时k=((t-1)/2)*8+16;i=0,…,7i=0,…,7}3)将x0(0),...,x7(0)分别加到x0,...,x7,即4)对剩下的消息块继续2)、3)的操作,直到最后一个消息块。(5)散列输出并行迭代结束后,最后的输出结果即为256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根据不同场合的应用需求,通过输出变换,得到输出结果为120,160,192或224比特的消息摘要。由于采用了上述技术方案,本发明具有如下优点和效果(1)本发明混合运算使用了耦合整数非线性映射式中,及两个基本逻辑函数(x(y∨(~z),xyzw),使得整数非线性映射具有均匀分布性及良好的非线性特征,并且实现简单,运算速度快,但它是单变量间的1-1映射,不存在值碰撞问题。每一次映射变换除了能使状态变量左移一位之外,最高比特位的差分特性还将引发该状态变量产生最大的差分扩展码字重量,而且通过循环移位及耦合扩散,每一消息比特差分均有机会触发动态差分扩散。而两个基本逻辑函数与整数帐篷映射的混合使用,又加速了状态变量间的差分扩散。(2)本发明采用分段式非线性码字扩展方式,并且在混合函数中仅使用通过递归方式生成的扩展码字序列部分,加速了消息在混合运算中的扩散及混淆过程。(3)相对于传统Hash函数的操作步只能用串行方式实现,本发明的压缩函数内部的迭代结构与MD5、SHA-1、SHA-256等不同,适应于并行方式实现。(4)本发明描述简单,易于实现,借鉴并改进了混沌密码学研究中广泛采用的帐篷映射模型,将其从实数域变换到整数集中,应用到消息扩展及压缩函数的混合运算,进而充分利用了帐篷映射拉伸与折叠的非线性本质与均匀分布的特性,而且本发明运算过程全部采用基于32位操作数的一些简单位操作,便于软硬件高速实现。图1为本发明散列函数结构示意图。图2为本发明所采用的耦合映像系统模型在随机选取一组初值时状态变量x0(i)经12000次迭代的结果,说明耦合映像系统模型具有较为理想的均匀分布特性。图3是对本发明所采用分段式非线性码字扩展方案进行差分扩散特性试验的结果。实验方法是随机选取一个消息分组(512比特),每次改变一个比特,观察其在随后的递归过程中对1536(48*32)个扩展比特位的影响。具体实施例方式下面结合附图和实施例对本发明进行详细说明。本发明的方法采用分段式非线性码字扩展方案,通过整数非线性映射拉伸与折叠的非线性本质实现消息的非线性扩展,增强了码字扩展的非线性扩散程度,提高了运算效率。将整数非线性映射与逻辑函数相结合,作为压缩函数混合运算的主要非线性部件,具有较为理想的混淆与扩散特性。压缩函数内部采用并行迭代结构,有利于软硬件高速并行实现。本发明方法具体包括以下步骤(1)消息填充将任意长度的明文消息M分割成1024比特的消息块M0,...,Mi,...,Mt,最后一个块填充为Mt=*...*10...0Mdlen(H)Length(M),其中,Mdlen(H)表示输出的散列长度,长度为10比特,Length(M)表示M的长度的二进制形式,长度为64比特。将每个消息块Mi划分成两组,每组由16个32比特的消息字组成,分别为m0,m1,...,m15及m′0,m′1,...,m′15。例如如果拟输出的散列长度为256比特,明文为900位二进制数,表示成十六进制数为AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EAD9823408349698778FFFCDE8976234762342345645AEAFCE234789236ABD948572789235823408349698778FFFC876FAC于是添加1个“1”,49个“0”,接着添加256比特输出散列长度所对应的编码(十个“0”),最后再加上64比特串(900)10=0000000000000768,共1024比特,因而只有一个填充消息块,将其划分成两组,每组由16个32比特的消息字组成组1(m0,m1,…,m15)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA组2(m′0,m′1,…,m′15)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768(2)初始化散列值及参数设定k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac.(3)按照下式进行非线性分段式码字扩展码字扩展过程如下1)将组1(m0,m1,...,m15)(组2(m′0,m′1,...,m′15))依序赋值给Wt(0≤t≤15);2)按下式进行10次迭代操作Wt=Wt-3+Wt-8+Wt-14+Wt-16+(Wt-1Wt-2Wt-15)<<<13+(Wt-1Wt-4Wt-11)<<<233)接着利用非线性映射进行码字扩展(38次迭代操作),得到扩展后的码字序列W0,W1…,W63(W′0,W′1,…,W′63)Wt=Wt-2+Wt-3+Wt-9+Wt-16例如对于前面由给定的消息块划分出的组1(m0,m1,…,m15)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA进行码字扩展操作后,得到的扩展码字序列为(W0,W1…,W63)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA7308A6CC9CE24DBBE6914A0D602D324A1FFA86FFA707F7981C2DF3DA397234AAC1452E362E2A5FBEBB1351D6A71A88FBDCFCC27FD978ACFAAA4F865A244371A35999F0D74596634A024696004595D224CBE26D6D7032FC8A689EC657762CED3972E8B3F719EC269BD22B425E19A9B52233D84D337BDA4D884E37E6573318DF504BE5756C18F9F62A0289D57735507488084523EF3C746784323A258AA9A53E8EC32E8209CBA0028D67B09A632B080552D3819BD98357991A8A4AC2299825AAF2对于前面由给定的消息块划分出的组2(m′0,m′1,…,m′15)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768进行码字扩展操作后,得到的扩展码字序列为(W′0,W′1,…,W′63)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC80000000000000000000000000007680300B20BD4CE6A58C23E6346E3DCB7201927C7C59809A3B9297E1E9C98F7B1339E0F45085B1B52DB959F6DCA540E61B87E36A5B5A81CCAD7A78AC0E5D13BBD29C53F154FB8AB2176DB662B097BE65AD742A5E65F28CE0A9944A5E610261638D978F7265933CBA6F83A8809CD01A25E11D914ACF37854CFBA0344BC1FF0A99F71F73317B0FE562DEA854BCCBB4968CADE009798DC309A1C9F2B3AE04632272A981EA85A1625A01FCE16AF1CF57C7F4F5E7F27F1C317067819FDD7FA7F2C5CD3B6(4)并行方式的混合迭代运算并行混合运算是对耦合映像系统模型的一个迭代计算过程。耦合映像系统模型为该模型在空间方向上展示出丰富而复杂的动力学行为,迭代该式产生的时间序列具有理想的均匀分布特性。这里,取p=8,j=0,...,7。图2是该耦合映像系统模型在随机选取一组初值时状态变量x0(i)经12000次迭代的结果。混合迭代计算过程如下1)2)Fort=0to11{当t为偶数时k=(t/2)*8+16;i=0,…,7i=0,…,7当t为奇数时k=((t-1)/2)*8+16;i=0,…,7i=0,…,7}3)将x0(0),...,x7(0)分别加到x0,...,x7,即4)对剩下的消息块继续2)、3)的操作,直到最后一个消息块。在12轮次的迭代过程中,8个连接变量的值可采取并行方式更新。下面是迭代计算的实施例W0,W1…,W15AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EAW′0,W′1,…,W′15D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768对t=0到t=11计算得到表1的结果。表1迭代计算最后的输出为x0=6A09E667+D1F501E6=3BFEE84D,x1=BB67AE85+E71F0E3F=A286BCC4,x2=3C6EF372+72030D17=AE720089,x3=A54FF53A+EF2ECB19=947EC053,x4=510E527+4ADB9311=9BE9E590,x5=9B05688C+DD6FBF3E=87527CA,x6=1F83D9AB+FAC89F8B=1A4C7936,x7=5BE0CD19+F480ADE2=50617AFB。(5)散列输出并行迭代结束后,最后的输出结果即为256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根据不同场合的应用需求,通过输出变换,得到输出结果为128,160,192或224比特的消息摘要。256比特散列值并行迭代结束后,最后的输出结果即为256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7=3BFEE84DA286BCC4AE720089947EC0539BE9E59087527CA1A4C793650617AFB。224比特散列值为x0||x1||x2||x3||x4||x5||x6=3BFEE84DA286BCC4AE720089947EC0539BE9E59087527CA1A4C7936。192比特散列值把x6,x7分解为192比特散列值为y0||y1||y2||y3||y4||y5,这里y0||y1||y2||y3||y4||y5=3BFEE9E1A286BF07AE72020A947EC7F19BE9E6C778752AA5。160比特散列值把x5,x6,x7分解为160比特散列值为y0||y1||y2||y3||y4,这里y0||y1||y2||y3||y4=3C0DEEF5A2879F10AE86A4209480B97E9BEA934B。128比特散列值y0=x0+x4,y1=x1+x5,y2=x2+x6y3=x3+x7.y0||y1||y2||y3=D7E8CDDD1AFBE48EC8BE79BFE4E03B4E散列函数被普遍应用于数字安全的几乎所有方面,比如密码保护,数字签名,时间戳等,在密码协议设计中,可以灵活地使用散列函数来增加安全性。关于非线性映射由来的说明帐篷映射是混沌研究中十分重要的例子,它的定义是帐篷映射的优异特性之一是其具有均匀的分布函数,在实数域内其性态是混沌的。当参数α=0.5时,将其由实数域运算等价转化为整数运算其中1=2k-1。我们将映射F称为整数非线性映射,它服从上的均匀分布,具有拉伸与折叠的非线性本质,其拉伸特性最终导致相邻点的指数分离,其折叠特性则保持生成序列有界,且引起映射不可逆。定义D=231,在GF(232)内,可用C语言中的三元运算符(?)将上面给出的整数非线性映射描述为xn+1=xn<D?(xn<<1)+1~xn<<1显然,该式可用简单的逻辑判断、逻辑取反及移位操作予以实现。若用汇编语言或硬件实现,则其操作可以进一步简化为测试字的最高位是否为0,若为0,则左移一位加1,否则,则各位求反后,左移一位。虽然操作十分简单,但是这里遇到if区块,它会编译成跳转指令,而跳转指令会影响现代超流水线CPU的流水线效率,一旦分支预测失败,就可能阻断流水,从而浪费大量的指令周期。为了避开if跳转,给出整数非线性映射的另一种等价形式该式全部采用简单指令实现,完全避免了跳转操作。实施例1应用本发明进行数字签名数字签名是对网上传输的电子报文进行签名确认的一种方式,目前已经应用于网上安全支付系统、电子银行系统、电子证券系统、安全邮件系统、电子订票系统、网上购物系统、网上保税等一系列电子商务应用的签名认证服务。数字签名对安全性和防伪造性的要求较高,并且要求验证速度比签名速度要快,特别是联机在线实时验证。目前数字签名算法中广泛采用了安全散列算法(SHA-1),在SHA-1的安全性遭受严重威胁的情况下,有必要采用更为安全的散列算法。本发明方法安全性好,执行速度快,特别适合应用于数字签名。下面给出用本发明方法及RSA算法对一个合同文本进行数字签名的例子。1)给定一个合同文本(需要签名的消息)“Thiscontractismadebyandbetweenthebuyersandthesellers,wherebythebuyersagreetobuyandthesellersagreetoselltheundermentionedcommodityaccordingtothetermsandconditionsstipulatedbelowtobepackedproperlybysellers,suitableforlong-distancelandtransportationandwellprotectedagainstdampness,moisture,shock,rust.thesellersshallbeliableforanylossattributabletoinadequateorimproperprotectivemeasurestakenbythesellersinregardtopacking.onthesurfaceofeachpackage,thepackagenumber,measurement,grossweight,netweightandthewordingsandtheliftingpositionshallbestenciledinfadelesspaint.”2)把上述需要签名的消息作为本发明方法的输入,由此输出一个定长的安全散列值(128比特)202BA810F534B3A69FBFDDED873F2DEA3)RSA算法的一对密钥Modulus(N)678E60FAAA21F56DE2D250E5CA2ADD69FC2622F122D370944D65E59C18FB0BD1PrivateExponent(D)4663B631CC6146D5499F51D3D046B0B70DAD2D4D53960F7FD5E72ADAA0ABD31DPublicExponent(E)100014)合同发送方用自己的私钥对由合同文本生成的散列值加密形成签名50B627E01486F6260FA8CB61BB7C11A7F077F6AEF9F5445AD93096B1E69CC7E45)将合同文本和签名传送出去,接受方收到合同文本,根据收到的合同文本计算一个散列值,同时使用发送方的公钥对签名解密。若解密后的散列码和计算得出的散列码一致,则签名时有效的。因为只有发送方知道自己的私钥,所以,只有发送方才能生成合法的签名。若合同文件被稍微篡改,比如最后一个字母改为s,则生成的散列值为9895129EB931281C10A11B95C96C8750将文件的首字母“T”改为“t”,则生成的散列值为3D13EF1B6AE69B5C426BBC43B5934975文本最后增加一个空格,则生成的散列值为E4D14C8A7F3314D77BDC630D4734F3D3可见,合同文件只要稍微更改,解密后的散列值和计算得出的散列值就会完全不同。实施例2应用本发明进行密码保护用户帐户的安全保护是目前电子商务活动的一个重要技术问题。对于用户来讲,最关心的问题是口令的保密,口令的泄密将会导致用户的帐号被他人盗用。通常用户的帐号信息保存在用户帐号数据库中,如果用户的口令在数据库中以明文方式存放,所有有权访问用户帐号数据库的个人可以容易地得到其他人的口令。如果黑客得到了访问用户帐号数据库的机会,那么,所有用户的口令将被泄露。若在用户帐号数据库中不直接存放用户的口令而存放口令的散列值,则可达到有效保护用户口令的目的。为了防止“字典”攻击,在用户帐号数据库中不直接存放口令的散列值,而存放一随机字符串和用户口令相加所构成的字符串的散列值。例如若用户设定口令为abc123,存放的随机字符串为sdafhb2n4c1a8sdjhf1sa,则存放应用本发明方法生成的散列值(256比特)50d0eaob1c8f5668399cd529d39d3c9a74556062b05928864c040ed6816a42b9。由于散列函数的单向性,黑客即使获得该散列值,也无法获得该用户的口令。为了验证本发明方法的效果,对上述方法得到的散列函数的性能分析如下1.分段式非线性码字扩展方案的差分扩散特性分析对本发明算法所采用分段式非线性码字扩展方案进行差分扩散特性试验随机选取一个消息分组(512比特),每次改变一个比特,观察其在随后的递归过程中对1536(48*32)个扩展比特位的影响,测试结果如图3所示。表2给出SHA-1、SHA-256及本发明算法分别采用的码字扩展方式的消息差分扩展最小及最大码字重量。这里实验得出的码字重量是在随机选定一组消息(512比特),每次改变其一个比特时得到的结果。模加运算具有非线性特征,本发明算法采用的分段式非线性码字扩展方案在采用模加运算的基础上,进一步引入了整数非线性映射,使码字扩散过程变得十分复杂.表2列出的实验结果足以说明,分段式非线性码字扩展方式加剧了消息差分扩散程度。另外,在P4、2.0GHz主频条件下,对SHA-256扩展码字及本文给出的分段式非线性扩展码的运算效率进行测试,后者比前者快约10%左右。表2三种码字扩展方式的比较2.本发明算法非线性扩散特性的统计分析用统计方法对密码算法的非线性扩散程度进行分析通常要包括算法的完全性、雪崩效应及严格雪崩准则等方面。完全性是指函数输出值的每一个比特都与消息输入的所有比特有关,雪崩效应是指消息输入中任意一个比特的改变都应造成输出平均半数比特的改变,严格雪崩准则是指消息输入中任意一个比特的改变都会造成输出的每一个比特以1/2的概率发生改变。设H是一个n比特输入m比特输出的Hash算法,输入向量为x=(x1,...,xn)∈(0,1)n,仅改变x的第i比特后的输入向量为x(i)∈(0,1)n。它们经过压缩映射后对应的输出向量分别记为H(x)、H(x(i))∈(0,1)m。(.)j表示向量的第j比特,w(.)表示向量的汉明重量,#{.}表示集合的势。设X为Hash算法输入的样本空间,记aij=#{x∈X|(H(x))j≠(H(x(i)))j}(其中i=1,2,...,n;j=1,2,...,m)表示X中的输入向量x和x(i)对应的输出向量之间第j比特不同的个数;bij=#{x∈X|w(H(x(i))-H(x))=j}(其中i=1,2,...,n;j=1,2,...,m)表示X中的输入向量x和x(i)对应的输出向量之间的差分汉明重量为j的个数。定义3个统计度量完备性程度的度量雪崩效应程度的度量严格雪崩程度的度量若H(.)是随机变换,zα/2表示标准正态分布的α/2分位点,则有1)测试的样本量X至少应为nm×(zα/2)2;2)p(dc)=1-2-#x≈1.0;3)其置信区间为4)其置信区间为测试其统计量dc,da,dsa,若落入其置信区间,则说明散列算法满足非线性扩散的基本要求,即可认为散列函数具有很好的完全性和雪崩效应,满足严格雪崩准则。取输入长度n=512比特,输出长度m=256比特,在显著水平α=0.05下,理论上得到如下结果1)zα/2=1.96,选取样本容量X为503526;2)dc=1.000000;3)E{da}=0.999930,其置信区间为(0.9999221,0.9999373);4)E{dsa}=0.998876,其置信区间为(0.9988679,0.9988831).随机选取503526组512比特字(取自VisualC的Rand())的样本集X作为本文算法的消息输入,对本发明算法进行实际测试,实测结果如表3所示。表3非线性扩散性能逐拍统计结果对SHA-256进行同样的测试,实测结果如表4所示。表4SHA-256扩散性能的逐拍统计结果从表3可以看出,在显著水平α=0.05的情况下,本发明方法在迭代1拍之后统计量dc,da,dsa落入了各自的置信区间,从而满足了散列算法的非线性扩散性要求,明显优于表4给出的SHA-256的实验结果(由于本发明算法采用了并行迭代结构,其迭代1拍可以粗略地对应于SHA-256迭代8拍,依次地,迭代2拍对应于SHA-256迭代16拍,......)。3.本发明算法抗碰撞性分析抗碰撞性是散列函数的一个非常重要的性质,即找到两个能产生相同散列值的随机消息在计算上是不可能的。通过以下的实验可以定量测试本文算法的抗碰撞能力在明文空间中随机选取一段明文求出其散列值,并以单字节字符的方式来表示,然后随机地选择并改变明文中1比特的值得到另一新的散列结果。定义两个散列值之间的距离为其中ei和e′i分别是最初的和新的散列值的第i个字符,S为散列值对应字符的个数,函数t(·)将ei和e′i转换成对应的十进制数。若两个散列值分别由两个独立的均匀分布的随机序列所组成,则理论上散列值的单位字符的平均距离为85.33。取输入长度n=1024比特,随机选择输入样本,测试其输出的单位字符的平均距离。对本发明进行10万次统计测试,得到实际的测试结果如表5所示。表5抗碰撞性的逐拍统计结果从表5可以看出,本文算法在迭代2拍之后,其输出的单位字符的平均距离趋于稳定,并且与理论值十分接近。这一测试结果表明,仅有1比特不同的两个明文所得到的两个散列值统计上等价于由相互独立的两个均匀随机序列构成。因此,依据本概率模型,无法将本发明方法与随机映射相区分。为便于比较,表6给出SHA-256的抗碰撞性的实测结果。从表6可以看出,SHA-256算法在迭代24步之后,其输出的单位字符的平均距离趋于稳定。表6SHA-256算法抗碰撞性的逐拍统计结果4.本发明算法的执行效率表7给出了在P4、2.0GHz主频条件下,三种散列函数(本发明算法,SHA-256,SHA-1)用C语言实现的速度的测试结果。从表7可见,本发明算法明显比传统散列算法的速度要快。另外,本发明算法的内部迭代结构使得它易于并行实现,在时间性能上还有较大的提升空间。表7三种Hash函数的速度比较(Mbps)权利要求1.一种基于整数非线性映射的散列函数构造方法,包括下列步骤(1)消息填充将任意长度的明文消息M分割成1024比特的消息块M0,...,MI,...,Mt,最后一个块填充为Mt=*...*10...0Mdlen(H)Length(M),其中Mdlen(H)表示输出的散列长度,长度为10比特,Length(M)表示M的长度的二进制形式,长度为64比特;将每个消息块Mi划分成两组,每组由16个32比特的消息字组成,分别为m0,m1,...,m15及m′0,m′1,...,m′15;(2)给定一组初始向量及参数k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac;(3)非线性分段式码字扩展利用上式对消息字m0,m1,...,m15及m′0,m′1,...,m′15进行消息扩展,先通过循环移位及模加方式进行10次迭代操作,随后再利用非线性映射进行码字扩展,得到扩展后的码字序列W0,W1...,W63及W′0,W′1,...,W′63;(+表示mod232的加法运算,∨表示逐比特逻辑或,表示逐比特逻辑异或,<<表示左移位操作,>>表示右移位操作,<<<表示循环左移位操作);(4)并行方式的混合迭代运算1)2)Fort=0to11{当t为偶数时,k=(t/2)*8+16;Gi=(((xi(-(xi>>31)))<<1)∨(xi>>31))+Wi+ki=0,7i=0,...,7当t为奇数时,k=((t-1)/2)*8+16;Gi=(((xi(-(xi>>31)))<<1)∨(xi>>31))+W′i+ki=0,...,73)将x0(0),...,x7(0)分别加到x0,...,x7,即4)对剩下的消息块继续2)、3)的操作,直到最后一个消息块;(5)散列输出并行迭代结束后,最后的输出结果即为256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根据不同场合的应用需求,通过输出变换,得到输出结果为128,160,192,224或256比特的消息摘要。全文摘要一种涉及信息系统安全工程技术的基于整数非线性映射的散列函数构造方法,包括以下步骤(1)消息填充;(2)设定一组初始向量及参数;(3)对消息分组进行非线性分段式码字扩展;(4)采用耦合映像系统模型进行并行式混合迭代运算,实现扩展码字与链接变量的混淆与扩散;(5)可变长度散列输出。本发明的散列函数构造方法多用于数字证书,电子签名,口令保护,数字完整性验证等领域,采用了非线性分段式码字扩展技术,加速了码字的非线性扩散程度,将整数非线性映射与逻辑函数相结合,具有较为理想的混淆与扩散特性,本发明压缩函数内部采用并行迭代结构,有利于软硬件高速并行实现,构造方法运算效率高,易于修改补充和维护。文档编号H04L9/30GK101741560SQ20081022611公开日2010年6月16日申请日期2008年11月14日优先权日2008年11月14日发明者刘建东申请人:北京石油化工学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1