关于密码生成器
这款免费的密码生成器可以创建强而随机的密码。选择长度和要包含的字符类型,立刻就能得到一个独一无二的密码——强度指示给出的是真实的熵值(以位计),而不是一个含糊的颜色。
密码在您的浏览器中由 crypto.getRandomValues 生成,这是浏览器内置的、密码学上安全的随机源。没有任何内容被发送或记录,您在这里看到的密码从未在任何服务器上存在过。这并非小事:一个在服务器端生成密码的工具,是一个您必须完全信任的工具。
密码真正的强度来自哪里
不是符号。不是开头一个大写字母、结尾一个 1。是长度和随机性——只有这两点重要,而其中长度更重要。
衡量的指标叫熵,以位计。每增加一位,攻击者需要穷举的可能性就翻一倍。从 62 个字符(字母和数字)中随机抽取的密码,每个字符约携带 5.95 位,所以 12 位的密码约 71 位熵,16 位的约 95 位熵。
面对拥有强力硬件、在离线状态下穷举的攻击者,这些数字的实际含义是:
- 低于 40 位 — 几秒钟就会被攻破
- 50–60 位 — 数小时到数天
- 70–80 位 — 数年,对大多数攻击者已不现实
- 90 位以上 — 以现有技术无法实现
多加四个字符的效果,远远超过加一个 !。每增加一个字符,工作量就成倍增长;而一个符号只是稍微扩大了字符集。
为什么「Passw0rd!」很弱,而长的随机密码不弱
密码规则教了整整一代人如何创造对*人类*难记、对*计算机*好猜的密码。开头大写、结尾数字、用 @ 代替 a。攻击者对此一清二楚。每一款破解工具都会自动套用这些替换,因为大家做的替换都一样。
真正的攻击不会从 aaaa、aaab、aaac 逐个试起。它从泄露的密码列表开始——数十亿条来自真实数据泄露的真实密码——再套用那些可预测的变形。P@ssw0rd! 在这些列表里出现过很多次。它有 9 个字符,有效熵却几乎为零。
一个随机的 16 位密码没有任何可利用的规律,所以这套机器毫无用处。只能靠暴力破解,而 95 位的暴力破解跑不完。
问题的另一半是重复使用。当一个网站被攻破,被盗的邮箱与密码组合会被自动拿到数百个其他网站上尝试。一个重复使用的密码,会把某家公司的失误变成您在所有地方的麻烦。每个网站用一个独立的随机密码,就能把损失限制在那一个账户上——这才是使用密码管理器的真正理由。
选择长度
- 16 个字符 — 适用于几乎一切的良好默认值
- 20 个及以上 — 邮箱、银行、密码管理器的主密码,以及任何能重置其他账户的地方
- 12 个字符 — 网站不接受更长时可接受的下限
- 少于 12 个 — 仅在系统强制时使用,并把该账户视为保护薄弱
您的邮箱账户值得用您所使用的最长密码。谁控制了您的邮箱,就能重置几乎其他所有东西。
关于排除易混淆字符
打开排除易混淆字符会移除 O、0、l、1、I 之类——人们在屏幕上读密码再到别处输入时最容易看错的字符。
当密码需要手动输入时请使用它:路由器卡片上的 Wi-Fi 密钥、用遥控器设置的设备、通过电话口述的内容、打印出来交给别人的东西。
如果密码会直接存进密码管理器、只会被粘贴,就让它保持关闭。排除字符会缩小字符集,从而略微降低熵——多加一两个字符的长度就能轻松补回来。
使用方法
- 设置长度并选择字符类型(大写、小写、数字、符号)
- 生成 — 出现一个新密码(再点一次可换一个)
- 复制 — 用复制按钮,然后粘贴到需要的地方
值得注意
- 绝不要重复使用生成的密码。 如果同一串字符保护着五个账户,它的强度就毫无意义。
- 把它存进密码管理器,而不是便签、表格或浏览器标签页。一个您记不住的强密码,只有在别的东西替您记住时才有用。
- 有些网站会悄悄截断。 某些系统会在 16 或 20 个字符处切掉密码却不告知。如果一个长密码在注册时被接受、登录时却被拒绝,通常就是这个原因。
- 少数网站仍然禁止符号。 关掉符号,改为增加长度——您几乎没有任何损失。
- 剪贴板不会立刻遗忘: 复制过的密码会留在那里。如果与人共用设备,之后请再复制点别的东西。
- 两步验证胜过更长的密码。 超过大约 16 个随机字符之后,下一步的安全提升是双因素认证,而不是第 17 个字符。
常见问题
密码应该多长?
16 个随机字符是一个合理的默认值,对几乎任何账户都足够强。邮箱、银行以及密码管理器的主密码请用 20 个或更多,因为它们能解锁其他一切。当网站不接受更长时,12 个是可接受的底线。长度带来的安全性,远超过在短密码里加入生僻符号。
这些密码真的是随机的吗?
是的。它们来自 crypto.getRandomValues,即浏览器内置的密码学安全随机数生成器——与用于加密密钥的是同一类来源。它不是 Math.random(),后者可预测,不适合任何与安全相关的用途。整个生成过程都在您的设备上完成。
在网站上生成密码安全吗?
这完全取决于生成发生在哪里。如果一个网站在它的服务器上生成,那台服务器就看过您的密码,您等于完全信任它。这款工具在您的浏览器中生成:密码在您的设备上产生,从不传输,也不存在于任何其他地方。断开网络连接后工具依然可用,您可以据此验证。
我的密码需要符号吗?
有一点帮助,但远比人们以为的少。加入符号会把字符集从 62 个扩大到约 94 个,相当于每个字符多出约 0.6 位熵。再加两个字符的价值更大。如果网站不接受符号,直接把密码加长即可,您并没有失去什么实质性的东西。
位数代表什么?
它是熵,也就是密码中包含多少真正的随机性。每多一位,攻击者所需的尝试次数就翻一倍。低于 40 位很快会被攻破;70 到 80 位在实践中已无法破解;超过 90 位则超出当前技术的能力。它比红黄绿进度条诚实得多,后者往往只是在数字符类型。
我应该定期更换密码吗?
不要按日程更换。强制轮换会让人选出更弱、更可预测的密码——Summer2024! 变成 Summer2025!。NIST 目前的建议是使用长而唯一的密码,并在有理由时才更换:收到泄露通知、密码被分享过,或怀疑账户被访问过。
如果网站限制我的密码长度怎么办?
用它允许的最大长度生成,如果符号被拒绝就关掉符号。注意悄悄截断:如果密码在设置时可用、下次登录却失败,很可能是网站在没有告知的情况下把它切短了。这时请刻意设置一个更短的密码,以便确切知道存进去的是什么。