DNSSEC

域名系统安全扩展

DNS 域名系统 将域名与计算机地址关联起来的互联网目录。 完整定义(DNS)的扩展,为DNS应答添加数字签名。借助这些签名,解析器 代表用户查询域名的DNS服务器。 完整定义(解析器)(为用户查询名称的服务器)可以核实应答是否真实、在传输途中是否被更改。所有者通过其DNS托管商和注册服务机构 代客户向注册管理机构注册域名的公司。 完整定义(注册服务机构)启用它。

类别
DNS与技术基础

更新于 阅读需5分钟

DNSSEC为域名 由以点分隔的标签组成、便于阅读的互联网名称。 完整定义(域名)系统的应答加上数字签名,使计算机能够核实应答确实来自域名的所有者,且在传输途中未被篡改。它不隐藏任何内容,也不能阻止所有攻击。启用它需要DNS服务商、注册服务机构和注册管理机构 顶级域的中央数据库和系统,也泛指运营它们的组织。 完整定义(注册管理机构)共同配合。

用浅显的话说,DNSSEC能防范什么

有人访问example.com时,解析器会查询它的地址。没有DNSSEC时,攻击者只要向解析器提供伪造的应答,就能把访问者引向错误的服务器。有了DNSSEC,进行验证的解析器会检查签名,并拒绝伪造的应答。

RFC Request for Comments 记录互联网技术标准和实践的系列文件中的一份编号文件。 完整定义(RFC) 4033(2005年3月)规定了DNSSEC提供的保障:DNS数据的来源证明和完整性。它不提供保密性,因此应答仍然可读,也不能防范拒绝服务攻击。它只涵盖DNS应答,不涉及网络钓鱼 冒充可信方窃取数据,常借助仿冒域名。 完整定义(网络钓鱼)或注册服务机构账户被盗用。RFC 9364(2023年2月)将DNSSEC称为验证DNS数据的现行最佳实践;某个域名是否使用它,由其所有者决定。

从根到域名的信任链如何运作

进行验证的解析器从一个它已经信任的密钥出发:信任锚 DNSSEC解析器从一开始就信任的密钥,通常是根区的密钥。 完整定义(信任锚),即由IANA 互联网号码分配机构 协调根区、IP地址和协议号的一组职能。 完整定义(IANA)发布的根区 DNS的最顶层,列出每个顶级域及其域名服务器。 完整定义(根区)密钥签名密钥。它从这里沿着一条链条进行:

  1. 根区保存着.com的一条已签名的DS记录 委派签名者 父区域中将域名的DNSSEC密钥连入信任链的记录。 完整定义(DS记录)。
  2. 这条DS记录与.com区域中的一个密钥相匹配,解析器借此验证.com的记录,其中包括example.com的DS记录。
  3. 这条DS记录与example.com的密钥相匹配,由此验证该域名自身的记录。

如果某个已签名区域的上级区域中没有DS记录,它就是一个“island of security”(安全孤岛):无法从根开始对其进行验证。

如果每个签名都验证通过,应答即为安全(secure);如果有签名证据表明上级区域中没有该区域的DS记录,应答即为不安全(insecure);如果预期的签名缺失、过期或无法使用,应答即为伪造(bogus)(RFC 4033)。对于伪造应答,解析器通常返回错误SERVFAIL 服务器故障 表示查询失败的DNS答复,常因域名服务器或DNSSEC出错所致。 完整定义(SERVFAIL)(RFC 4035)。

密钥和记录:KSK、ZSK、DNSKEY、DS和RRSIG

  • DNSKEY记录发布区域的公钥。
  • RRSIG 资源记录签名 承载一组记录的DNSSEC签名的DNS记录。 完整定义(RRSIG)记录存放签名,每个签名只在开始日期和到期 域名注册如不续费即告结束的日期。 完整定义(到期)日期之间有效。
  • DS记录位于上级区域,存放密钥标签 域名中以点分隔的一个部分,最长63个字符。 完整定义(标签)、算法编号以及下级区域密钥的摘要。
  • KSK 密钥签名密钥 为区的密钥集签名、并由父区引用的DNSSEC密钥。 完整定义(KSK)(密钥签名密钥)只对区域的密钥集进行签名,上级区域的DS记录指向它。ZSK 区域签名密钥 对区域中普通记录进行签名的DNSSEC密钥。 完整定义(ZSK)(区域签名 为DNS区域中的所有记录添加DNSSEC签名。 完整定义(区域签名)密钥)对其他所有内容进行签名。

RFC 6781(2012年12月)指出,验证方对这两种密钥一视同仁:这种划分是出于运维考虑,有些区域用同一个密钥承担两种角色。

