胡方禄
摘要:该文介绍了现在用户口令的破解方式,及如何避免口令被破解的解决方法。
关键词:MD5;SHA;加盐;破解;安全性
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)13-0040-01
MD5和SHA算法在信息安全及数字认证中的应用十分广泛,其实质就是一种HASH算法,均来源于MD4算法,HASH算法的特性是具有不可逆的特性,确定性,溃散性,不可逆值根据HASH算出来的值,是不能倒推出输入的值,确定性是指:如果两个HASH值是不相同的,那么这两个HASH值的原始输入也是不相同的;碰撞性指,HASH的输入和输出不是一一对应的,如果两个散列值相同,两个输入值很可能是相同的,但并不能绝对肯定二者一定相等,这就是碰撞。溃散性指输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的HASH会产生一个完全不同的散列值。但是MD5的碰撞性是相当低的,大约是1.84*1019之一,这个概率几乎就是不可能的发生的,所以,现在广泛的使用该技术作为数据传输,中途是否被修改的的判断,作为密码的加密方式存储;还作为数字认证。
我们用SHA来分析,使用该算法生成的用户口令的安全性:
1)王小云教授已经破解了MD5,有人说在2004年山东大学王小云教授已经破解了MD5的算法,实际上王小云教授并没有破解MD5算法,而是一种已知某个铭文,再通过该明文增加一些内容生成一个MD5值,使得这两个值相等,我们知道如果别人已经知道了我们的密码,那根本就不用破解了;
2)大家在网上随便一搜,都能搜到很多破解md5,sha1,sha256,sha512等的网站,大家一测试,还真的就破解出来了,这个是不是就说明,现在用md5,sha256,sha512等运算出来的密文,真的不安全了吗,其实不是,你可以自己测试一下,把你的密码设置的复杂一点,位数多一点,再到那些网站上试,它就破解不了了,为什么呢,其实很简单,这些网站把很多的排列组合用md5、sha256,sha512运算出一个hash结果,然后存到数据库内,你输入的hash结果,它就到数据库中去查询,一旦查到复合的条件,就把结果返回给你,所以这个不能叫破解,这相当于,一个个去试,当我们设置的密码足够长、复杂的时候,那些网站的数据库是很难存下1.84*1019条数据的,如果我们是用sha256甚至sha512的时候,那那个破解网站的数据库要有3.4*1038和1.16*1077大才行,那个不是现在的计算机所能存储的下来的。
3)获得hash值后,用穷举法去一个个试,理论上还是能够行的通的。对于这种方式理论上确实能够行得通,但是我们可以用“加盐”的方法,使得用户输入的简单密码,强制性的变得复杂,同时,就算黑客获得了hash值,用穷举的方法取得了这个hash所对应的明文,但是,当黑客用这个明文作为用户的密码输入时,还是不能正常登陆,因为他输入的明文还要在我们的程序内“加盐”后再进行hash运算,所以得到的结果还是与数据库里存储的hash值不符,所以一样进不了系统。
4)黑客利用社会学等来研究用户的密码,这种情况的话用户最好使用没有规律的字母、数字、特殊符号作为密码,而且尽量长一点、分好大小写,不要使用姓名的拼音、英文单词、电话号码、生日等这些东西作为密码;杜绝从用户角度去猜密码的可能性。
5)用户对密码的保存,最好的方式是写在记事本上,也不要放到电脑里面,电脑被黑客攻击后,很可能会获得这些资料。
6)密码最好是一个账号对应一个密码。但是现在很多人都有许多的账号如:QQ、微信、淘宝、京东、各个银行、各个论坛、邮箱等等,密码多了,自己也记不住,那就建议根据安全级别不同,分别设置不同密码,如各个银行、支付宝等设计财产的设置一个搞复杂度的密码;通信类的邮箱、QQ等设置一个比较复杂的密码;其他各种娱乐性论坛就可以设置一个相对简单的密码,绝对不能所有账号的密码都是一样的,那样的话,有的小网站的论坛密码一旦被人窃取,就可能威胁到你的银行、支付宝等的密码。
参考文献:
[1] 黄毅,杨朔,陈进原. C# WindowsForm编程中MD5加密的设计与实现[J].计算机时代,2013(6).
[2] 王志中.MD5算法在口令认证中的安全性改进[J].电脑知识与技术, 2012(1).
[3] 董明明.MD5验证技术讨论和改进设想[J].电脑知识与技术,2012(2).
[4] 祝彦斌,王春玲.一种Hash特征隐藏的加盐信息摘要模型[J].计算机技术与发展,2013(3).