我正在尝试建立一种方法来证明电子邮件确实是从特定域发送的。
是否有一种服务可以让我证明 TXT 记录在特定时间具有什么价值,例如通过提供签名的 DNS 响应或过去 DKIM/ARC 密钥的存档?
背景:
如今,许多电子邮件都带有 DKIM(有时是 ARC)签名。但是,只有在相应的密钥仍然可用的情况下才能验证这些签名。我当然可以存档密钥的副本,但我无法向第三方证明该密钥确实是发件人当时使用的真正密钥。
理论上,理想的解决方案是 DNSSEC,但这必须由发送方部署,而且它似乎并不常见,即使在大型发送方中也是如此(检查 Google 的 DKIM 密钥和 Microsoft 的 ARC 密钥)。
有商业 DNS 档案,但我检查过的两个(securitytrails.com并且completens.com甚至没有列出Google的DKIM密钥,所以我认为这些不是特别有用。
一种解决方法是将基于 Web 的 DNS 查找工具存档在 archive.org 中,但我正在寻找一种更简洁/更具可扩展性、可轻松应用于传入邮件的解决方案。
我确实知道 DKIM 不如合格的电子签名那么强大,DKIM 密钥可能被盗用,允许某人从合法服务器发送邮件的帐户也可能被盗用,而且一旦不再使用 DKIM 密钥,可能会故意泄露,以试图为过去的邮件创造合理的否认性。后者可以通过获取邮件的 RFC 3161 时间戳来缓解。
举个例子,这个方法会很有用:你欠一家公司的钱。该公司给你发了一封电子邮件,指示你将钱汇到一个特定的账户。你汇了钱,但结果发现该公司被黑客入侵了,电子邮件中的账号被替换了,钱也不翼而飞了。如果你能证明你确认了邮件确实来自该公司的服务器,并且这封邮件在从那里发送时就已经包含了错误的账号,那么法官就更有可能不会要求你再次汇款。
答案1
除了记录邮件服务器的 DKIM/SPF 检查结果外,您无能为力。DNSSEC 还允许您“验证”您在查询时是否确实获得了正确的 DNS 答案,但这由邮件服务器上的 DNS 实现处理,并且可能对邮件服务器应用程序本身不可见。另一种方法是捕获传入邮件中的密钥标识符,然后通过 DNS 对同一密钥进行带外查询。这样,您可以存储 DNS 返回的公钥并根据它们验证电子邮件。
遗憾的是,您尝试执行的操作有点超出了 DKIM 和 DNSSEC 的预期用途。DKIM 和 SPF 旨在在从远程实体收到消息时验证发送服务器的真实性,而 DNSSEC 旨在在查询时验证 DNS 响应,所有这些都仅用于验证远程方的基础设施,而不是发送者本身。例如,从远程方发送电子邮件的受感染用户帐户仍会通过 SPF/DKIM 和 DNSSEC。
证明电子邮件来自正确方的更“正确”的技术是 S/MIME 或 PGP,它们可用于对来自单个用户的单封电子邮件进行签名,并且不考虑有关传输基础设施的任何信息。PGP 公钥可以无限期存储,这允许您事后验证收到的电子邮件的真实性。