[ 转发和ARC ]

DKIM和转发:识别消息修改

找到使DKIM无效的转换,分离规范化、正文覆盖和签名者放置。

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

[ 要点 ]

  • 在指责转换之前比较原始签名字节和签名参数。
  • 宽松的规范化不允许任意内容编辑。
  • 优先选择正确的签名顺序而不是削弱签名覆盖范围。
在此页面上

在转发之前进行验证并在之后失败的消息需要对签名字节和签名上下文进行比较。不要假设每个添加的标头都会中断 DKIM 或放松的 规范化 允许任意编辑。签名标识受保护的标头字段、规范化和 正文哈希。在决定哪种转变重要之前重新构建这些选择。

保存可比较的文物

参考: RFC 6376 §3.5, RFC 6376 §3.7.

保留原始的原始消息和最终消息,而无需通过可能规范行结尾或重新编码MIME客户端打开和重新保存。记录签名者域名, 选择器、算法、签名标头列表、规范化和任何正文长度限制。保留验证者输出和DNS密钥观察结果以及时间戳。视觉上相同的消息可以具有不同的编码字节。

在处理链中找到签名者。最终签名之前添加的页脚是签名内容的一部分;签名后附加的相同页脚可能会使正文哈希无效。清单列出软件、网关、免责声明引擎、防病毒重写器和归档路径作为可能的转换点。只有来自实际路线的证据才能确定是哪一个行动的。

了解规范化允许什么

参考: RFC 6376 §3.4, RFC 6376 §5.4, RFC 6376 §8.2.

RFC 6376,第 3.4 节,定义了简单且宽松的规范化。宽松的正文处理规范指定的空白和尾随空行。它不会使添加的段落或更改的金额消失。标头规范化有其自己的规则,不应被正文规则取代。

主题前缀会影响覆盖相关主题字段的签名。仅仅添加不相关的未签名标头是一种不同的情况。重复的签名字段和标头选择需要验证者的规则,而不是随意的视觉差异。如果签名包含正文长度限制,请了解未覆盖内容的风险;不要引入该选项作为使任意页脚安全的便捷方法。

运行真实的主体哈希比较

参考: RFC 6376 §3.4.4.

本地固定装置将宽松的主体规范化应用于三个合成主体。它为原始版本、纯空白版本和添加页脚的版本计算 SHA-256 和 base64。原始大小写和空白大小写匹配;页脚大小写不同。生成的原始和修改后的 .eml 文件保留说明性正文字节以供检查。

这是观察到的哈希转换,而不是 DKIM签名 确认。不涉及私有签名密钥、 DNS密钥查找、标头签名或可信接收服务。对完整签名的预期效果仍然取决于覆盖已更改字节的实际签名。下面保留的证据记录了历史本地签名和前后验证;生产路线证据仍未收集。

在削弱覆盖范围之前修复排序

参考: RFC 9989 §4.4.1, RFC 9989 §5.3.5.

如果可能,请在合法域的最终签名步骤之前应用所需的转换。对于无法代表原作者签名的中介,保留原始签名内容可能会保留对齐的通行证。来自中介的替换签名验证其自己的域,并且不会自动与原始发件人地址对齐。 RFC 9989 提供单独的比较。

使用完整的验证程序和代表性MIME内容重新测试相同的转换。包括附件、多部分替代项和非 ASCII 消息(如果它们在范围内)。保留阴性对照,这样测试就不会仅仅因为签名消失而成功。闭包应该说明哪个转换发生了变化,哪个签名现在验证了以及该签名是否在最终接收者处提供了一致的身份验证。

保留的实验室证据

参考: RFC 6376 §6.

在 2026 年 11 月 7 日的捕获中,临时 2048 位 RSA 密钥在转发之前使用 dkimpy 对原始字节进行签名。密钥的公共DNS记录将被保留,私钥将在执行后被删除。 dkimpy 验证原始消息和保留转发消息并拒绝添加页脚的正文。列表案例在创建其列表域签名之前应用归因和页脚更改,并进行验证。这些是真正完整的DKIM签名测试,不提供布尔结果。放松身体助手现在还将空输入处理为零八位字节。

对保留的赛跑者和2026年11月7日捕获的赛跑者进行了检查;本次审查没有重新运行网络实验。最初的实验仅使用环回并且不发送互联网邮件。它的接收者创建 Authentication-Results 根据其自己的检查,使这些字段具有已知的实验室来源。身份验证结果和处置保持独立:所有六个SMTP样本均在显式捕获策略下收到 250,包括失败样本。信任边界是这个受控实验室,而不是生产邮箱提供商。 DNS适配器提供保留的固定答案而不是查询公共DNS ,并且 DMARC 评估器仅使用严格的域相等。完整的组织域发现、生产策略解析和实时部署结果尚未经过测试。

[ 外卖 ]

优先选择正确的签名顺序而不是削弱签名覆盖范围。

[ 按角色 ]

这对您意味着什么

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

IT/邮件管理员

比较签名数据

视觉相似度不够。

后续步骤

  1. 保留原始字节。
  2. 检查 h= 和c=.
  3. 修复后运行全面验证。

CISO / SecOps

避免覆盖范围减弱

身份验证应该保护有意义的内容。

后续步骤

  1. 查看身体长度例外情况。
  2. 保留阴性测试结果。
  3. 验证一致的签名者权限。

创始人/非技术人员

为正确的维修提供资金

处理订单经常跨越团队界限。

后续步骤

  1. 确定转型负责人。
  2. 优先考虑关键消息类型。
  3. 需要进行类似的重新测试。

[ 常见问题解答 ]

常见问题

每个添加的标头都会破坏DKIM吗?

不。受保护的字段和标头选择规则很重要。

RFC 6376 §5.4

轻松模式可以容忍页脚吗?

一般情况下不会。它标准化指定的格式,而不是任意的新内容。

RFC 6376 §3.4.4

为什么要保留原始字节?

客户端重新序列化可能会改变正在调查的数据。

RFC 6376 §3.4

签名者的位置重要吗?

是的。签署前的更改与签署后的相同更改不同。

RFC 6376 §3.7

夹具是否验证DKIM ?

原始的 body-hash 固定装置不验证DKIM 。保留的2026年11月7日SMTP实验室进行了真实的dkimpy签名验证;此审核会离线重新检查保留的签名,而无需重复SMTP传送。

应该使用 l= 作为快速修复吗?

不是反射性的。未发现的附加内容引入了安全考虑。

RFC 6376 §8.2

转发者签名是否可以恢复作者一致性?

仅当其经过身份验证的域实际对齐时;不同的转发器域则不然。

RFC 9989 §4.4.1

什么是有用的阴性对照?

完整验证者正确拒绝的已知签名内容更改。

[ 来源 ]

来源

  1. RFC 6376

    部分 §3.4 · §3.4.4 · §3.5 · §3.7 · §5.4 · §6 · §8.2

  2. RFC 9989

    部分 §4.4.1 · §5.3.5

[ 词汇表 ]

词汇表

规范化
在签名或验证之前应用指定的标准化。
正文哈希
规范化覆盖消息正文的摘要。
签名者安置
消息处理中创建签名的点。

企业出处

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

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

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

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

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

知识库