当前位置: 首页 > 专利查询>王勇专利>正文

基于随机函数的单向哈希函数构造方法技术

技术编号:7481063 阅读:239 留言:0更新日期:2012-07-05 06:18
本发明专利技术属于信息安全领域,特别是密码学领域,涉及一种构造基于压缩函数的单向哈希函数的方法。该方法以随机函数作为作为哈希函数,确切地说是用随机函数作为压缩函数,即压缩函数本身是不确定的,有多种可能的具体函数形式,在计算的时候由明文消息确定函数的具体形式。这种方法构造的hash函数给破译带来了多方面的障碍,伪造的明文不仅要符合传统确定性hash函数的要求,而且要求明文对应的确定随机hash函数的具体函数形式的确定编码应该是对应的。现有的密码分析一般针对确定的hash函数,当密码分析者在仅仅只知道hash值的情况下,破译将会更加困难,由于不知道随机函数的具体的函数形式,采用一般的破译方法会无从下手。

【技术实现步骤摘要】

本专利技术属于信息安全领域,涉及一种基于随机函数的单向哈希函数的构造方法。技术背景现有的hash (又译为哈希、杂凑、散列)函数具有固定的结构和函数,这为密码分析提供了便利。对于hash函数H=Hash(M),一般通过M计算H容易,而通过H求对应的一个或者多个M是非常困难的,在有限的计算能力下往往需要很长的时间。不过近年来王小云破解了一系列的hash函数。2004年,2005年,王小云带领的研究小组先后破译了被全球广泛运用于计算机安全系统的MD5和SHA-I两大密码算法,引起国际密码学界的极大关注和高度赞誉.对于一个固定的函数,要保证这种单向性是比较困难的,因为原则上说可以根据hash函数的结构进行逆推(虽然它是单向的,原文和hash值是多对一的映射关系,但是在借助一些数学方法和计算工具的情况下,可能进行成功的逆推,这提供了一个破解的入口),需要将算法设计的非常复杂。假如一个hash函数的算法是随机的、不确定的,则密码分析者很难着手。与传统的确定函数相对,我们这里提出随机函数的概念,即这个函数的表达式、结构和形式是随机的,不确定的,比如随机函数y=F(a,b,C),F(a,b,C)并没有明确的形式,它的具体形式可能是f\(a,b,c)、f2(a,b,c)、f3(a,b,c)、f4(a,b,c)之中的一个函数。 注意到我们这里的随机函数指的是具有随机性的函数,现在一般在计算机领域将产生随机数的函数也称为随机函数。
技术实现思路
鉴于确定的函数给予密码分析者明确的靶子,从而影响安全性。由此,本专利技术应用随机函数来设计hash函数。注意到,虽然本专利技术中hash算法是不确定的,但是,在一般的情况下,为了达到验证的目的,明文一定时候,hash值应该是确定的,为了解决这个问题,我们设定hash函数与明文输入的概率相关性,当输入明文是确定的时候,hash函数的形式也是确定的,在已知明文的条件下,hash函数是确定的,即hash函数由明文以某种方式确定。我们假设随机hash函数是D=H(m),H是随机的,m是函数的变量输入,借鉴传统的确定性的hash函数的特点,在采用随机函数的hash函数中,明文除了要决定hash函数的具体形Shi(Hi)外,还作为D= h^m)算法的输入m。那么决定hash函数具体形式的明文部分和作为参数m输入hash函数的部分可以是相关的,也可以是独立的,比如取明文的一部分决定h (m),取明文的另外一部分作为m。假如两部分是独立的,则密码分析者容易被各个击破,比如先确定函数,在寻找合适的m ;相反,如果两部分是关联的,则采用上述方法无效,因为先确定函数后,再寻找合适m的过程中,m的变换也会导致函数的变化,无法同时满足。因此,两者是关联的情况下才更加安全,而且在本专利技术中需要将它们的关系设计的非常复杂,使得很难破解。明确地说,就是设计的时候,需要将明文的尽量多的比特数都同时参与决定函数形式和m,那么将明文的全部用于决定两者是最为合适的,考虑到现有的hash函数的形式均需要进行填充,所以本专利技术中将填充处理后的明文的全部用于决定hash函数形式和m。类似于我们上面的分析,在密码分析时候,hash函数的不同部分数据的关系越独立,则越容易各个击破;如果关联性很好,则试图各个击破的时候,就会出现这个击破,那个又不满足的情况。因此,设计的时候,需要让数据高度的关联、广泛的扩散,为了让这些扩散和关联不泄露信息,又需要高度、快速的雪崩效应。这里的雪崩效应指的是密码学中的一类效应,而不是经济学中的。雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化,明文的Ibit的变换引起密文一半 bit的改变,同样密钥的Ibit的变换引起密文一半bit的改变。对于Hash函数,雪崩效应是指少量消息位的变化会引起hash值的许多位变化。从以上的角度,考虑技术性的密码分析,hash值长度越长,也可以设计的越安全,因为要伪造同时满足更长的hash值的消息更困难。鉴于MD5、SHA-I已经被王小云破解,而这些hash函数都存在单bit位运算较多, 缺乏像S盒之类的多bit的操作,因此,安全的hash应该采用S盒以及类似的多bit混淆的运算。对于hash函数的构造,有两类常用的方法第一类最常用的方法,是采用压缩函数对数据进行反复的分组压缩;第二类是借用分组密码的某些模式产生hash值。其他的一些方法,包括利用公钥密码算法的,并未得到广泛研究与应用。本专利技术采用第一类的方法, 即采用压缩函数。具体的hash函数构造方法为第一步,确定压缩函数每一次处理的消息分组长度L。第二步,设计填充和附加长度信息的方式,对消息进行填充,由于hash需要有确定的结果,所以,填充的方式应该是固定的,对于一个消息,只能有惟一的填充方式,对于填充,应该能够很容易确定填充的区域,由于填充长度本身是不确定的,所以,可以采用以下两种方式第一种,如果消息长度不是nL-f,则第一位填充0,随后所有bit都填充1,或者相反,采用这种方式,除了消息长度刚好是nL-f形式的情形,很容易确定填充内容,填充的长度也是确定的,将其填充到nL-f,如果长度为nL-f,则不填充,η为符合该条件的最小整数,f是一个固定的值,小于L,f是预留用于附加消息长度的,其长度以能够满足大多数的消息和文件的长度不超过2f,同时也不要太长为标准;第二种,如果消息长度不是nL-f,则采用上述的填充方式,如果消息长度为nL-f形式,则在后面填充一个L长度的消息,即填充后的长度为(n+l)L-f,依然是第一位填充0,随后所有bit都填充1,或者相反。根据消息的长度和填充的规则都可以确定填充的长度,两者应该是相等的,这样可以进行校验,也给伪造和破译设置了障碍。附加消息长度的方式为当消息的长度的二进制值超过f时,取末尾的f bit,当长度不及f时,在前面附加填充0,最终经过填充和附加后的消息成为分组长度L的倍数。由于有两种数据存储方式,LITTLE-ENDIAN和BIG-ENDIAN,应该根据机器类型选取最为合适的一种来表示填充前的消息的长度。第三步,设定hash值的长度,考虑彩虹表之类的攻击,除非特别需要便利而不太需要安全的场合,长度值η应该大于160bit。第四步,确定hash的初始值,这个(这些)值是确定的,总长度为η。选择数据的存储方式,一般应该和消息长度的存储方式相同。第五步,设计随机的压缩函数H,压缩函数是hash函数的最关键部分,它的输入是前一个hash值或者是hash的初始值,输出为中间hash值或者最终hash值。本专利技术如前面说讨论的,为了达到较好的扩散和混乱效果,应该采用S盒或者类似的多比特代替部件。S盒的设计原则同对称密码学中的S盒设计是一样的,比如速度快,最好可以用运算表示(而不是查表),有比较好的雪崩效应、扩散效果、差分均勻性,但是无需要求可逆性。一些公开标准算法的S盒都经过分析与测试具有很好的效果,可以择优直接使用,并且无需考虑是否可逆(因为hash函数值只是用于验证,无需解密)。随机压缩函数构造可以考虑借鉴现有的对称密码和hash函数的构造方法。独特之处在于,一些部件可以采用随机的函数, 比如随机S盒可以有多个S盒、循环移位的位本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王勇
申请(专利权)人:王勇
类型:发明
国别省市:

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

1
相关领域技术