[ DKIM ]

DKIM通过收到的消息及其签名域进行解释

跟踪收到的消息从签名到公钥、可信验证结果和DMARC关系。

由EmailAuth研究团队提供 · 3 分钟阅读

[ 要点 ]

  • 从收到的原件中读取每个 d/s 对。
  • 单独的签名或DNS密钥并不能建立验证。
  • 分别评估DMARC一致性和业务安全性。
在此页面上

DKIM 让域通过加密签名对消息负责。要了解这对特定电子邮件意味着什么,请从收到的原始电子邮件开始,而不是从DNS检查器开始。有用的证据链是消息签名、签名域和 选择器,公钥,接收方验证结果,然后任意 DMARC 结盟 决定。

读取签名的身份

找到每个 DKIM-Signature 原始消息中的标头。 d= 值标识签名域,s= 标识其选择器。对于基于 DNS 的密钥检索,将它们组合为选择器。 _domainkey.signing-domain.签名域可能属于作者的组织、中继或为其代理的服务。 DKIM故意将签名责任与表面作者分开。 RFC 6376 §1, RFC 6376 §3.5, RFC 6376 §3.6.2.

说明性示例:发件人是accounts@example.com ,签名包含d=example.com; s=mail2026.验证程序查找mail2026._domainkey.example.com 。该DNS记录提供公共验证材料。私人签名密钥由授权签名者保留,不得公开。这个例子解释了查找;它不是真正的签名或经过测试的消息。

将存在与成功验证分开

DKIM-Signature标头可能存在,也可能无效。当应用程序根本不发送签名时,可以存在DNS密钥。验证检查签名结构、密钥、选定的标头和正文表示。签名后的更改可能会破坏它,具体取决于更改的内容和 规范化 用过的。看似摘要的字符串并不能证明这些检查已通过。 RFC 6376 §3.4, RFC 6376 §3.5, RFC 6376 §3.7, RFC 6376 §6.

检查接收系统的可信度 Authentication-Results 或同等日志。了解哪个身份验证服务添加了该结果,以及在何处删除或忽略了不受信任的入站结果标头。发件人可以将看似合理的传递文本插入到消息中,因此任意的Authentication-Results内容都无法证明。 RFC 8601 §1.2, RFC 8601 §7.1.

将结果连接到可见作者

对于DMARC ,将成功验证的 d= 域与 From 中的作者域进行比较。严格的DKIM对齐需要精确匹配 RFC 9989 §3.2.10;宽松的对齐使用组织域发现 RFC 9989 §4.10.2。选择器和可选 i= 值不是用于此DMARC比较的域。如果存在多个DKIM签名,则一个传递的对齐签名可以提供DMARC传递的DKIM路径。 RFC 9989 §4.4.1.

在示例中, d=example.com与 From 域匹配。如果改为d=service.example.net进行验证,原始DKIM将通过,但该不相关的域不会与example.com建立对齐。不要通过编辑收到的标头来“修复”此问题:配置合法签名者以使用适当的受支持身份。

建立有用的调查记录

记录消息时间、路由、来自域、每个 d/s 对、可信DKIM结果和原因、 DNS观察时间和对齐结果。保护原始邮件,因为它可能包含个人或机密信息。编辑副本可能会导致其签名失效;当需要重新验证时,保留访问控制的原件。

如果验证失败,请调查签名是否已启用、正确的密钥是否可用、算法是否受支持以及消息在传输过程中是否发生更改。当前的加密指南取代过时的默认值: RFC 8301 §3.1 禁止使用 rsa-sha1 进行签名和验证; RFC 8301 §3.2 更新 RSA 密钥指南。不要仅仅因为旧教程的语法看起来仍然有效而使用旧教程的加密选择。最后提供收到结果的证据,而不仅仅是DNS包含密钥的证据。

应用区别

对于假设的消息,为每个签名写入一行:d、s、查找所有者、可信验证结果和对齐。如果example.com签名失败,而不相关的service.example.net签名通过,则不要将第一个域与第二个结果组合。调查失败的签名并评估 SPF 在分配DMARC之前单独进行。本文未进行消息验证。

[ 外卖 ]

