如何查询你的邮箱地址是否出现在数据泄露中
PureTempMail 团队
设计并运营 PureTempMail 的工程师
数据泄露对你的邮箱究竟意味着什么
当一家公司遭遇数据泄露时,攻击者很少会把偷来的东西留给自己。包含邮箱地址、密码、姓名、电话号码和其他账户信息的数据库会被复制、交易,并最终发布在安全研究人员所称的“泄露数据包”中。随着时间推移,各个数据包会被合并成规模庞大的组合列表——通常称为 combolist——在论坛和文件共享网站上自由流传。你的邮箱地址并不需要属于什么重要账户才会出现在其中。你2013年注册过的一个论坛、只用过一次的购物网站,或一个早已不复存在的服务,都可能是源头。泄露发生在他们的服务器上,暴露的却是你。
真正的危险通常不是最初的泄露本身,而是接下来发生的事。攻击者拿着这些列表发起撞库攻击:把每一对泄露的邮箱和密码去尝试登录数百个其他服务,赌的就是人们会重复使用密码。如果你在某个被攻破的宠物论坛上的密码,恰好与保护你主邮箱账户的密码相同,那么论坛泄露就升级成了邮箱账户被接管。泄露的地址还会助长针对性钓鱼——知道你使用哪些服务的攻击者,能伪造出可信得多的假邮件。这就是为什么了解自己的地址是否、以及在哪里被暴露,是真正有用的信息,而不只是猎奇。
泄露查询服务如何运作
泄露查询服务解决的是一个直截了当的索引问题。研究人员在泄露数据包浮出水面时获取副本,核实数据的真实性,然后将受影响的邮箱地址加载进一个可搜索的数据库。当你输入自己的地址时,服务会告诉你哪些已知泄露事件包含了它、每次泄露发生在何时,以及暴露了哪些类别的数据——密码、电话号码、住址等等。最权威的服务 Have I Been Pwned 已收录了数百起事件中的数十亿个被泄露账户,被个人用户和监控自有域名的公司广泛使用。
一个合理的质疑是:把密码输入某个网站去检查它是否泄露,听起来是个糟糕透顶的主意——输错了网站,确实如此。Have I Been Pwned 的密码检查功能用一种叫 k-匿名的技术规避了这个问题。你的浏览器在本地对密码做哈希运算,然后只把哈希值的前五个字符发送给服务器。服务器返回所有以这五个字符开头的已泄露哈希——通常是几百个候选——由你的浏览器在本地比对是否匹配。服务方永远看不到你的密码,甚至看不到足以识别它的哈希片段。这套设计由该服务的创建者公开发表,此后被各家密码管理器和浏览器采纳,用于它们自己的泄露检查功能。
Pwned Passwords 背后的 k-匿名模型由 Have I Been Pwned 的运营者 Troy Hunt 详细阐述: Troy Hunt — Pwned Passwords 与 k-匿名模型 ↗
逐步查询你的地址
从 haveibeenpwned.com 上的 Have I Been Pwned 开始。在搜索框中输入你的邮箱地址并提交。结果要么是令人安心的空白,要么是一份按时间排列的、包含你地址的泄露事件清单,每条都附有事件的简短描述和暴露的数据类别。请仔细阅读数据类别:只泄露了邮箱地址的事件是个麻烦,而泄露了密码或密码哈希的事件则需要立即行动。对你正在使用的每个地址重复检查,包括仍在转发给你的旧地址——用它们注册的账户同样脆弱。
顺便注册泄露通知。Have I Been Pwned 允许你登记一个地址,当它出现在新加载的泄露数据中时会发邮件提醒你——把一次可能被你遗忘的手动检查,变成自动警报。通知服务在启用警报前会验证你确实控制该地址,因此你无法订阅属于别人的任意地址。对大多数用户来说,这一步就能获得大部分价值:泄露事件在被持续发现,今天干净的地址可能出现在下个月加载的数据包里。
Mozilla Monitor(前身为 Firefox Monitor)是可靠的第二选择,基于同样的底层泄露数据。它提供同样的地址查询,外加与免费 Mozilla 账户绑定的持续监控,并为每起泄露事件附上分步处理指引。同时使用两个服务不花一分钱,只需几分钟。如果你拥有自定义域名,Have I Been Pwned 还提供全域名监控,报告你域名下出现在任何泄露事件中的每一个地址——这很有用,因为 info@ 或 contact@ 这类容易被猜到的地址会在你毫无察觉的情况下积累暴露。
你可以在官方 FAQ 中查询地址,并阅读关于泄露数据如何处理的完整说明: Have I Been Pwned — 常见问题 ↗
Mozilla 的免费监控服务提供持续警报和处理指引: Mozilla Monitor — 免费数据泄露监控 ↗
如果你的地址出现在泄露中该怎么办
第一步,修改被泄露服务上的密码——更关键的是,修改所有使用了相同或相似密码的其他服务的密码。攻击者默认你会重复使用密码,而加个数字或感叹号之类的变体挡不住自动化猜测。顺序很重要:先保护你的主邮箱账户,因为它是其他一切的找回机制。控制了你收件箱的攻击者,可以随意重置你大多数其他账户的密码。
第二步,从根源上解决重复使用问题:为每个账户生成唯一的随机密码,实践中这意味着使用密码管理器。这一个改变就能把未来的泄露从连锁式紧急事件变成可控的局部事件:一个泄露的密码只能打开一个账户,而更换它只需一分钟。凡是提供通行密钥(passkey)的服务,请直接优先使用。通行密钥是绑定在你设备上的加密凭据;服务方的数据库里不存在可被泄露的共享密钥,因此即使服务被攻破,攻击者也拿不到任何可以用来冒充你的东西。对仍在使用密码的重要账户启用双因素认证,最好用身份验证器应用而不是短信。
第三步,现实地看待已暴露的数据。泄露的密码可以更换,泄露的邮箱地址却换不了。一旦你的地址开始流传,就要做好垃圾邮件更多、钓鱼更逼真且无限期持续的准备。对提及被泄露服务的邮件要格外警惕——攻击者正是利用泄露名单来投放这种针对性诱饵的。如果泄露涉及支付数据,请留意账单并考虑换卡。如果涉及政府证件号码等身份数据,请了解你所在国家提供的欺诈警报或信用冻结机制。
用别名和一次性地址减少未来的暴露
以上都是事后补救。泄露防护的主动版本,是从一开始就限制有多少数据库存有你的真实地址——从未被收集的地址永远不会被泄露。邮箱别名是应对长期关系服务的工具:别名服务商为每个服务分配一个专属转发地址,泄露时暴露的只有那个别名,而你可以随即将其禁用。被攻破的地址就此作废;你的真实收件箱毫发无损,而且你清楚地知道是谁泄露了它。
对于一次性交互——下载白皮书、领取折扣码、测试一个你不会再回来的服务——一次性地址是更干净的选择。像 PureTempMail 这样的服务提供的临时收件箱只存在几分钟或几小时,接收完验证邮件后便连同全部数据一起过期。当那个服务多年后不可避免地被攻破时,数据包里只有一个早已不存在、也从未与你产生过关联的地址。你从未交出的数据,才是保证永远不会出现在泄露查询结果中的数据。
不该做什么
绝不要把你正在使用的密码输入任意一个“密码检查”网站。上文描述的 k-匿名设计才是 Have I Been Pwned 密码检查安全的原因,信誉良好的密码管理器也使用同样的协议——而一个带着索要密码表单的来路不明的网站,很可能就是在收割密码。想检查密码,请直接通过 Have I Been Pwned,或使用密码管理器或浏览器内置的泄露检查功能,那里的比对基于哈希数据完成,不会传输密码本身。
对声称你被泄露的不请自来的邮件也要同样警惕,尤其是那些链接到登录页面或索要付款的。正规的泄露通知不会索要你的密码,Have I Been Pwned 的警报也从不要求你登录查看结果。一种相关的骗局声称掌握了你的不雅材料,并引用你某个真实的泄露密码作为“证据”;密码是真的,但它来自陈年的泄露数据包,而不是对你设备的入侵。最后,跳过那些付费的“暗网扫描”产品——它们只是把这些免费服务已经提供的公开泄露数据重新包装了一遍。
一套现实可行的日常习惯
泄露暴露不是一次修复就完事的事件,而是需要长期管理的背景状态。合理的日常习惯很简短:在 Have I Been Pwned 上检查你的活跃地址,在那里或 Mozilla Monitor 订阅通知,借助密码管理器全面换用唯一密码,凡有通行密钥就启用,并且只把真实地址交给真正需要长期联系你的服务。别名覆盖“可信但需隔离”的中间地带,一次性地址覆盖一切短暂的交互。这些步骤没有一步是困难的,而它们加在一起,能让下一条泄露新闻从你的个人危机变成一件与你无关的事。
减少持有你真实地址的服务数量是最好的长期防御。我们在另一篇文章中介绍了实用技巧: 如何保护你的邮箱地址免受垃圾邮件侵扰