证明某个名称不存在需要专门的记录。NSEC记录给出下一个存在的名称,这使任何人都能列出整个区域(即“zone walking”,区域遍历)。NSEC3(RFC 5155)先对名称进行哈希处理,但仍会暴露区域规模等细节。

启用DNSSEC:注册服务机构、注册管理机构和DNS服务商各自的工作

  1. DNS服务商对区域进行签名,并发布DNSKEY和RRSIG记录。
  2. DS数据或密钥数据被提交给注册服务机构。
  3. 注册服务机构通过带secDNS扩展 用于将域名的DNSSEC数据发送给注册管理机构的EPP扩展。 完整定义(secDNS扩展)的EPP 可扩展供应协议 注册服务机构用来在注册管理机构管理域名的协议。 完整定义(EPP)(RFC 5910,2010年5月)将其发送给注册管理机构,形式可以是DS数据,也可以是密钥数据,由注册管理机构据此生成DS记录。
  4. 注册管理机构在顶级域区域中发布DS记录。

如果注册服务机构同时也是DNS服务商,第1步到第3步往往只是一项设置。

对于通用顶级域,2013年《注册服务机构认证协议》要求注册服务机构使用RFC 5910,将添加、删除 从注册管理机构中删除域名注册,由此开始其释放过程。 完整定义(删除)或更改密钥材料的请求转交给支持DNSSEC的注册管理机构。基本注册管理机构协议 ICANN与gTLD注册管理运行机构之间的合同。 完整定义(注册管理机构协议)(2024年1月21日批准,截至2026年10月仍为现行版本)要求通用顶级域注册管理机构对其区域进行签名,并接受下级域名提交的密钥材料。国家和地区代码顶级域的规则各不相同,需向注册服务机构或注册管理机构核实。

此外还有一条自动化途径:DNS服务商发布CDS和CDNSKEY Child DS and Child DNSKEY 区域发布的记录,供注册管理机构自动更新其DNSSEC数据。 完整定义(CDS和CDNSKEY)记录,说明DS记录应当是什么,部分注册管理机构和注册服务机构会扫描这些记录。RFC 8078(2017年3月)增加了一种用于移除DNSSEC的信号;RFC 9615(2024年7月)使上级区域能够在启用DNSSEC之前,以密码学方式验证这些记录。

可能出现的问题:签名过期、密钥轮换和更换DNS服务商

  • 签名过期。RRSIG记录未及时更新,会使应答成为伪造应答。
  • DS记录没有匹配的密钥。RFC 6781称之为“security lameness”:该域名对所有进行验证的解析器都会失效,修复也需要时间才能扩散。因此更换KSK时,必须先让新的DS记录出现在上级区域,再移除旧密钥。
  • 更换DNS服务商。旧运营方掌控着密钥。最佳方法是协调进行密钥轮换。如果旧运营方不配合,就先移除DS记录,再更换域名服务器 保存域名DNS记录并应答查询的服务器。 完整定义(域名服务器),待变更扩散后再添加新的DS记录。其间该域名处于未签名状态,RFC 8078认为这比验证失败更可取。较短的TTL 生存时间 解析器可将DNS记录的缓存副本保留多久。 完整定义(TTL)有助于缩短这一过程。

对于使用验证型解析器的用户,故障表现为SERVFAIL,而该域名对其他所有人可能仍然正常。

在根区层面,截至2026年10月9日,ICANN 互联网名称与数字地址分配机构 协调全球DNS和gTLD政策的非营利组织。 完整定义(ICANN)计划于2026年10月11日更换根区KSK:由KSK-2024(密钥标签38696)接替KSK-2017(密钥标签20326),后者将于2027年1月11日撤销,并于2027年3月22日移除。这涉及的是验证型解析器的运营方,他们需要新的信任锚,与注册人 持有域名注册的个人或组织。 完整定义(注册人)无关。

DNSSEC与加密DNS的区别

DNSSEC对数据进行签名,使任何解析器都能核验,但所有内容仍然可读。基于TLS 传输层安全协议 对浏览器或应用与服务器之间的连接进行加密的标准。 完整定义(TLS)的DNS(DoT 基于TLS的DNS 通过专用端口上经TLS加密的连接进行的DNS查询。 完整定义(DoT))和基于HTTPS 超文本传输安全协议 网页浏览器加载网页时所用协议的加密版本。 完整定义(HTTPS)的DNS(DoH 基于HTTPS的DNS 在加密的HTTPS连接中传输的DNS查询。 完整定义(DoH))对用户设备与解析器之间的连接进行加密,从而保护隐私,但它们不能证明数据来自区域所有者。两者相辅相成。

来源