再谈密码安全

3202 年还能有人用用户名做密码然后被盗号真叫我觉得我们像是活在两个世界……

至于为什么是“再谈”,因为我四年前就念叨过……,虽然并不是在这就是。

事情的起因是 GiantessNight 论坛最近发现有人帐号被盗,截止目前受害者高达34人,甚至包括某些核心会员(点名大声嘲笑 vvawd234567.mp4)。受害者的典型特征是用了用户名做密码,至于脑残 Discuz 为什么还允许用户名和密码相同又是另一回事了,这玩意的坑不止这个。

所以请允许我再像个老太婆一样唠叨一遍 …… (虽然已经熟谙于心的根本不会发生这种事件,大多数人也根本不会吸取教训就是。)

避免已知的糟糕实践

意思就是不要在同一块石头上跌倒两次,包括但不限于:

  • 密码和用户名一样(再一次点名大声嘲笑 vvawd234567.mp4),虽然稍微有点觉悟的开发者都应该努力防止用户这么犯傻就是,但首先自己别犯傻总是好的。
  • 密码太短(虽然这条看起来应该是第一个,但是考虑到这次事件的起因),你是在看不起暴力破解嘛?
  • 具有容易加入字典的特征,包括但不限于日期、连续的数字或字母(点名批评123456/qwerty)、单个单词等等。想盗号或者干其它坏事的骇客或者脚本小子应该都准备好记下来这些东西的字典了。
  • 在不同的地方使用相同的密码。然后就被一窝端了……
  • 人的天性,“很多有效的密码实践都在面对自然的人类行为时失败。 了解人的天性至关重要,因为研究表明,你强加于你的用户的几乎每条规则够将导致密码质量的弱化。 长度要求、特殊字符要求和密码更改要求都会促使密码的标准化,而这会使攻击者更容易猜出或破解出密码。”
XKCD 936 已经先我吐槽过了,还给了一种行之有效的创建密码的方式。

构造一个强力密码

什么样的密码算作足够强?无外乎难猜以及唯一。虽然以前教的像是替换字符和键位平移之类反而把用户难倒了然后用户转头去用了更弱的密码就是。

有一种好方法其实就在漫画下面了,就是用多个单词组成密码短语(passphrase)。

  • 采用随机的单词而且足够多的话,长度和暴力破解的难度就会直线上升。
  • 而且还很好记。(你也可以利用上面的例子那样的方法帮助记忆,或者也可以考虑让别的啥帮忙)

比较常见的方法是利用一份随机的单词表和一些能产生随机数的工具(例如骰子),EFF (电子前哨基金会)已经制作好一张可以和骰子结合的单词表了,在这里: https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt ,这东西的用法在这里: https://www.eff.org/dice

  • 你也可以在单词中间加入分隔符,像是空格或减号那样的。当然没有也没什么问题。
  • 一般来说六个词组成的密码短语就足以在有生之年难倒大多数的暴力破解了,除非你有在考虑一些意想不到的威胁(例如大企业或政权……敲门声),这种情况下可以再添几个单词。

密码管理器用起来!

因为记忆是会随着时间衰减的第二种东西(第一种我忘了),所以不如让记忆力更好的电脑帮人类来记,于是就有了密码管理器。

  • 所谓的“密码管理器”,就是一种能帮你记忆密码的程序。
  • 不少的密码管理器还有一些实用功能,例如生成密码(当然利用到了之前提起过的技巧),在不同的地方自动填上密码等等。
  • 如果使用基于网络的密码管理器,你就可以在你不同的设备上同步保存的密码。当然有人可能会担心云端服务泄露啥的,用基于本地的密码管理器然后在不同设备间自己同步也是一种方法。

那么哪里有密码管理器呢?

  • 浏览器和操作系统可能有内置的密码管理器,例如 Chrome 和 Firefox ,以及 iCloud 钥匙串等。通常都是云端服务,于是除了云端服务那问题以外汝可能还要考虑要是在这些地方以外怎么用的问题……
  • 也有基于云端服务的跨平台密码管理器,例如 Bitwarden 。
  • 谷歌或者 Bing 或者你常用的其它搜索引擎(除了百度)搜索一下就能找到这些怎么用。

当然不是用了密码管理器就可以高枕无忧了:

  • 所有的密码管理器都需要一个主密码来保护剩下的密码,所以记得用前面提到的方法想一个足够强的主密码,然后记住它!(记一个密码总比记一堆密码容易吧……)
  • 如果你愿意多想了一点点(例如担心服务出问题或者本地的密码库文件泄露啥的),那么就该是二八定理(?)出场的时候啦。自己记住密码管理器的主密码和一些很重要的密码,剩下的交给密码管理器来记。

未雨绸缪和亡羊补牢

有一些网站可以估计密码可能的强度,比如 How Secure is My Password(https://howsecureismypassword.net/ )。但是别真的用你在用的密码去逝……

还有一些网站会收集曾被披露过泄露过密码的网站的信息,例如 Have I Pwned? 。像 Firefox Monitor 和一些密码管理器也使用它们的数据作为来源。它们会通过比较你使用过的电子邮件地址和已公开的报告来判断你密码是否可能被泄露。如果你使用过的某个服务不幸发生了泄露事件,那就快点修改那里的密码吧!(如果你真的不听教训也在别的地方用了那个密码,也要记得修改掉。)

至于多重身份验证什么的,介于 Discuz 根本就不支持,我也就不费那个口舌了。(反正说了也肯定大把人当耳边风。)如果你有兴趣进一步了解的话,可以参考我上面那篇四年前的文章。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据