[ DNS和域名 ]

DNSSEC和电子邮件身份验证:签名DNS添加内容

验证邮件依赖项背后的DNS链,不会将签名DNS误用于消息身份验证或自动DANE部署。

由EmailAuth研究团队提供

[ 要点 ]

  • DNSSEC验证DNS数据,而不是消息内容或发件人授权。
  • 区分安全、不安全、虚假和不确定状态。
  • 单独维护链并测试 TLSA 关联。
在此页面上

DNSSEC 当验证者可以建立信任链时,将原始身份验证和完整性添加到DNS数据中。它不会加密DNS答案、批准发送服务或验证消息内容。它对电子邮件的价值来自于保护DNS依赖性,当验证链中断时会产生可用性后果。

验证链而不是签名的存在

参考: RFC 4033 §3, RFC 4035 §5.

签名的答案包含加密材料,但仅存在 RRSIG 并不能成功验证。验证者需要一个可信的起点、适当的 DNSKEY 和委托信息、可用的签名和有效的计时。父 DS 数据和子密钥在更改期间必须保持协调。

使用具有已知信任配置的验证解析器或支持验证的诊断程序。如果应用程序依赖于解析器的经过身份验证的数据指示,则到该解析器的路径和信任关系就很重要。仅使用工具请求DNSSEC记录并不会使该工具对其进行验证,并且权威应答标志也不是DNSSEC验证结果。

将验证状态分开

参考: RFC 4035 §4.3, RFC 7672 §2.1.

安全结果具有针对返回数据的经过验证的信任链。不安全的结果可能是合法的未签名分支,并且与检测到的伪造不同义。虚假结果意味着预期的验证失败。还必须区分不确定结果:当解析器由于无法获取必要的DNSSEC记录而无法确定是否应该对数据进行签名时RFC 4035使用它。 RFC 7672使用RFC 4035的SMTP含义 DANE 并将这种情况视为失败,而不是默默地将其视为未签名。保留诊断上下文,因为RFC 4033对不确定性的描述不同。

验证解析器可以针对虚假数据返回SERVFAIL ,但SERVFAIL本身无法诊断DNSSEC :其他DNS故障可能会产生该错误。检查验证诊断、父 DS、子 DNSKEY、签名和时间。不要禁用验证作为默认修复,因为这样做会更改正在测试的信任属性。

重现三个不同的邮件依赖关系

参考: RFC 4035 §5.2, RFC 4035 §5.4.

合成案例 A 具有签名区域、匹配的父 DS 和子 DNSKEY,以及所查询邮件记录的当前有效签名。配置的验证器的预期结果是安全的。案例 B 有一个故意未签名的孩子,其委托中没有 DS 的经过验证的证明。预期结果是不安全的,而不是虚假的。

情况 C 在更换子密钥后将旧 DS 留在父级,而没有兼容的翻转。预期结果是验证链损坏,并且对于定义的验证解析器固定装置, SERVFAIL会变为普通查询。非验证直接查找可能仍会显示TXT或 MX记录。这种差异并不能证明验证解析器是错误的。

仅在具有自己的信任锚的一次性签名测试层次结构中重现这些情况。保留父 DS、子 DNSKEY、查询记录、RRSIG、解析器配置、时钟和详细验证跟踪。查询每种情况下相同的所有者和类型并比较分类状态。这些递归解析器场景是测试规范,而不是声称的实时签名区域部署或递归验证器执行。后来捕获的离线验证案例部分记录了 2026 年 11 月 7 日捕获的单独的、有界的加密装置;它没有观察到SERVFAIL或测试集成SMTP DANE 。

了解DANE附加要求

参考: RFC 7672 §2.2, RFC 7672 §3.

SMTP DANE使用 DNSSEC 验证 TLSA 关联和发送方支持以验证传输。单独对域进行签名不会创建所需的 TLSA 记录或使每个发件人强制执行DANE 。 MX和 TLSA 发现路径以及证书关联需要根据RFC 7672进行自己的验证。

即使DNSSEC保持正常运行,证书或密钥翻转也可能会破坏 TLSA 匹配。相反,损坏的DNSSEC链可能会阻止支持的发件人安全地使用其他正确的 TLSA 数据。将两个层一起规划并保留受控的SMTP测试。 DANE和DNSSEC都不能替代 SPF, DKIM 或者 DMARC.

将签名作为维护的依赖项进行操作

参考: RFC 6781 §4.1.

记录签名、注册商 DS 更新、密钥轮转和监控的所有权。在更改DNS提供商之前,请确定是否保留或转换密钥和链。监视相关路径的签名有效性和验证,并在关闭故障之前要求恢复证据。报告观察到的确切DNS信任和邮件行为,而不是声称签名的DNS可以确保所有电子邮件的安全。

