很多关于密码的建议只会让密码更难记,却几乎没有让它更难破解。这篇文章讲清楚真正有效的做法:密码是怎么被破解的,为什么几个随机单词比一串乱码更安全,以及哪些习惯能在你常用的网站被攻破时依然保护你。
密码是怎么被破解的
没有人会坐在电脑前一个个手动猜密码。网站被攻破时,攻击者往往会拿走整个密码数据库,准确地说是密码的哈希值:由密码计算出来、无法反推的“指纹”。之后他们可以在自己的设备上以硬件允许的最快速度验证猜测,没有任何登录次数限制。
他们不会从随机字符开始。最先尝试的是以往泄露中真实存在的密码(123456、qwerty、woaini520),然后是这些密码的可预测变形:首字母大写、用 @ 代替 a、末尾加上年份或 !。Summer2024! 看起来很复杂,其实就排在这类列表的前面。
我主页上的密码检测估算的正是这种攻击:数据库被盗、哈希计算很快、每秒大约一百亿次尝试。它完全在你的浏览器里运行,不会把任何内容发送出去。即便如此,也请输入和你的密码类似的内容,而不是真实密码。
长度比符号更重要
每多一个字符,可能的密码数量就会成倍增加。一个使用键盘上全部符号、随机生成的 8 位密码,大约有 6600 万亿种组合。按每秒一百亿次计算,大约一周就能全部试完;如果用上几块显卡,还会快得多。
如果是 12 位随机字符,同样的攻击需要一百多万年。给短密码加一个符号作用有限,增加长度的效果则大得多;而且只要长度来自单词,记起来也很轻松。
用随机单词组成密码短语
密码短语由几个互不相关的单词组成,例如 pingguo-heliu-shuben-xingxing-yueliang。从 7776 个单词的列表(经典的 Diceware 方法)中随机选出五个单词,组合数量大约相当于一个随机的 10 位密码,而你只要把它们想象成一幅有趣的画面,就能轻松记住。
关键在于“随机”。歌词、成语、你家的街道加上出生年份,早就在攻击者的字典里了。让骰子或密码生成器来选词,而不是靠自己的记忆。拼音单词同样可以用,只要是从足够大的词表中随机选出的。对于最重要的账号,也就是你的邮箱和密码管理器,请使用五到六个单词。
一个账号,一个密码
到处使用同一个密码,是普通人丢失账号最常见的原因。一个网站泄露后,攻击者会把其中的邮箱和密码组合交给脚本,自动到邮箱、银行、社交网络和购物网站上逐一尝试。这种攻击叫“撞库”。
每个账号使用不同的密码,一次泄露就只会影响一个账号。没有人能记住上百个不同的密码,也不需要记:这正是密码管理器的工作。Bitwarden(开源,有免费版)、1Password、KeePassXC(可离线使用),或者手机和浏览器自带的密码管理器,都能生成很长的随机密码并自动填写。你只需要记住一个足够强的密码短语。
密码管理器还能防钓鱼:在网址稍有不同的假冒网站上,它不会自动填入你的银行密码。
两步验证和通行密钥
两步验证在密码之外还要求另一样东西,所以仅凭被盗的密码无法登录。请优先使用身份验证器应用,例如 Google Authenticator、Microsoft Authenticator、Aegis 或密码管理器自带的验证器,而不是短信验证码。骗子如果骗过运营商,把你的号码转到一张新的 SIM 卡上,短信验证码就会落到他们手里。
更好的是通行密钥(passkey),Google、Apple、Microsoft 和许多其他服务都已经支持。通行密钥保存在你的设备上,用指纹、面容或 PIN 码解锁,而且只在真正的网站上有效,因此无法通过钓鱼骗走。
在 Telegram 中,进入“设置 → 隐私与安全”开启两步验证。这样即使登录验证码被盗,别人也无法接管你的账号。
你的密码泄露了吗?
Have I Been Pwned (在新标签页打开) 可以告诉你,你的邮箱出现在哪些已知的泄露事件中。它的 Pwned Passwords 服务能在完全看不到密码的情况下进行检查:你的设备先计算密码的 SHA-1 哈希,只发送哈希的前五个字符;服务返回所有以这五个字符开头的泄露哈希,比对在你这一端完成。密码管理器和浏览器的泄露提醒用的也是同样的方法。
如果某个密码出现在泄露列表中,就在所有用过它的地方更换,先从邮箱开始。
现在的标准怎么说
许多公司参照的美国国家标准与技术研究院(NIST)在现行的 SP 800-63B 指南中,已经放弃了几条老规则。服务不应强制用户定期更换密码,只有在发现被盗迹象时才需要更换;也不应强制要求大写字母、数字和符号的组合。相反,它们应该允许长密码和粘贴,拦截出现在泄露记录或常见密码列表中的密码,并且在密码是账号唯一保护手段时,要求至少 15 个字符。
如果某个网站仍然要求“至少包含一个符号和一个数字”,在单词之间加符号、末尾加数字的长密码短语就能满足要求。
简短清单
- 每个账号使用不同的密码,统一保存在密码管理器里。
- 邮箱和密码管理器本身,用五到六个随机单词来保护。
- 只要网站提供两步验证就开启,尽量使用应用或通行密钥,而不是短信。
- 在 Have I Been Pwned 上查一下你的邮箱,更换泄露过或重复使用的密码。
- 永远不要把真实密码输入到不属于它的网站上,包括像我这样的密码检测工具。


