如何给自己设个简单好记但又超级安全的密码?
笔者在之前的公众号文章中《我为什么要使用弱口令?兼谈对用户口令的保护措施》提到,如果您不信任一个网站,就不要在它那里使用自己常用的高强度的口令。
这篇文章,则针对可以信任的网站,如网银、在线支付系统等,它们通常需要使用高强度的口令。这些系统在过去经历了很多的安全事件的洗礼和改进,已经不可能是明文保存用户的口令了,个人账户的安全性很大程度上取决于用户个人口令的强度。
如果用户口令强度不够,会有两种高风险的情况:
- 服务器侧没有登录锁定机制或锁定机制很容易绕过,则有可能被人利用软件进行暴力破解尝试;
- 万一服务器存储的口令HASH值被泄漏(人为因素或被拖库),可不通过网络,直接在本地运行破解软件进行爆破,且破解速度极快。
高强度口令
我们是如何判断一个口令的强度呢?
如果您所使用的口令已经被各种弱密码字典收录或在历次安全事件中已经泄密,则直接归为弱密码。
如果还没有泄密,则基于口令所使用的字符集(字母、数字、符号),看能够组合出多少种可能,这个数字的数量级越大,暴力破解所需要的时间就越长,强度就越高。
还有一点,目前基于GPU的高并发破解速度要远远高于以前的CPU破解速度,因此目前对口令强度的判断标准还需要有所提高才行。
这里可以参考一个简单的标准:给定一个口令,如果GPU破解时间需要100年(或更高的数量级)以上,则该口令为高强度。
而要达到这一要求,需要的口令强度标准是:
14位以上,且包含大小写字母、数字、特殊符号。
这个要求是不是太高了点? 当然,很多实际的业务场景中,鉴于口令泄漏后的价值,并不足以值得让恶意分子付出如此代价去破解。但对于网银类应用,使用如下强度还是很有必要的:
至少10位且至少包含大写字母、小写字母、数字、特殊符号中的三种。
高强度口令往往设定起来不是那么简单,太简单了不符合强度要求,太复杂了就记不住。如何解决这个问题呢?
笔者的建议有两种,一种为骰子密码(密码短语),另一种为诗词密码。
备注:本文中提到的密码均指口令,是用于身份认证的凭据。
骰子密码
首先来看骰子密码。
还记得前不久报道的《11岁女孩用Diceware制高强度密码,每个2美元》吗? 一个来自纽约的11岁的女孩Mira Modi凭借对互联网与密码学高度的敏感性,使用掷骰子的方式并查找DiceWare密码表来生成密码,以每个2美元的价格进行销售。
操作方法是掷六个面的骰子来随机生成数字,数字会对应一串字符。这些字合并成一个无意义的字符串(大概像这样GetS@fetyP@ssw0rd),因为是随机的所以非常难破解。不过这个口令对人们来说又很容易记住。 每次订单一来,Modi就用 Diceware 口令生成强化密码,然后在相应的Diceware字符单上找到对应的字符。她亲手把字符串写在纸上然后寄给顾客。业务好的时候她一直忙的话,每小时可以赚12美元,这比纽约市8.75美元/小时的最低工资标准高出1/3。 骰子密码要比没有什么实际意义的乱码要好记的多,还可以通过投掷骰子的次数来加强口令的强度。
诗词密码
诗词密码是将喜爱的诗词作为帮助记忆的句子,使用汉字的首字母、数字替换、含义替换等方式,组合成一个高强度的口令。
比如 Flzx3000cY4yhl9t ,助记句子为“飞流直下三千尺,疑似银河落九天“,只要记住了句子,即可直接根据发音从键盘上输入口令。
这两种方式,笔者更推荐采用诗词密码的形式。