← 返回信息流
AI 资讯Hacker News·2 天前

DKIM2与DMARCbis标准正式落地

原标题:DKIM2 and DMARCbis Have Landed

速览

DKIM2和DMARCbis是邮件认证协议的新版本,分别作为DKIM和DMARC的升级。它们旨在提高邮件防伪造能力、简化配置并增强报告机制。这一更新对电子邮件生态系统的安全性和互操作性有重要意义。

AI 深度解读

背景

邮件认证是互联网基础设施中默默无闻却至关重要的环节。过去二十年,DKIM(DomainKeys Identified Mail)和 DMARC(Domain-based Message Authentication, Reporting, and Conformance)共同支撑着邮件的可信传递,防止攻击者冒用银行等域名发送钓鱼邮件。然而,随着实际部署经验的积累,这些协议开始暴露出设计上的局限:DKIM 签名在转发时容易断裂,无法抵抗重放攻击,且缺乏可信的传递路径记录;DMARC 则依赖静态的公共后缀列表(PSL),更新滞后且操作复杂。2025-2026 年,两个新标准 —— DKIM2(目前处于 draft-04)和 DMARCbis(2026 年 5 月发布为 RFC 9989、RFC 9990 和 RFC 9991)—— 同时落地,标志着邮件认证迈出了二十年来的最大一步。Stalwart 邮件服务器率先在 v0.16.12 版本中完整实现了这两个协议,并提供了在线测试沙盒(mail-auth playground)。

核心内容

DKIM2:从孤立签名到可验证的保管链

DKIM1 的核心逻辑很简单:发送方对邮件头和正文签名,接收方通过 DNS 获取公钥验证签名,从而确认域名对该内容负责。但 DKIM1 签名仅绑定内容,不绑定收件人、路径或后续操作,导致三大硬伤:

  1. 重放攻击:一个合法签名的邮件可以被原样复制发给数百万收件人,每一份副本都验证通过,攻击者借此消耗原域名的信誉。
  2. 转发断裂:邮件列表加前缀、转发网关改链接、追加页脚等操作会破坏签名哈希,接收方无法区分是善意改动还是恶意篡改。
  3. 无传递路径记录ReceivedReturn-Path 头未认证,易伪造,无法建立可信的保管链。ARC 协议虽试图弥补,但多数接收方因信任问题不敢使用。

DKIM2 的解决方案:将旧版单个签名头拆分为两个新头,各自承担不同职责。

  • Message-Instance:描述邮件在某一时刻的状态。包含修订号(revision number)、对当前版本头和体的加密指纹,以及当某跳(hop)修改内容时附加的“配方”(recipe)—— 一种紧凑的指令,说明如何撤回修改,使转发后的邮件仍可被验证。
  • DKIM2-Signature:记录该跳实际使用的 SMTP 信封(MAIL FROMRCPT TO),并对整个信封签名。此外还包含序列号(sequence number)、时间戳、以及一组标志位(如 donotexplode 禁止扇出、exploded 标记合法扇出、request-feedback 请求反馈)。

两个计数器驱动全局:一个计数器记录签名次数(每跳一次),另一个记录邮件修订次数(仅当内容被修改时递增)。纯透明转发(不修改内容)的节点甚至不需要感知 DKIM2。

DKIM2 如何逐一解决 DKIM1 的问题

  • 重放攻击:每个 DKIM2-Signature 记录了该跳的 mf=(MAIL FROM)和 rt=(RCPT TO),后续跳的发送域名必须与前一跳的收件域名匹配。重放到不同收件人的邮件无法形成有效链。发送方还可通过 donotexplode 标志禁止扇出。
  • 转发断裂:通过 Message-Instance 的配方机制,修改内容的节点可以记录如何撤销改动,从而使后续验证者能够还原初始签名状态。这使得转发不再破坏签名。
  • 无路径记录:序列号将多个签名串联成有序链,每跳都签下了自己的信封,形成不可篡改的保管链。
  • ARC 的信任问题:DKIM2 内置了链式验证,不再需要独立的 ARC 覆盖层。
  • 头部签名不一致:DKIM2 通过 Message-Instance 统一了覆盖范围,减少歧义。
  • 退信不可信(backscatter):DKIM2 引入了标准化反馈机制(通过标志位请求反馈),并允许发送方在签名中声明退信应发送给谁,减少了无辜第三方收到伪造退信的风险。
  • 反馈随意request-feedback 标志为中间件和发送方提供了标准化的反馈请求与路由方式。

DMARCbis:用动态 DNS 树遍历替代静态公共后缀列表

DMARC 自 2012 年标准化以来,核心机制是将 DKIM 和 SPF 的认证结果与 From: 域名进行对齐,然后根据域名发布的策略(无操作、隔离、拒绝)执行。但 DMARC 存在几个长期痛点:

  • 公共后缀列表(PSL) 是静态维护的,更新缓慢,且无法处理私有域(如 co.uk 下的子域)。PSL 的误判会导致对齐规则失效。
  • 部分标签从未真正发挥作用(如 rfpct 等),造成配置混乱。
  • 过去十年积累的操作经验(如如何处理子域、如何应对转发)未能反馈到标准中。

DMARCbis 的改进

  1. 用 DNS 树遍历替代 PSL:接收方不再依赖静态列表,而是通过 DNS 查询从 From: 域名的根开始逐级向上查找,直到找到第一个发布 DMARC 记录的域名。这使对齐规则能动态适应任何域名结构,包括私有域。
  2. 废弃无效标签:移除了 rf(报告格式)、pct(策略百分比)等从未真正工作的标签,简化配置。
  3. 融入操作经验:明确解决了子域聚合、转发场景下的策略继承、以及如何与其他认证机制(如 ARC)协作等问题。
  4. 完善报告机制:改进了聚合报告和失败报告的格式与路由,使其更易于大规模部署。

DMARCbis 的三个 RFC 各司其职:RFC 9989 为核心规范,RFC 9990 定义策略,RFC 9991 定义报告。

关键要点

  • DKIM2 的核心创新:将签名从“内容绑定”升级为“传递路径绑定”,通过 Message-InstanceDKIM2-Signature 两个头部构建可验证的保管链。
  • 重放攻击的终结:每个签名绑定了 SMTP 信封(MAIL FROMRCPT TO),重放后链无法闭合。
  • 转发友好:通过配方机制,修改内容的节点可以告知如何撤销改动,使转发不再破坏签名。
  • 无需 ARC:DKIM2 内置了链式验证,ARC 作为独立覆盖层不再必要。
  • DMARCbis 的 PSL 替代方案:DNS 树遍历消除了对静态列表的依赖,适配所有域名结构。
  • 废弃无效标签:DMARCbis 精简了配置项,降低了部署复杂度。
  • 标准化反馈
查看原文 →stalw.art