从收到的原件中读取每个 d/s 对。单独的签名或DNS密钥并不能建立验证。分别评估DMARC一致性和业务安全性。

[ 按角色 ]

这对您意味着什么

选择您的角色以执行后续实际步骤。

IT/邮件管理员

记录每个收到的 d/s 对。

保留每个路由的完整 d/s-to-DNS-to-receiver-result 链。如果以后重新验证很重要,请安全地保留原始字节。

后续步骤

  1. 记录每个收到的 d/s 对。
  2. 检索确切的公钥所有者名称。
  3. 保存可信的验证结果并保护原件。

CISO / SecOps

保护私人签名密钥保管。

将有效签名视为对签名内容的域责任,而不是证明人员、请求或附件安全的证据。将身份验证与帐户和滥用控制相结合。

后续步骤

  1. 保护私人签名密钥保管。
  2. 检查签名身份和覆盖范围。
  3. 保留对经过身份验证的消息的滥用控制。

创始人/非技术人员

识别重要的签名消息流。

询问您的重要服务是否使用与您的域相关的身份进行签名,以及这些签名是否能够在交付后保存下来。单独发布的密钥并不能回答这两个问题。

后续步骤

  1. 识别重要的签名消息流。
  2. 请求通过的一致身份证明。
  3. 让业务审批检查独立于DKIM 。

[ 常见问题解答 ]

常见问题

DKIM标头是否意味着验证已通过?

不会。标头是一个断言,仍然需要使用相应密钥进行加密验证。

RFC 6376 §6.1

d= 标识什么?

承担签名责任的域。它可能与可见作者的域不同。

RFC 6376 §3.5

选择器有什么作用?

它与d=,一起查找用于验证的DNS公钥。

RFC 6376 §3.6.2.1

多个签名是否有效?

是的。检查每个签名及其签名域,然后识别任何通过的DMARC对齐签名。

RFC 6376 §4.2 RFC 9989 §4.4.1

公共DNS密钥是秘密的吗?

不是,是验证材料。相应的私有签名密钥必须受到保护。

RFC 6376 §3.6 RFC 6376 §8.3

i= 是否控制DMARC DKIM对齐?

不会DMARC使用经过验证的 d= 签名域,而不是可选的 i= 身份。

RFC 9989 §4.4.1

我可以验证经过编辑的电子邮件吗?

密文可以更改签名字节并使验证无效。需要验证时,请保留受保护的原件。

RFC 6376 §3.4 RFC 6376 §3.7

DKIM能否确保电子邮件安全?

不会。它在其覆盖范围内确立了签字责任和诚信。它不能确定接收者的同意、意图或附件安全。

RFC 6376 §1 RFC 9989 §2.4

[ 来源 ]

来源

  1. RFC 6376

    部分 §1 · §3.1 · §3.4 · §3.5 · §3.6 · §3.6.2.1 · §3.7 · §4.2 · §5.5 · §6.1 · §8.3

  2. RFC 8301

    部分 §3.1 · §3.2

  3. RFC 8601

    部分 §1.2 · §7.1

  4. RFC 9989

    部分 §2.4 · §3.2.10 · §4.4 · §4.4.1 · §4.10.2

[ 词汇表 ]

词汇表

DKIM
使用公钥数据验证的所选消息内容的域关联签名。

RFC 6376 §1

选择器
s 值与 d 签名域一起使用来定位验证数据。

RFC 6376 §3.1 RFC 6376 §3.5

DMARC对齐
经过身份验证的标识符和作者域之间所需的关系。

RFC 9989 §4.4

企业出处

为什么顶级金融机构和政府 退役了他们的电子邮件安全仪表板。

传统的电子邮件身份验证平台会向您出售仪表板并要求您的工程师来完成这项工作。在高风险环境中,手动监督意味着延迟执行、配置漂移和不受监控的影子域。

EmailAuth是代理电子邮件来源平台。 我们的代理人强制执行 p=reject,保持第三方发件人一致并将您的域名移至完整状态 RFC 9989 合规性、新的DMARC标准,以及人机交互审核能力。

政府 大型企业 一级金融机构

SaaS · 专用租赁 · 气隙本地部署 · BYOK 加密

知识库