你可以在一秒钟内查到自己的密码有没有出现在已知的泄露库里,而密码本身不会离开你的设备。听起来矛盾,其实原理很简单:你的浏览器先把密码算成一个哈希 (一段从密码算出来的短指纹,反推不回密码),只把这个指纹的前五个字符发出去,和泄露库的比对在你自己的浏览器里完成。下面按顺序讲:为什么要查,查询是怎么做到不泄露的,结果是什么意思,查到了该怎么办。
| 查询怎么走 | |
|---|---|
| 你的密码 | 变成 SHA-1 哈希 |
| 离开你设备的 | 只有哈希的前 5 个字符 |
| 服务器返回的 | 所有以这 5 个字符开头的哈希尾巴,几百条 |
| 比对 | 在你的浏览器里 |
| 密码本身 | 哪儿也不去 |
为什么要查
网上公开流传着几十亿条密码,来自过去多年被拖库的网站。不是你常用的那几个,而是任何网站:十年前注册过的论坛、某个网店、某个外卖平台。这种库一泄露,里面的密码就直接进了暴力破解的字典。你的密码如果在字典里,猜出来只要几秒:程序顺着列表往下试就行。
危险不在那个老论坛被黑了,而在同一个密码你还在另外五个地方用着,包括邮箱。邮箱是其他一切的钥匙:银行、社交账号、政务平台都靠它找回密码。所以问题不是「我被黑了吗」,而是「我的密码在不在第一批被试的名单里」。
查询是怎么做到不泄露的
把密码发给一个陌生网站去问它有没有泄露,这本身就很荒唐。所以查询是另一种做法。
- 浏览器先算出密码的 SHA-1 哈希。这是单向运算,从哈希反推不回密码。
- 只有哈希的前五个字符离开你的设备。几百万个不同的密码哈希都以同样五个字符开头,所以从请求里看不出你查的是哪一个。
- 泄露库的服务器返回所有以这五个字符开头的哈希尾巴,通常几百条。
- 浏览器在这几百条里找你的哈希尾巴。找到了,密码在库里;没找到,公开的泄露库里没有它。
这个方法叫 k-匿名 (你藏在几百个相似的请求里),是查询 Have I Been Pwned 数据库的标准方式。那个库多年来收集了各次已知泄露里的密码,只存哈希,不和邮箱、姓名挂钩。
打个比方:你去问「姓王的人里有没有欠债的」,对方把所有姓王的欠债名单给你,你自己在名单里找。对方只知道你问了姓王的,不知道你是谁。
你不用信我们的话,可以自己看。打开你的密码泄露了吗,再打开浏览器的开发者工具,切到「网络」标签,输入一个密码。发出去的只有一个请求,去 api.pwnedpasswords.com,地址里带着五个字符。密码不在里面。
结果是什么意思
「未找到」。 这个密码不在公开的泄露库里。这不是它没在任何地方被偷的保证:库只知道被公开报道过的泄露,刚发生、还没公开的那次不在里面。但「未找到」加上一个又长又独一无二的密码,已经是不错的位置。
「出现过 12000 次」。 这个数字是所有泄露库里带这个密码的记录数。不是说你被黑了 12000 次,而是另外一万两千个人也想出了同一个密码,它早就躺在破解字典的最前面。这样的密码不管当初从哪儿漏的,在你用它的任何网站上都能几秒钟被猜出来。
| 结果 | 意思 |
|---|---|
| 未找到 | 已知泄露里没有 |
| 出现过 1 到 10 次 | 已经进字典了,换掉 |
| 出现过几千次 | 几秒就能猜出 |
| 这个数字 | 不是「你被黑了几次」,是「多少人想出了它」 |
查到了:改什么,按什么顺序
顺序比速度重要。不要慌乱地把所有密码全改一遍,先把最值钱的关上。
- 邮箱。 其他一切都靠它找回。新密码要长,和旧的不像。
- 银行和支付应用。 钱在哪儿,先改哪儿。
- 政务平台和所有存着身份证信息的地方。
- 用过同一个密码的其他网站。 真正的麻烦在这儿:你几乎不可能记起还在哪儿用过它。这正是一个密码用在多个网站上的危险:漏一处,全开。
- 给邮箱和银行开两步验证。 就算密码再泄露一次,没有第二步也用不了。验证器应用比短信验证码可靠,短信可能被补办 SIM 卡的骗子截走。
新密码别自己想:人自己编出来的,几乎肯定已经在字典里。密码生成器能生成又长又随机的密码,你不用记,记密码是密码管理器的活。
怎么才能不用每个月都查
查泄露治的是症状。病根是密码重复、靠脑子编。如果每个网站都有自己单独的随机密码,任何一个泄露只影响一个账号,也就没什么可查的了。
这正是密码管理器做的事:生成、保存、自动填写,最重要的是,它不会把密码填到一个地址相似的假网站上。浏览器自带的、云端的、本地的怎么选,第一条看有没有设备端加密:数据库在上传前就已加密,服务商读不到。
说实话,我自己会这么做:查邮箱、银行、政务平台这三个密码。哪个查到了,当天就改。剩下的不一个一个查,花一个晚上全搬进密码管理器,以后不再想这个问题。
| 查完之后 | |
|---|---|
| 邮箱 | 新密码 |
| 银行 | 新密码 |
| 这两处 | 开两步验证 |
| 其余 | 搬进密码管理器 |
| 花的时间 | 一个晚上,以后不用再查 |
这个查询不做什么
它不查你的邮箱地址有没有泄露。按邮箱查需要把邮箱本身发出去,那就不匿名了。那种查询在 haveibeenpwned.com 上另外做。
它看不到还没被公开的泄露。它也不知道你在别处还用没用同一个密码,这只有你自己知道。
最后一点:查密码和 VPN 没关系。隧道把你的地址藏起来不让网络看见,但密码不是从网络里漏的,而是从你曾经输入过它的那个网站的数据库里漏的。不同的威胁,不同的工具。
密码查到了、又不知道从哪儿下手,把情况交给 AI。
帮我理清密码泄露查询之后该做什么。
结果:(未找到 / 出现过 N 次)。
这个密码用在哪儿:(邮箱 / 银行 / 社交 /
不记得还有哪儿)。
两步验证:(开了 / 没开 / 不清楚)。
密码管理器:(有 / 没有)。
告诉我先改哪个、按什么顺序,以及怎么找出
可能用了同一个密码的网站。不要说「把所有
密码都改了」,给我一个顺序。
一句话总结
- 泄露查询是安全的:出去的只有哈希的五个字符,密码留在你这儿。
- 「出现过 N 次」意味着它已经在破解字典里,在任何地方都能几秒被猜出。
- 查到了:邮箱、银行、政务平台、两步验证,按这个顺序。
- 想以后不再查,每个网站用密码管理器生成的独立随机密码。