10月25, 2009

密码至少6位和md5暴力破解

现在的互联网网站,几乎都有注册的功能。在注册的时候必不可少的两项就是用户名和密码了。用户名的组成形式多种多样,如:昵称、邮箱、手机号等等。本文主要讨论的用户密码问题。

注册表单中密码简单的文案提醒

90%以上的注册网站,在你注册的时候,你会发现你需要提供至少6位的密码。那这里为什么是6位,而不是5位或者7位或者是其他的呢?大家应该都知道,密码长度是判断一个密码是否过于简单一个重要的因素,密码是否简单决定着你的密码安全问题。在很多网站上,你都会发现有不要把密码设置的过于简单的提示文案。如:百度的注册页面。 baidu-reg-password

密码组合字符和组合结果

那么什么样的密码才算是安全的呢?密码越复杂当然越安全,但是密码过于复杂的话就很难记住,一旦忘记了再次想起的成本就很高。

首先我们来看下密码可以有哪些字符组成。a-z(小写)26个字符,A-Z(大写)26个字符,0-9(数字)10个数字字符,`~!@#$%^&*()-_=+[{]}|;:'",<.>/? (特殊字符)31个特殊字符。所以密码可以从这93个字符中选择。

过于简单的密码(即只含有小写字母和数字)。

密码是1位:结果为36的一次方,即36 > 3*10^1种可能。

密码是2位:结果为36的2次方,即1296 > 1*10^3种可能。

密码是3位:结果为36的3次方,即46656 > 4*10^4 种可能。

密码是4位:结果为36的4次方,即1679616 > 1*10^6 种可能。

密码是5位:结果为36的5次方,即60466176 > 6*10^7种可能。

密码是6位:结果为36的6次方,即2176782336 > 2*10^9 种可能。

复杂密码(即包含所有字符)。

密码是1位:结果为96的一次方,即96 > 9*10^1种可能。

密码是2位:结果为96的2次方,即9216 > 9*10^3 种可能。

密码是3位:结果为96的3次方,即884736 > 8*10^5种可能。

密码是4位:结果为96的4次方,即84934656 > 8*10^7 种可能。

密码是5位:结果为96的5次方,即8153726976 > 8*10^9 种可能。

密码是6位:结果为96的6次方,即782757789656 > 7*10^11种可能。

从这里列出来的结果上看,你可能认为4位应该就安全了。关于是否安全在后文中讲述。

密码被盗取的途径

1、密码过于简单被人直接试出来的。

2、XSS跨站攻击获取COOKIE中保存的MD5、 SHA1或其他方加密方式加密后的字串。

3、所在服务器被攻击,获取数据库中加密后的密码。

4、网络被人监控或电脑中病毒,直接获取HTTP明文传输时的密码。

如果是第4种情况的话,密码设置的再复杂都是没用的。只有杀毒或者其他办法了。

也许你会觉得我在这个网站上的信息不重要,觉得无所谓。但是一般性的情况下,每个人在网站上的注册密码就几个。得到了这个密码,就能在很多网站上登录你的账户,这可是非常危险的。

MD5暴力破解

这里为什么是暴力破解?我们知道MD5的加密方式是不可逆的,也就是说没有对应的解密算法。这里引出一个额外的话题,王小云在2004年宣布成功破解md5算法。既然是不可逆的,为什么还能破解呢?我们知道md5加密后的字符串是32位的,每位是0-9,a-f中任一个字符。也就是说md5加密后的字符串有32的16次方中可能,虽然这是一个很大的数,但却是个有限的数。很大的数和无线大的数还是有本质的区别的。既然md5加密后的字串是有限的,那么当然能够找到另一个密码加密后与当前密码加密后是相同的了。

什么是MD5暴力破解呢?就是通过程序将密码和加密后的字串写到数据库中,破解的时候进行反查询就可以了。到这里你可能会想到“天啦,那不是什么密码都能破解了吗?”。

我们看看数据库中的存储空间问题。为了简化,我们忽略原始密码所要的存储空间,只计算加密后的字串所占的存储空间。也就是一条记录需要32字节的空间。

简单6位密码所要的存储空间,即32210^9字节 > 610^10B = 610^7KB = 610^4MB = 610^1GB = 60GB。

复杂6位密码所要的存储空间,即32710^11字节 > 210^13B = 210^10KB = 210^7MB = 210^4GB = 20TB。

目前MD5暴力破解状况

http://www.cmd5.com/

实时查询记录超过7500亿条,占用16T硬盘,已包含11位及11位以下数字、8位小写字母、7位小写字母加数字、6位大小写字母加数字、大量其它数据等组合。每条破解时间0.006秒。

本站后台分布式破解,可破解范围更广,成功几率更大。一屋子电脑实时计算,产生了大量的噪音和电费,可破解12位数字、9位小写字母加数字、8位大小写字母加数字、7位任意字符等。单条破解时间为数分钟到1小时不等。 从上面可以看出,6、7位的简单密码差不多都可以破解出来了。

跳过导航链接

后记

从目前的破解情况来看,6位密码相对还是较安全的。但最好不要设置的太简单。如:纯数字、英语单词等。

如果你希望你的密码可以“永远”安全,那么最好设置成9位以上的,并且是大小写字母,数字和特殊字符的组合。因为9位复杂密码组合为:96^9 = 692533995824480256 > 610^17 。要占用610^5TB的空间。在存储空间和运算能力上,最近些年几乎是不可能的。

本文链接:http://welefen.com/post/password-6-letter-md5-decode.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。