捕获的离线验证案例

参考: RFC 4035 §5.

保留的捕获(已检查但未为本次审查重新运行)记录了一个孤立的加密装置于 2026 年 11 月 7 日20:34:42 UTC 使用 Python 3.12.14 和 dnspython 2.9.2 执行。例如,它将生成的父 DNSKEY 作为其实验室信任锚,为signed.example生成子密钥,使用父密钥签署子 DS 并签署测试 TXT记录 与儿童钥匙。 DS 和TXT的实际签名检查成功,并且计算出的 SHA-256 DS 与孩子的 DNSKEY 相匹配。捕获的结果是经过验证的离线链。

对于断链情况,夹具会生成替换子密钥,同时保留旧 DS。计算出的 DS 不再匹配,并且夹具拒绝了该链。它没有运行递归验证器,也没有观察到SERVFAIL 。对于未签名的情况,它在unsigned.example上验证了父签名的 NSEC,其确切名称位图包含 NS 并省略了 DS,然后将该委托归类为不安全。这个狭隘的证明并没有实现一般的否认存在解析器。

要重现,请创建 ECDSA P-256 父密钥和子密钥,构建 DNSKEY 和 DS 记录,使用有限的启动/过期时间对 DS 和TXT进行签名,并根据固定的父密钥和匹配的子密钥调用 dnspython 的DNSSEC验证操作。更换不匹配情况下的子密钥。对于未签名的情况,验证精确委托 NSEC 签名并检查其位图。保留密钥的公开记录、签名、验证时间、依赖版本和结果;保持测试私钥是一次性的。证据显示实际的本地加密操作,而不是公共DNS验证、生产SMTP DANE或已部署的递归解析器。

[ 外卖 ]

单独维护链并测试 TLSA 关联。

[ 按角色 ]

这对您意味着什么

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

IT/邮件管理员

验证整个链条

当父状态和子状态不一致时,可见记录仍然无法供验证解析器使用。

后续步骤

  1. 一起验证父链和子链。
  2. 保留详细的故障诊断。
  3. 与DNSSEC分开测试 TLSA 匹配。

CISO / SecOps

准确定义信任主张

DNSSEC完整性、 SMTP DANE和消息身份验证保护系统的不同部分。

后续步骤

  1. 检查信任锚和解析器信任。
  2. 将验证绕过视为安全更改。
  3. 需要签名区域迁移的证据。

创始人/非技术人员

将签名视为一项持续的服务

除了初始启用之外,密钥、注册商变更和监控还需要指定所有者。

后续步骤

  1. 分配签名和注册员职责。
  2. 资金监控和展期准备。
  3. 需要范围安全声明。

[ 常见问题解答 ]

常见问题

DNSSEC是否加密DNS ?

不。它提供数据源身份验证和完整性,而不是查询机密性。

RFC 4033 §3

看到 RRSIG 是否证明有效?

不可以。验证者必须建立链并验证所需的数据。

RFC 4035 §5

未签名的DNS会自动伪造吗?

不会。正确识别的不安全分支与失败的预期验证不同。

RFC 4035 §4.3

SERVFAIL是否证明DNSSEC故障?

否。请调查详细的诊断,因为其他故障可能会返回相同的响应代码。

RFC 4035 §5.5

dig +dnssec 本身会验证所有内容吗?

不。请求DNSSEC数据并不等同于本地加密验证。

RFC 4035 §5

签名是否会自动启用SMTP DANE ?

不需要DANE还需要经过适当验证的 TLSA 关联和发件人支持。

RFC 7672 §2.2

证书更改会破坏DANE吗?

是的。证书或密钥可能不再与发布的 TLSA 关联匹配。

RFC 7672 §4

DNSSEC是否会取代DMARC ?

不会DNS数据验证和消息域身份验证解决了不同的要求。

RFC 4033 §3

[ 来源 ]

来源

  1. RFC 4033

    部分 §3

  2. RFC 4035

    部分 §4.3 · §5 · §5.2 · §5.4 · §5.5

  3. RFC 6781

    部分 §4.1

  4. RFC 7672

    部分 §2.1 · §2.2 · §3 · §4

[ 词汇表 ]

词汇表

DNSSEC
DNS扩展通过验证提供源身份验证和数据完整性。
DS
父区域中的委派签名者数据链接到子签名密钥。
TLSA
将TLS服务与证书或公钥身份验证数据关联的DNS记录。

企业出处

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

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

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

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

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

知识库