你的密码安全吗?小心那些隐藏的陷阱
美国国家安全局(NSA)为了破译恐怖组织的密码以挫败其阴谋,斥巨资建造了一台可以破解一切密码的机器:万能解密机。这是美国作家丹•布朗在其小说《数字城堡》中虚构的情节。以人类今日之科技实力,打造这样一台无坚不摧的“神器”还只是个遥远的梦想,但如何在网络社会中保护自己的个人隐私一直是个现实的问题。20多年来,现代人已经掌握了“数字城堡”——密码的构造方法,自认为可以高枕无忧,但事实远非如此。
越复杂的密码约安全吗
很不幸,答案是否定的。人们通常认为,把密码设得越复杂,别人就越难猜到,但这样一来无疑增加了记忆的难度。而对于那些企图窥探你秘密的人来说,他们也只是想不到,而非“猜不到”。现如今,还有几个人破译密码是靠大脑“猜”的呢?
这就正如 XKCD 所说的那样:经过二十年的努力,我们成功地陷入一个误区,那就是把密码设的越来越难以记忆,然而却被计算机很轻松地就破解出来了。
保证密码强度的关键是什么
那保证密码强度的关键到底是什么呢?其实,上面的漫画已经给出了答案:密码长度。
这里引入信息学中的信息熵(我们常听人说这个信息多、那个信息少,对信息“多少”的量化就是信息熵),用它来作为密码强度的评估标准。信息熵计算公式为 H = L * log 2 N,其中,L表示密码的长度,N的取值见下表:
从上面的公式和表中,我们可以看到,密码强度 (H) 与密码长度 (L) 和密码包含字符的种类 (N) 这两个因素有关。然而它们对密码强度的影响是呈指数倍的关系。
举个例子,假设密码长度的单位为比特,8个比特即为一个字节(即输入密码时的一个字符,一个字节可以代表256个不同字符),如果某台超级计算机的计算能力为每秒能完成 2 56 次组合运算,破解8个字符组成的密码仅需4分16秒。当密码长度达到16个字符的时候,暴力破解它需要 149,745,258,842,898 年!要知道太阳的寿命也只有约10,000,000,000 年,而目前世界上速度最快的计算机K Computer也只能每秒完成约 2 53 次运算。当然,这只是一个极端化的例子。事实上,我们可以用来当密码使用的字符只有 95 个( 26 个小写字母 + 26 个大写字母 + 10个数字 + 33个标点符号)。
更大的风险所在 :万能钥匙
在现实生活中,我们都选择“一把钥匙开一扇门”。谁都不会希望有一把钥匙既能用来开家门,也能用来开车门、公司的门、宿舍的门,因为这把“万能钥匙”一旦丢失,损失将是惨重的。随着网络社会的发展,如今大多数人都握有十多个网站的账号,你是继续选择“一把钥匙开一扇门”的策略,还是改用“万能钥匙”的策略呢?如果是前者,那么无疑将增加你的记忆负荷,如果是后者,安全隐患是显而易见的。
图像来源:XKCD
而要说的是,许多人都意识到了这点,并且为了避免这种情况,相当一部分人选择将密码分为两部分,一个主要部分(比如是 123456 ),另一部分则根据账户而定: QQ 的密码就设为 qq123456 ,而 gmail 的密码则是 gmail123456 等等。但如此直白的设置,颇有掩耳盗铃的味道,一旦一个账户失窃,看穿这个规律,也不过一秒的事情而已。
与黑客的博弈
为了规避上述种种风险,大家开始设定许多个又长又复杂的密码。但复杂的长密码并不容易记住,更何况是要记住好几个这样密码(请问有谁没有忘记过密码呢)。在经历了多次遗忘密码的痛苦之后,人们又开始倾向性地选择那些容易让自己记住的信息作为自己的密码。比如自己或亲人的姓名、生日、电话号码等等。但这恰恰把安全隐患留给了躲在暗处的黑客。
有人对用户的密码做过统计,研究他们设置密码时的偏好,并将统计结果绘制成图。 61% 的用户喜欢使用人名、地名、字典词汇和纯数字来设置他们的密码。甚至还有2.6%的用户直接把他们的用户名当做密码使用(比如把 guokr123@ ...的密码直接设置为 guokr123 )。这些都是具有安全隐患的密码设置策略!黑客们了解用户的密码设置习惯后,就可以编写“密码词典”,有了这本词典后,就可以在暴力破解的时候大大提高精准性。比如在 这里 可以下载到 10,000 个常见密码的词典(该词典作者称有 99.8% 的用户都是使用这本词典中的密码)。有人对Sony公司的用户密码也做过 研究调查 ,结果也令人堪忧。
用户密码设置使用习惯
有网站如 1PASSWORD 给出了新的策略。它相当于为你提供了一个带锁的记事本,可以让你把所有的密码记在这个记事本上,你只需保留开锁的钥匙/密码即可。撇开这个网站的靠谱程度不谈,单单为了这样一个记事本,你就要付出 40 美元的代价。同时请别忘了,它仅仅为你解决了记忆密码的问题,还是没有逃开设置密码这个更加头疼的问题。
优秀的密码设置策略
如何设定一个靠谱的密码?
果壳网曾经有 文章 提到了一些密码设置上参考建议,里面提到“用统一规则记住多个不同密码”是个不错的选择。毕竟记住一个规则比记住一串杂乱无序的字符要容易多了,也可以实现“一把钥匙开一扇门”的策略。在这里不妨举个例子,给出一个简单的密码设置规则(以电子信箱为例):
[密码]=2*([用户名标识符(小写/大写)]+[用户名长度]+[.]+[网站标识符(大写/小写)]) 例:[email protected],密码为:gk8.GM GK8.gm [email protected] 密码为:ssh10.HTSSH10.ht
但是,真的安全了么?
图像来源:XKCD
所以还请读者记住的就是,一个优秀的密码可以尽可能地降低风险,但它不能将风险降为零。
关于密码的问题,在果壳的 小组 中有一个欢乐的讨论。本文的作者 汉化了 “How secure is my password” 这个网站 , 来测测 你的密码用普通的电脑,花多少时间才会被暴力破解掉吧。
参考资料:
[1] I’m sorry, but were you actually trying to remember your comical passwords?