前不久国内几个大网站数据库泄露,造成用户信息丢失(参考)。同时还揭露出这些大网站使用明文而不是按照惯例加密存放用户密码。这几天又爆出六百万 LinkedIn 哈希加密密码泄露的新闻。然而,虽然 LinkedIn 的用户密码采用了加密存储,可一些有心的研究人员还是通过比对破解了部分经过加密的密码。
一位匿名黑客在俄罗斯黑客论坛宣称入侵了 LinkedIn,获得了八百万用户帐户信息。他随后上传了六百多万个使用 SHA-1 哈希加密的密码。LinkedIn 官方博客已经证实部分用户密码泄露,表示正在调查。
Hacker News的一位用户指出,有三百多万个哈希加密密码开头字符是 00000,他推测它代表着黑客已经破解了这些密码。由于 LinkedIn 要求至少使用六个字符,这次泄露事故中常见的密码包括 123456、1234567 和 12345678,以及如 ihatemyjob、nobama、iwantanewjob、strongpassword、linkedin 等复杂度(安全性)低的密码。
将密码从哈希值翻译到原始字符并非易事,需要破解工具和强大的图形处理器,以及耐性和时间。密码越长,破解的时间越长。然而人们采取的方法却很简单:猜一个密码,生成它的 SHA1 哈希值,搜索泄密密码哈希数据库,寻找是否匹配,如果匹配,则该密码是一个有效密码。
Qualys 公司首席工程师 Francois Pesce 利用开源密码破解工具 John the Ripper 去尝试破解最近泄漏的 LinkedIn SHA1 加密密码。他首先使用默认的字典,包含不到 4000 个单词,在一台没有显卡的旧电脑上运行破解程序,结果在 4 小时后就破解了 90 万常见密码。接着,他尝试不同的旧字典去发现不常见的密码,最终破解了 200 万加密密码。
Utah Valley University 的计算机安全兼职教授 Kevin Young 认为,黑客肯定已经破解了容易的部分,剩下的应该都是难啃的(大约两百多万)。Young 的团队利用经典名著中的单词字符串组合去尝试暴力破解。他编写了一个程序,从《双城记》、《战争与和平》、《野性的呼唤》和《绿野仙踪》中提取出单词,创造短语和单词组合,如 lionstigersbears 和 ihavebeenchangedforgood,生成哈希码,两者都匹配上了 LinkedIn 的哈希码。截止到他们发表文章为止,他们的程序共破解了五万 LinkedIn 哈希加密密码,而这些加密密码对应的明文都很复杂,如前例。
LinkedIn 泄露的密码虽然经过加密,但是并未经过盐化处理(Salt)。安全专家认为未盐化的密码比明文没好多少。人类不擅长挑选和记录强密码。假如一个系统有许多用户,那么很有可能会有多位用户使用相同的密码,而相同的密码通常意味着是弱密码。如果攻击者在数据库里看到了这些相同的哈希加密密码,他们完全可以对其进行暴力破解尝试。这个问题早在三十年前已经解决了:为了确保数据库储存的密码不相同,系统可以随机选择一个数字或字符盐化。因此相同的密码不会有相同的哈希值,而攻击者如果要发现随机数或字符生成模式,他将需要暴力破解大量密码。
但是否盐化是服务器端的事情,我们无法控制。所以只好设计属于自己复杂模式密码来避免被暴力破解,或者被使用类似上面的方法比对出原始密码。好在人脑有自己独特的优势:个体差异和模糊控制。
下面根据我的经验分享一个设计自己独特密码的方法:我们可以通过自己考虑一个独特的模式来设定自己的密码,比如分段式:
(第一段)(特殊字符串1)(第二段)(特殊字符串2)(第三段)
- 我们可以在第一段中使用标志所注册网站的字符串,例如:cnzhx.net 或 cnzhx
- 然后加上一个特殊字符串1,例如:*&
- 第二段使用自己的标志,可以在不同的网站密码中使用相同的这一段,例如:HaoxianZeng 或者 zhx123
- 然后接着另一个特殊字符串2,例如:=$
- 最后再弄个第三段,例如:xyz 或 001
当然上面仅仅是举个例子,我们需要设计自己的模式,防止被人脑猜测出来(或者仅仅是猜测出模式)。这样一来,既能保证密码的长度(建议控制在 12~32 个字符之间),防止暴力破解;又有自己独特的模式,便于记忆。
然而,前提是没有遇上使用明文存储用户密码的变态网站,不然就前功尽弃了。所以尽量在保密性好,又确实有需要的地方使用自己的独特密码,例如网银、邮箱(建议使用 Gmail)等。
最后,祝大家加密愉快,同时希望那些借助自己拥有的权力、智力等便利来侵害他人利益的人早日从人类的队伍中消失。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/protect-our-password/>。转载请保留此信息及相应链接。
额…又被盗了啊…
无言…