法律状态公告日
法律状态信息
法律状态
2013-08-28
未缴年费专利权终止 IPC(主分类):H04L9/00 授权公告日:20100428 终止日期:20120630 申请日:20050630
专利权的终止
2010-04-28
授权
授权
2007-03-21
实质审查的生效
实质审查的生效
2006-08-09
公开
公开
所属技术领域
本发明涉及信息安全技术领域中一种提取消息摘要的散列构造方法,可广泛用于数字证书、电子签名、口令保护、数字信息的完整性验证等安全应用场合。
背景技术
随着电子商务和信息数字化的飞速发展,散列算法在基于网络的安全应用如数字证书、数字签名、身份认证和信息完整性保护中得到广泛的使用。经典的散列算法如MD5(Message Digest 5,消息摘要算法5版)和SHA(SecureHash Algorithm,安全散列算法)在金融、证券等电子商务中得到普遍应用并成为事实上的两大标准。从上世纪90年代以来,人们就对这两大算法进行了安全攻击,并相继提出了“生日攻击”、“微分攻击”等破译方法。2004年,王小云教授在国际密码会Crypto 2004’上的“Collisions for Hash FunctionsMD4,MD5,HAVAL 128 and RIPEMD”报告,对MD5进行了有效攻击。随后,王等人又宣告对SHA-1完成了理论上的破译。鉴于MD5被破译及SHA-1漏洞被发现,美国国家技术与标准局(NIST)表示,他们将逐渐放弃目前使用的SHA-1,并于2010年前逐步推广更安全的SHA-224、SHA-256、SHA-384和SHA-512几种散列算法。但是这些散列算法大多是基于复杂度假设,需要进行大量复杂的异或等逻辑运算或是用分组加密方法进行多次迭代,运算量很大,随着散列长度的增加,其运算复杂度呈指数递增。
随着人们对混沌理论的深入研究,发现混沌具有对初始条件敏感、伪随机、类噪声和遍历等优良密码特性,并将混沌广泛应用在加密和随机数生成算法中。2000年刘在文献1“基于混沌映射的单向散列函数构造”(刘军宁等清华大学学报,2000(40)55)中首次将混沌引入到散列生成算法中,提出了一种基于混沌映射的散列算法。2003年王在文献2“基于广义混沌映射切换的单向散列函数构造”(王小敏等物理学报2003(52)2737)中指出该算法基于某一特定的混沌系统,易被混沌预测技术破译,同时有效字长精度效应将导致混沌序列的短周期行为,使得算法的性能蜕化等问题,并提出一种基于广义混沌映射切换的混沌散列构造方法。同年,李在文献3“复合非线性离散动力系统和Hash函数”(李红达计算机学报2003,26:460)中采用两个互补的混沌映射形成复合混沌的办法提出了基于复合混沌动力系统的散列构造方法,均取得了较好的效果。但文献2、3方法的性能好坏均还取决于所采用的混沌映射的性能,对于混沌效应强的映射,一般都涉及到复杂的浮点运算,影响运算速度,也不利于硬件实现。另外,对于性能优良的混沌映射,难以找到满足文献3互补要求的混沌源,这在算法结构上不具有通用性和可扩充性,也不利于模块化和硬件实现。2005年xiao等人在文献5“One-way hash fuction construction based on the chaotic mapwith changeable-parameter”(D.Xiao Chaos,Solitons and Fractals,2005(24)65)中用一个带变参数的混沌映射取代了王方案中的多个混沌映射切换,提出一种基于变参数混沌映射的散列构造方法,其设计思想与王方案实质上是一致的。虽然文献5采用具有均匀分布特性的分段线性映射(PWL),但每次迭代时,使用变参数改变了PWL的结构,这实质上是破坏了PWL的全局均匀分布特性,使得散列结果在散列空间中不是均匀分布,而与明文的统计特性有关,因此难以抵御统计攻击。
发明内容:
本发明的目的是提供一种基于复合非线性数字滤波器的混沌散列构造方法,该方法实现简单、安全,占用存储空间少,运算速度快,易于扩充和软硬件实现。
为实现上述目的,本发明的技术方案是,一种基于复合非线性数字滤波器的混沌散列构造方法,包括如下具体步骤:
1)初始化:n维自回归非线性数字滤波器,其初始输入信号为φ,φ∈(-1,1),滤波器初态为{z1,z2,…zn}∈(-1,1),并记密钥为SK={φ,z1,z2,…zn};取散列值的长度L≥128比特,待散列的明文为M′,用零填充后的明文为M,并使M的长度满足|M|=(||M′|/L|+1)L≌sL,(s≥2);将M按长度L分组,记为M=(M1,M2,…,Ms),其中
2)散列值生成:
①第一段明文m1的散列值生成:将H0与M1异或,得复合控制序列R1=M1H0={r0,r1,…,rL-1};第一次迭代时,取R1中序列r0r1…rp-1对应的十进制整数q,表示为q=(r0r1…rp-1)2,其中
第i次迭代时,取R1中序列ri-1modkrimodkri+1modk…rp+i-2modk,重新计算q=(ri-1modkrimodkri+1modk…rp+i-2modk)2,其中,imodk表示i对k求余;然后按新的q选择系数组cq作为第i次迭代的滤波器系数,迭代后滤波器输出为yi;迭代L次后得到复合系统的输出轨迹{yi}1L,量化为二进制序列作为M1的散列值H1;
②第二段明文M2的散列值生成:将①步最后一次迭代后的滤波器输出值yL作为本阶段滤波器的初始输入,并以①步生成的M1散列值H1与M2异或,得到复合控制序列R2=H1M2;以R2取代R1,然后用①步相同的方法,得到M2的散列值H2;
③第i段明文Mi的散列值生成:将i-1段明文Mi-1最后一次迭代后的滤波器输出值yL作为本阶段滤波器的初始输入,并以第i-1段明文Mi-1的散列值Hi-1与Mi异或,得到复合控制序列Ri=Hi-1Mi;以Ri取代R1,然后用①步相同的方法,得到Mi的散列值Hi。
④重复③步过程,直至得到最后一段明文Ms的散列值Hs,并以此散列值Hs作为整个明文M的散列值H。
与现有技术相比,本发明采用的基于非线性数字滤波器的混沌散列构造方法,有如下特点:
1、基于复合非线性数字滤波器的散列构造方法更安全,这是因为:(1)充分利用了高维混沌系统对初始条件敏感和迭代过程的单向性,以及由明文段Mi产生的复合控制序列Ri对滤波器系数选择的随机性,使得最终的散列结果H的每比特都与整个明文M及密钥SK有着敏感、复杂的非线性强藕合关系,可以有效抵抗线性分析;(2)由系统初态形成的散列密钥SK在精度允许范围内发生微小改变,将导致散列结果有近L/2个比特位发生变化,对同一明文用不同的密钥,将得到完全不同的散列值。由于具有很大的密钥空间,算法可以抵抗密钥的强力攻击;(3)复合滤波器产生的混沌序列周期长且满足n维均匀分布,通过对明文的调制和轨迹的粗粒化量化,使散列结果在散列空间中均匀分布,可以抵抗统计攻击;
2、基于滤波器结构的算法实现简单快速,没有复杂的浮点运算,比基于其它混沌模型的算法更易于扩充和软硬件实现。
3、当改变散列值长度时,传统的MD5和SHA族散列构造方法需要重新设计整个算法,而本发明不用改变滤波器结构和基本算法,只需改变明文M的分组长度和向量Hi的长度,就可得到不同长度的散列值。从而与传统的散列构造方法相比,本发明算法具有巨大的优势,可以适应多种不同安全需求的场合。
4、结合了混沌和滤波器各自的优点,算法采用分段自回归级联迭代实现,即段内采用自回归,段间采用CBC(Cipher-Block-Chain,密码区块链)模式,因此算法的空间复杂度和时间复杂度低,并与明文长度呈线性关系,可在较低硬件资源的情况下实现安全快速的散列。
具体实施方式:
下面结合具体实施方式和附图对本发明作进一步详细说明。
图1为现有的n维非线性数字滤波器结构框图。
图2为本发明n维复合非线性数字滤波器结构框图。
图3为混沌散列算法示意图。
图4为本发明算法在改变明文1比特后,散列结果变化比特数分布图。
图5为本发明算法的密钥sk敏感性测试Δλ-B曲线图。
实施例
下面结合附图和具体实施方式对本发明作进一步详细说明。
本发明的基于复合非线性数字滤波器的混沌散列构造方法,其一般做法是:
1)初始化:
图1示出:一个n维非线性自回归数字滤波器,可表示成
其中φ∈(-1,1)为滤波器的初始输入信号,{z1,z2,…zn}∈(-1,1)为滤波器初态,{c1,c2,…cn}为滤波器系数,T为单位时延,h(·)为非线性转移函数,mod(·)为硬件溢出函数,y为滤波器的输出。当滤波器满足Kelber条件,也即满足如下三个条件:①系数cn∈□,|cn|>1,{ci∈R,ci≠0|i=1,2,…n-1};②滤波器的特征根的绝对值不为1;③非线性变换h(·)具备均匀分布特性;则滤波器的输出y是遍历的且保持n维均匀分布,此时滤波器就成为一个n维混沌系统。取散列值的长度L≥128比特,待散列的明文为M′,用零填充后的明文为M,并使M的长度满足|M|=(||M′|/L|+1)L≌sL,(s≥2)。将M按长度L分组,记为M=(M1,M2,…,Ms),其中
2)散列值生成:
图2示出:①第一段明文M1的散列值生成:将H0与M1异或,得复合控制序列R1=M1H0={r0,r1,…,rL-1};第一次迭代时,取R1中序列r0r1…rp-1对应的十进制整数q,表示为q=(r0r1…rp-1)2,其中
②第二段明文M2的散列值生成:将①步最后一次迭代后的滤波器输出值yL作为本阶段滤波器的初始输入,并以①步生成的M1散列值H1与M2异或,得到复合控制序列R2=H1M2;以R2取代R1,然后用①步相同的方法,得到M2的散列值H2。
③第i段明文Mi的散列值生成:将第i-1段明文Mi-1最后一次迭代后的滤波器输出值yL作为本阶段滤波器的初始输入,并以第i-1段明文Mi-1的散列值Hi-1与Mi异或,得到复合控制序列Ri=Hi-1Mi;以Ri取代R1,然后用①步相同的方法,得到Mi的散列值Hi;
④重复③步过程,直至得到最后一段明文Ms的散列值Hs,并以此散列值Hs作为整个明文M的散列值H。
以上M1,M2,…Ms段明文的散列生成过程是一个分段级联迭代过程,可用图3的混沌散列算法示意图,描述为
实施例一
n=2维的非线性数字滤波器,系数库中预存k=2组系数,散列长度L=128情况下的混沌散列构造方法。
1)初始化:
n维自回归非线性数字滤波器,n=2,p=1,参数库预存k=2p=2组系数{c0=[3.57,4],c1=[5.7,7]},散列长度L=128比特,滤波器的初始值即密钥SK={φ0,z1,z2}={φ0=0.5648,z1=-0.564,z2=0.679},初始散列值
2)散列值生成:
①第一段明文M1的散列值生成:将
②第二段明文M2的散列值生成:将①步最后一次迭代后的滤波器输出值y128=-0.842作为本阶段滤波器的初始输入,并以①步生成的M1散列值H1与M2异或,得到复合控制序列R2=H1M2;以R2取代R1,然后用①步相同的方法,得到M2的散列值H2={00000011101110011100100011101011001001100111001000110110110111001000101111010110101100101000001000100010110001010001101111001011},十六进制表示为H2=03B9C8EB267236DC8BD6B28222C51BCB。
③因为本例s=2,M2即为最后一段明文,所以M2的散列值H2就是整个明文M的散列值H,H=H2=03B9C8EB267236DC8BD6B28222C51BCB。
以下将本实施例的初始密钥SK做细微变化,以分析说明初始密钥对散列结果的影响:
1)初始化:除系统密钥SK外,其他初始化参数不变。将初始密钥SK={φ0,z1,z2}={0.5648,-0.564,0.679}的密钥分量z1摄动10-16后,密钥变为SK′=φ0,z1′,z2}={0.5648,-0.564+10-16,0.679}。
2)散列值生成:
①第一段明文M1的散列值生成:迭代过程同实施例一的①步,迭代128次后得到系统的输出实数轨迹{yi}1128,量化为二进制序列作为M1的散列值H1,其十六进制表示为F361DA7AD9E820AF5443A479D8F75503,与实施例一的M1散列结果F2F77D491449E09DDD288A05C0FCA7FD相比,得到密钥变化后,M1散列结果中对应比特位发生变化的个数为61;
②第二段明文M2的散列值生成:将①步最后一次迭代后的滤波器输出值y128=-0.9672作为本阶段滤波器的初始输入,并以①步生成的M1散列值H1与M2异或,得到复合控制序列R2=H1M2;以R2取代R1,然后用①步相同的方法,得到M2的散列值H2,其十六进制表示为F1D21CC19500743EA2CDB51DFCAFB93B,与实施例(1)的M2散列结果03B9C8EB267236DC8BD6B28222C51BCB相比,得到密钥变化后,散列结果中对应比特位发生变化的个数为65;
③因为本例s=2,M2即为最后一段明文,所以M2的散列值H2就是整个明文M的散列值H=H2=F1D21CC19500743EA2CDB51DFCAFB93B;此结果表明,当密钥的z1分量发生10-16摄动时,128比特的散列结果中有65个比特发生翻转;用同样的方法进行测试,得到当z1的摄动值减少到10-17时,散列结果不变,因此算法对密钥分量z1的敏感度为10-16;用同样的方法得到密钥的z2分量的敏感度为10-16,φ0分量的敏感度为10-15。
由于滤波器能产生高维混沌序列,因此复合系统对初始状态的敏感性和迭代过程的随机性,使得散列结果与消息有着复杂而敏感的非线性关系,而且最后一轮的128次迭代,使得最终散列值的每比特都与消息M的所有比特有关,M的任何微小变化都将引起散列值的极大变化。若密钥SK={φ0,z1,z2}在精度允许范围内发生微小改变,复合系统的迭代过程将使差异不断放大,经过第一轮的迭代就可使差异大到足以影响散列结果,最终得到完全不同的散列值。从算法的描述可知,基于复合滤波器的混沌散列算法的安全性完全依赖于密钥SK,即迭代初始值。
实施例二
n=3维的非线性数字滤波器,系数库中预存k=4组系数,散列长度L=256情况下的混沌散列构造方法。
1)初始化:
n维自回归非线性数字滤波器,n=3,p=2,参数库预存k=2p=4组系数{c0=[2.53,-0.63,2],c1=[5.1,1.2,5],c2=[-3.64,4.23,3],c3=[0.75,3.24,4]},散列长度L=256比特,滤波器的初始值即密钥SK={φ0,z1,z2,z3}={φ0=0.5648,z1=-0.564,z2=0.679,z3=0.132},初始散列值
2)散列值生成:
①第一段明文M1的散列值生成:将
②第二段明文M2的散列值生成:将①步最后一次迭代后的滤波器输出值y256=0.8371作为本阶段滤波器的初始输入,并以①步生成的M1散列值H1与M2异或,得到复合控制序列R2=H1M2;以R2取代R1,然后用①步相同的方法,得到M2的散列值H2,H2={0101101000111101000011000110111011011000000101101101011010000011101001111000001011001001001001111110101101101001110010101010010000000100110101001110111010000111010101110101101011001010111000101111111101010001000111010110111001000110010101100100100001001101},十六进制表示为:H2=5A3D0C6ED816D683A782C927EB69CAA404D4EE87575ACAE2FF511D6E4656484D。
③因为s=2,M2即为最后一段明文,所以M2的散列值H2就是整个明文M的散列值H,H=5A3D0C6ED816D683A782C927EB69CAA404D4EE87575ACAE2FF511D6E4656484D。
本发明算法的性能分析及数字仿真验证:
在C、Java、Delphi和Matlab下分别对本发明方法进行了数字仿真,仿真结果基本一样。仿真时所有的参数设置同实施例(1),即滤波器维数n=2,p=1,系数组个数k=2,取值为{c0=[3.57,4],c1=[5.7,7]},散列长度L=128比特,滤波器的初始值即密钥SK={φ0,z1,z2}={φ0=0.5648,z1=-0.564,z2=0.679}。
定义:
为衡量本发明的散列性能,定义以下统计量:
变化比特数Bi:对初始明文进行散列,得到初始散列结果,然后任意改变初始明文的1比特信息后再进行散列,得到另一散列结果,统计两个散列结果相同位置的不同比特个数,称之为变化比特数;
平均变化比特数
平均变化概率
B的均方差
P的均方差
其中N为统计总次数,Bi为第i次测试结果的变化比特数。
算法的散列能力和稳定性分析:
理想散列算法的散布效果是初值的细微变化将导致散列结果的每比特都以50%的概率变化,若散列值长度为128比特,则改变明文1比特后的散列结果理想情况下的变化比特数应为64。测试方法为:在明文空间中随机选取一段明文进行散列,然后任意改变1比特明文后得到另一散列结果,比较两个散列结果得到变化比特数B。
图4为1024次测试时随机改变明文1比特后,散列结果变化的比特数分布。图的横坐标为测试次数,纵坐标为每次测试的散列结果变化的比特数B。由图可知,1024次测试下,128比特散列值的平均比特变化数B=63.861个,非常接近理想状况下的64。另外,B的最小值为47,最大值为82,且集中在理想值64附近,表明本发明算法对明文的散列能力强而稳定。
算法散列性能统计分析,分别统计了128,256,…2048次测试下Bi的最小值Bmin、最大值Bmax、平均值B、均方差ΔB、变化率P和变化率均方差ΔP情况,统计结果见下表。
表中数据表明,该算法的B和P都已非常接近理想状况下的64bit和50%的变化概率,相当充分和均匀地利用了密文空间,从统计效果来看,攻击者在已知一些明文密文对,对其伪造或反推其它明密文对没有任何帮助,因为明文的任何细微变化,密文从统计上来看在密文空间中都是接近等密度的均匀分布,从而得不到任何密文分布的有用信息,也难以找到碰撞的另一明文;而ΔB、ΔP标志着散列混乱与散布性质的稳定性,越接近零就越稳定,文中算法的ΔB、ΔP都已很小,因此算法对明文的混乱与散布能力强而稳定。
算法的快速性分析:
李文献中要求混沌映射是互补的,而满足此关系的混沌源相对较少,对于性能优良的混沌源,一般情况下其混沌方程较复杂,难以找到互补的对等方程;若使用滤波器,只需选取满足特定条件的系数即可,而这种系数的选取容易且数量多,若要提高序列的复杂度,只需增加滤波器的阶数即可;王和李在文献2、3中的混沌映射都涉及到复杂的浮点运算,而本发明总基于滤波器结构的算法简单快速;李在文献3中只能对明文逐比特运算,没有扩展能力。基于滤波器结构下,若提供2p组系数,对算法稍加改进就可对明文按p比特运算,成倍提高运算速度;即使两种算法都是按比特运算,文献3的迭代次数为2×L×(S-1),而本发明的算法为L×S次,当明文较大时(即分段数S较大),本发明算法的迭代次数只有李的一半,考虑运算的复杂度不同,本文算法具有更快的运算速度。很明显,与MD5和SHA相比,本发明算法迭代次数更少。
密钥空间分析:
为了考察密钥SK对散列结果的影响,定义Δλ为SK={φ0,z1,z2}中各分量的细微变化量,B为Δλ对应的散列值变化的比特数。图5为散列函数对密钥变化的敏感性Δλ-B曲线图。图中横坐标为密钥SK={φ0,z1,z2}各分量摄动量的负对数表示,纵坐标为相应分量摄动时对应的散列结果变化比特数B;测试时密钥分量各自按10-1的速率递减,考察密钥相应变化量下B的大小;当Δλ(φ0)=10-15时,B=64,当Δλ(φ0)=10-16时,散列结果不变,其变化曲线如图5中Δλ(φ0)-B所示,因此算法对输入初始值φ0的敏感度为10-15数量级。同理,可测得算法对滤波器初始状态z1、z2的变化曲线为Δλ(z1)-B,Δλ(z2)-B,的敏感度为10-16数量级。这说明算法对密钥高度敏感,在[-1,1]的实数范围内,密钥空间是很大的。
综上所述,本发明提出的新的混沌散列构造方法,充分利用了非线性数字滤波器软硬件实现简单,在特定情况下能产生性能优良的高维混沌序列的特点。通过采用分段自回归级联迭代方式,散列结果对明文和密钥的微小摄动呈现高度雪崩效应,且散列结果在散列空间中均匀分布,算法快速安全;基于滤波器结构,算法易于扩充和软硬件实现,可广泛用于电子商务中的数字证书、数字签名、数字信息的完整性保护等安全应用场合。
机译: 基于非线性操作的数据散列方法和装置
机译: 用于生成散列链的设备和用于产生散列链的方法,基于连续数据具有完整性
机译: 基于量子散列的多媒体指纹生成方法及其系统,特别是用于从多媒体文件中提取量子散列格式的指纹的系统