HASH算法安全性浅谈_常见hash算法

2020-02-28 其他范文 下载本文

HASH算法安全性浅谈由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“常见hash算法”。

HASH算法安全性浅谈

2011年12月,CSDN网站遭到黑客攻击,约600万用户的登录名、密码及邮箱遭到泄漏。随后,CSDN“密码外泄门”持续发酵,世纪佳缘、人人网、天涯社区等网站相继被曝出用户数据遭泄密,大量的用户账号和密码被公开,数量超过5000万。此次密码泄漏堪称近年来国内规模最大的网络安全事件。

事后,密码明文保存被认为是此次事件的“罪魁祸首”。当前,互联网越来越进入人们的生活。用户访问各种网站,在注册的时候需要输入用户名和密码,在仅仅考虑功能的前提下,可以把用户名和密码以明文的方式存储在数据表中。当用户登录时,直接将用户输入的明文密码与数据库中的密码进行比对,如果相同则授权用户登录。

明文密码保存方式在实现上非常简单,但面临的问题也很明显,那就是没有任何安全防护机制。任何有权读取或以某种方式获得数据库的人都可以获取所有用户的密码。因此我们需要一种即使数据文件被窃取,窃取者也不能获得用户密码的方式。

现在网站已经基本不再使用明文密码保存的方式,而是在数据库中保存散列算法处理的结果。通过HASH散列函数的方式,可以有效的降低密码泄露的风险。HASH散列函数是把输入的密码数据通过特定的算法处理后,输出为一个固定长度的字符串。这样,当用户输入密码时,直接将该密码代入散列算法得出散列结果,再与保存的数据对比,相同则允许登录。如“abc”经过MD5散列之后,结果为

“900150983CD24FB0D6963F7D28E17F72”,将这个字符串保存到数据库中替代密码明文。通过HASH函数的处理,即使密码数据库文件被窃取,窃取者也不能直观的获取到账号的密码。

HASH散列函数的特点是单向性,即由输入数据可以得到确定的输出字符串,但从输出的字符串反向获取输入数据的难度很大,几乎是不可能做到的。

目前常见的散列算法有MD5和SHA1。MD5的输出是128位字符串,SHA1的输出是160位字符串。还有更复杂的SHA256,SHA512,其输出分别是256位和512位。输出结果的长度越长,HASH函数的安全性就越高。

当前HASH散列算法最大的安全隐患就是字典攻击。所谓字典攻击,即根据密码所使用字符范围及密码长度穷举出所有可能的密码,对这些密码进行HASH处理,把HASH值保存在数据库中,一旦获得用户密码HASH值,将其与数据库中的HASH值进行对比,就可以快速的找到明文密码。

对抗字典攻击的办法主要是限制密码最短长度,扩大密码字符组成,采用更长位数的HASH散列算法。这些都可以增加攻击者生成字典的时间成本和经济成本。

个人认为还可以参照3DES加密算法,采用多重HASH算法,即对HASH值再进行多次HASH处理,这样也可以增加攻击者破解难度。但在各种资料中,尚未看到有人有提到此种方法,不知何故。

上述方法都是不断增加攻击者的难度,但随着现在计算机的计算

速度和存储能力的不断提高,攻击者破解的时间、经济成本都在不断降低,因此这些方法都不是永久有效的。

2004年,山东大学王小云教授公布了利用差分技术实现对HASH算法的碰撞攻击,随后又公布了碰撞攻击的详细原理过程。MD5、SHA-1是当前国际通行的两大密码标准。MD5由国际著名密码学家图灵奖获得者兼公钥加密算法RSA的创始人Ronald L.Rivest设计,SHA-1是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)与美国国家安全局(NSA)设计。两大算法是目前国际电子签名及许多其它密码应用领域的关键技术,广泛应用于金融、证券等电子商务领域。

王小云教授的碰撞攻击算法,具有非常重要的理论意义,对密码学的发展具有极大的推动作用,为HASH函数的密码分析学开辟了一条新的道路。碰撞算法从理论上表明了电子签名可以伪造,必须及时添加限制条件,或者重新选用更为安全的密码标准,以保证电子商务的安全。这一成果说明了MD5和SHA1已经不能用作身份验证或数字签名,另外在理论上说明了数字摘要算法用于数据的完整性鉴别具有先天缺陷。但另一方面,由于方法上的限制,要构造具有特定语义的碰撞攻击几乎是不可能的,因此并不是所有采用MD5等算法的应用都彻底失效。在实际中,MD5和SHA1算法经常与其它算法一起使用,或者进行了很多变形,简单地找到MD5碰撞对并没有实际性的威胁。

同时,她的研究成果也给其他研究者以极大的参考价值,后续研究者在其基础上,不断推出新的研究成果。2005年3月,用笔记本

在几个小时内找到MD5碰撞;2006年3月,用笔记本在1分钟内找到MD5碰撞;2007年12月,用Chosen-Prefix Collision,伪造出了符合X.509标准的数字证书;2008年12月,利用MD5碰撞,创造了一个假的来自可信CA的数字证书。因此,寻找MD5 碰撞的算法的时间、空间复杂度都已降至实用水平。但从实践角度,不同信息具有相同MD5值的可能性还是非常低的,通过碰撞的方法也很难碰撞出复杂信息的MD5值。现在MD5破译技术的研究者们正重点研究MD5碰撞的实际应用。

为了防止网络监听及重放攻击,在网站登录过程中,通常还使用干扰字符串,即在用户登录时,服务器随机生成一段前缀或后缀字符串,浏览器将用户的密码HASH处理后,再加上干扰字符串,再HASH处理一遍,再提交给服务器。干扰字符串是随机生成,用过一次即失效,因此即使登录过程中HASH值被截取,也无法再次使用其来登录。

如果需要更安全的算法,建议使用SHA256或SHA512。目前还没有出现针对SHA256,SHA512算法的有效碰撞攻击方法。该算法可以是MD5及SHA1的不错的后继者。

总之,HASH算法是在不断被破解的过程中,不断改进的。所谓“魔高一尺,道高一丈。”其安全性也是在不断提高的。当前主流的MD5和SHA1正在改为SHA256和SHA512。或许以后还会有更复杂的HASH演进算法,甚至更高级的密码处理算法,我们都拭目以待。

对于碰撞攻击的实际应用研究,我们也持续关注。王小云教授的差分碰撞攻击算法,虽然里面没有太高深的数学算法,但过程还是很

复杂繁琐的,有兴趣可以参考其原始论文,仔细研读分析。碰撞攻击的后续研究成果也有很大的参考价值。论文列举如下:

Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD; How to Break MD5 and other Hash Functions;

Finding Collisions in the Full SHA-1;

Finding MD5 Collisions a Toy For a Notebook;

Tunnels in Hash Functions MD5 Collisions Within a Minute; Efficient Hash Collision Search Strategies on Special-Purpose Hardware;

Chosen-prefix Collisions for MD5 and Applications;

Fast Collision Attack on MD5。

《HASH算法安全性浅谈.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
HASH算法安全性浅谈
点击下载文档
相关专题 常见hash算法 浅谈 算法 安全性 常见hash算法 浅谈 算法 安全性
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文