值得留用的密码:长度、随机性,以及“强”到底意味着什么
在你的设备上生成随机密码和口令短语,理解长度与真正的随机性为何重要,并如实看待强度估算。
为什么需要这样做
大多数弱密码之所以弱,并不是因为有人忘了加符号,而是因为它是人想出来的。人们喜欢用名字、日期、键盘上的连续按键,或者在旧密码上做一点小改动,而攻击者正是根据这些习惯来建立猜测列表的。由机器从庞大的可能性集合中抽取的密码,没有任何习惯可供利用。
决定一个密码有多难猜的有两件事:它是从多少种可能性中抽出来的,以及抽取是否真正随机。本指南同时讲这两点,介绍如何用密码生成器制作密码或口令短语,以及如何阅读强度标签而不至于过度信任它。
具体做法,使用该工具
密码生成器有两个标签页,生成和检测,所有操作都在你的浏览器里运行。
- 停留在“生成”。 在类型下选择随机字符、易读发音或口令短语(单词)。
- 设置选项。 选择字符类型时,长度滑块范围为 8 到 64,默认从 20 开始。根据你注册的网站允许的规则,勾选大写字母(A-Z)、小写字母(a-z)、数字(0-9)和符号(!@#$…)。如果你以后要大声读出密码,或者要照着纸条输入,请勾选排除易混淆字符(I l 1 O 0 o)。口令短语则设置单词数量(3 到 10)、分隔符,也可以选择末尾加一位数字。
- 选择数量。 通过**生成数量(1-20)**一次抽取一批,再从中挑一个。
- 生成并复制。 点按生成,再点按想要的那个密码旁的复制。重新生成会抽取一组新的。把结果直接粘贴进密码管理器。
- 检测已有的密码。 切换到检测,输入或粘贴一个密码。你会得到从非常弱到强的评分、**破解所需时间(离线攻击)**下的估算,以及改进建议。
因为密码是由生成器创建的,所以它从来不需要看到你正在使用的那一个。
需要注意什么
随机性来自浏览器的安全随机源,而不是 Math.random。 该工具使用 crypto.getRandomValues,即浏览器的密码学随机数生成器,绝不使用 Math.random;后者是为游戏和动画设计的,不适合用于保密信息。还有一个细节:把随机数映射到列表上,可能会悄悄偏向某些条目。如果取一个 32 位随机数,再用它除以列表长度取余数,只要列表长度不能整除这个范围,前面的条目就会稍微更常出现。工具通过拒绝采样来避免这一点:先算出能被整除的最大范围,把落在范围之外的抽取结果丢弃,然后重新抽取。这样每个字符和每个单词出现的机会都相同。
长度比复杂度更管用。 使用该工具的字母、数字和符号,每多一个字符,可能性就成倍增加。一个由大写字母、小写字母和数字组成的 20 位密码,大约有 119 比特的不可预测性,远远超出任何现实的猜测能力。增加符号类别有一点帮助,但增加长度帮助更大。有些网站限制长度或拒绝符号,所以只勾选网站接受的类型。
口令短语更容易使用。 词表约有 310 个常见短词,因此每个单词大约增加 8.3 比特。默认 4 个单词,约 33 比特,这并不算高。六个单词约 50 比特,十个约 83 比特。如果口令短语是你必须记住的东西,比如密码管理器的主密码,请选择六个或更多单词,并保留分隔符。这些数字只计算随机抽取这一步,因为单词来自一个列表,并假定攻击者知道这个列表。
“易读发音”是一种取舍。 它更容易读出和输入,但每个字符所含的不可预测性比完全随机的字符要少。请把它做得更长来弥补。
强度条只是估算。 评分和破解时间来自一个基于模式匹配的估算器。它会查找词典单词、重复内容和键盘上的连续按键,并假定针对慢速哈希存储的密码发动离线攻击。它无法知道某个网站如何存储密码,你的密码是否在别处泄露过,也不知道有没有恶意软件在监视你的输入。请把“强”当作有用的参考信号,而不是任何手段都无法破解这个密码的承诺。
从不存储,也从不发送。 你输入或生成的任何内容都不会被存储、记录或传输,该工具也没有历史记录。如果你使用共享链接,它只携带你的设置,绝不包含密码。关闭标签页后密码就消失了,所以离开之前请把要用的那个复制到密码管理器里。
常见问题
我的密码应该多长?
对于保护资金、邮箱或密码管理器的账户,请至少使用 16 个随机字符,或者六个及以上单词的口令短语。该工具默认从 20 个字符开始,最多可到 64 个。重要账户请使用网站允许的最长长度,并为每个账户保持唯一的密码。
口令短语比随机字符更好吗?
按每个字符计算,随机字符的密度更高,但口令短语更容易输入和记忆。对于必须背下来的密码,请使用更长的口令短语。对于将由密码管理器保存的密码,请使用随机字符,让管理器来记住它。
我能相信“破解所需时间”这个数字吗?
用它来比较两个密码,而不要把它当作预测。它假定了某一种攻击方式和某一种猜测速度。现实中的攻击者和实际的存储方式各不相同,所以真正可靠的是一个又长又随机的密码,这个数字只是个粗略的参考。
打开工具
拿到一个值得信任的口令——顺便看看你现在用的靠不靠谱。