前两天我打开邮箱一看,收到公司1331一封要求修改邮箱密码的邮件。为什么我们需要一个复杂的密码呢?虽然我一直以来设置的密码都很复杂,但是公司这次要求修改密码的邮件激发起我的好奇心,我想试试究竟什么样的密码才算安全?
常见密码破解方式有两种,一种是字典式破解,一种是暴力破解。以前电脑处理器速度较慢,内存也很小,因此为了加快破解速度,黑客常用字典式破解。所谓字典式破解就是首先将常用的密码、英文单词、中文拼音等存储在一个文本文件里,然后采用程序挨个测试,一旦通过则停止。常见的密码有admin、1234、pass1234、password、888888、518518等等。例如有人将银行卡密码设为“888888”或者“999999”等所谓吉祥的数字组合,如果有人盗了你的银行卡,去ATM机测试几次,很快就能将您银行卡里的金额全部转走。另外一种是暴力破解。当字典式破解不成功后,黑客就会采用暴力破解。所谓暴力破解就是将数字、字母等各种进行穷举,挨个测试。与字典式破解不同的是,暴力破解的数据量通常相当大。以8位纯数字密码为例,暴力破解的数据量达到1080,即一亿组密码,而包含数字和字母组合的,暴力破解的数据量达到368,大约2.8万亿组密码,而如果是区分大小写字母的密码组合则达到628组,大约218万亿组密码。密码每增加一位,密码组合则曾几何级数增长。
最近在船上时间比较多,于是我用Ruby写了一小段程序,模拟了一下密码破解所需要的时间。我测试程序所用的笔记本处理器是Intel Core i5 2.4GHz,内存为8G 1600MHz。为了模拟真实的使用环境,我的测试方法是首先随机生成一个纯数字的8位数密码,然后利用程序模拟暴力破解密码。经过几次测试,破解8位纯数字密码的平均速度为2分半钟左右。所以您的密码如果是由等于或低于8位的纯数字组成,即便加上网络延时,破解时间也不会超过一个小时。
公司IT部门建议的密码为:PaSs1234或p!ss1234或Pass!$#%。对于暴力破解来说第一个,即PaSs1234则共有2.8万亿组密码,但是对于字典破解来说,可以尝试pass和1234的组合,如Pass1234、Pass1234、PaSs1234很容易猜解。第二个密码,p!ss1234,虽然只是将a换成感叹号,但是因为这个p!ss不属于单词,而且“!”通常会与“~!@#¥%……&*”等一起列为特殊符号,所以这样类似的密码组合至少有408种,即256万种组合,配合字典破解所需时间不会超过10分钟。最后一种密码,前面可以配合字典破解,后面4位用暴力破解,大约有2700万组,破解难度就非常大,而且也需要一定的技巧。
那么什么样的密码才安全呢?当然是越长、越复杂越安全。但是太复杂、太长的密码不仅难记,用起来也不方便。对于上网常用的密码,因为网站采用了限制登录次数以及使用验证码的方式避免了暴力破解式的攻击,所以您可以根据自己的情况,用数字、密码、特殊字符等共同组成,如rNh#4915*。