[发明专利]抗查表攻击的随机单向哈希函数构造方法有效
申请号: | 201210020150.X | 申请日: | 2012-01-29 |
公开(公告)号: | CN102546159A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 王勇 | 申请(专利权)人: | 王勇 |
主分类号: | H04L9/28 | 分类号: | H04L9/28 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 541004 广西壮族自治区桂林市*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 抗查表 攻击 随机 单向 函数 构造 方法 | ||
技术领域
本发明属于信息安全领域,涉及一种单向哈希函数的构造方法,特别是基于随机函数的单向哈希函数的构造方法。
背景技术
现有的hash(又译为哈希、杂凑、散列)函数具有固定的结构和函数,这为密码分析提供了便利。对于hash函数H=Hash(M),一般通过M计算H容易,而通过H求对应的一个或者多个M是非常困难的,在有限的计算能力下往往需要很长的时间。不过近年来王小云破解了一系列的hash函数。2004年,2005年,王小云带领的研究小组先后破译了被全球广泛运用于计算机安全系统的MD5和SHA-1两大密码算法,引起国际密码学界的极大关注和高度赞誉。对于一个固定的函数,要保证这种单向性是比较困难的,因为原则上说可以根据hash函数的结构进行逆推(虽然它是单向的,原文和hash值是多对一的映射关系,但是在借助一些数学方法和计算工具的情况下,可能进行成功的逆推,这提供了一个破解的入口),需要将算法设计的非常复杂。假如一个hash函数的算法是随机的、不确定的,则密码分析者很难着手。与传统的确定函数相对,我们这里提出随机函数的概念,即这个函数的表达式、结构和形式是随机的,不确定的,比如随机函数y=F(a,b,c),F(a,b,c)并没有明确的形式,它的具体形式可能是f1(a,b,c)、f2(a,b,c)、f3(a,b,c)、f4(a,b,c)之中的一个函数。
除了技术性的攻击,现有的一些蛮力攻击也是非常有效而且现实的,比如查表攻击可以很快破译一些hash函数,比如现在的一些hash函数的消息和hash值的对应关系,已经被一些黑客制作成了彩虹表,将所有的hash值对应的一个或者多个明文都保存在一个表中,并且进行检索排序,这样黑客只需要查找即可找到碰撞或者原来的明文,一些网站也提供了部分或者全部hash函数的破译。固然,提高hash值长度是一个解决方法,但是,这为用户带来了不便,比如,需要记忆、存储、记录很长的hash值,需要比较很长的值。本发明利用随机函数来构建随机的hash值,hash值是随机的,由一个公开参数P确定,由于hash值随机,这样不仅能够抵抗技术性的攻击,而且,也增加了查表和蛮力攻击的难度。这样的算法并没有直接依靠增加hash值长度和计算量来增加查表攻击和其他破译的难度。
发明内容
本发明采用随机函数来构造hash函数,虽然本发明中hash算法是不确定的,hash值也是随机的,但是,在一般的情况下,为了达到验证的目的,明文一定时候,算法和hash值应该是确定的,为了解决这个问题,我们设定hash函数与一个公开参数和明文输入的相关性,当公开参数和输入明文是确定的时候,hash函数的形式也是确定的,在已知明文和公开参数的条件下,hash函数是确定的,即hash函数由明文以某种方式确定,但是当公开参数不确定的时候,hash值也不确定,这给查表攻击带来了一些障碍。
我们假设随机hash函数是D=H(m),H是随机的,m是函数的变量输入,借鉴传统的确定性的hash函数的特点,在采用随机函数的hash函数中,明文除了要决定hash函数的具体形式hi(m)外,还作为D= hi(m)算法的输入m。决定hash函数具体形式的明文部分和作为参数m输入hash函数的部分应该是高度相关的,这样的设计是为了防止密码分析者各个击破,因为对于这样的hash函数,先确定函数后,再寻找合适m的过程中,m的变换也会导致函数的变化,无法同时满足。在本发明中需要将它们的关系设计的非常复杂,使得很难破解。明确地说,就是设计的时候,需要将明文的尽量多的比特数都同时参与决定函数形式和m,那么将明文的全部用于决定两者是最为合适的,考虑到现有的hash函数的形式均需要进行填充,所以本发明中将填充处理后的明文分组的用于决定hash函数形式和m。
鉴于MD5、SHA-1已经被王小云破解,而这些hash函数都存在单bit位运算较多,缺乏像S盒之类的多bit的操作,因此,安全的hash应该采用S盒以及类似的多bit混淆的运算。
对于hash函数的构造,有多种方法,比如采用压缩函数和借用分组密码方法。本发明采用压缩函数的方法。
具体的hash函数构造方法为:
第一步,确定压缩函数每一次处理的消息分组长度L。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于王勇,未经王勇许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210020150.X/2.html,转载请声明来源钻瓜专利网。