1. Introduction (简介)
1. Introduction (简介)
1.1. Rationale (基本原理)
DNS 安全扩展 (DNS Security Extensions) 引入了 NSEC RR 以提供认证拒绝存在 (authenticated denial of existence)。尽管 NSEC RR 满足了认证拒绝存在的要求, 但它引入了一个副作用, 即区域的内容可以被枚举 (enumerated)。这一特性带来了不希望出现的策略问题。
枚举是通过存在于已签名区域内的 NSEC 记录集合实现的。一条 NSEC 记录列出了两个按规范顺序排列的名称, 以表明在这两个名称之间不存在任何内容。完整的 NSEC 记录集列出了区域中的所有名称。通过查询不存在的名称来枚举区域的内容是很简单的。
枚举的区域可以被用作, 例如, 垃圾邮件的可能电子邮件地址来源, 或作为多个 WHOIS 查询的关键字来揭示许多注册机构可能有法律义务保护的注册人数据。因此, 许多注册机构禁止复制其区域数据; 然而, 使用 NSEC RR 使这些策略无法执行。
第二个问题是, 相对于感知的安全收益而言, 对未签名区域的委托进行加密保护的成本很高, 在两种情况下: 大型的、以委托为中心的区域 (large, delegation-centric zones), 以及不安全委托 (insecure delegations) 将快速更新的区域。在这些情况下, 维护 NSEC RR 链的成本可能极高, 对这些未安全的区域使用 "Opt-Out" 约定可能更合适。
本文档介绍了 NSEC3 资源记录 (NSEC3 Resource Record), 它可以用作 NSEC 的替代方案来缓解这些问题。
早期解决这些问题的工作包括 [DNSEXT-NO], [RFC4956], 和 [DNSEXT-NSEC2v2]。
1.2. Requirements (要求)
本文档中的关键词 "必须 (MUST)", "绝对不能 (MUST NOT)", "要求 (REQUIRED)", "应当 (SHALL)", "不应 (SHALL NOT)", "应该 (SHOULD)", "不应该 (SHOULD NOT)", "推荐 (RECOMMENDED)", "可以 (MAY)", 和 "可选 (OPTIONAL)" 的含义见 [RFC2119] 中的定义。
1.3. Terminology (术语)
假定读者熟悉 [RFC1034], [RFC1035], [RFC4033], [RFC4034], [RFC4035] 中描述的基本 DNS 和 DNSSEC 概念, 以及更新它们的后续 RFC: [RFC2136], [RFC2181], 和 [RFC2308]。
本文档中使用以下术语:
Zone enumeration (区域枚举): 通过连续查询发现区域完整内容的实践。在引入 DNSSEC 之前, 区域枚举是非常困难的。
Original owner name (原始所有者名称): 与哈希所有者名称对应的所有者名称。
Hashed owner name (哈希所有者名称): 对所有者名称应用哈希函数后创建的所有者名称。
Hash order (哈希顺序): 哈希所有者名称根据其数值排列的顺序, 将最左侧 (编号最低) 的八位字节视为最高有效八位字节。请注意, 此顺序与 [RFC4034] 中指定的规范 DNS 名称顺序相同, 当哈希所有者名称使用扩展十六进制字母表 (Extended Hex Alphabet) [RFC4648] 以 base32 编码时。
Empty non-terminal (空非终结符): 不拥有任何资源记录, 但有一个或多个子域拥有资源记录的域名。
Delegation (委托): 一个名称不同于当前区域顶点 (zone apex) 的 NS RRSet (非区域顶点), 表示对子区域的委托。
Secure delegation (安全委托): 包含委托 (NS RRSet) 和已签名的 DS RRSet 的名称, 表示对已签名子区域的委托。
Insecure delegation (不安全委托): 包含委托 (NS RRSet) 但缺少 DS RRSet 的名称, 表示对未签名子区域的委托。
Opt-Out NSEC3 resource record (Opt-Out NSEC3 资源记录): Opt-Out 标志设置为 1 的 NSEC3 资源记录。
Opt-Out zone (Opt-Out 区域): 至少有一条 Opt-Out NSEC3 RR 的区域。
Closest encloser (最近封闭者): 名称的最长现有祖先。另见 [RFC4592] 的 3.3.1 节。
Closest provable encloser (最近可证明封闭者): 名称的可被证明存在的最长祖先。请注意, 这仅在 Opt-Out 区域中与最近封闭者不同。
Next closer name (下一个更近名称): 比名称的最近可证明封闭者长一个标签的名称。
Base32: [RFC4648] 中指定的 "Base 32 Encoding with Extended Hex Alphabet"。请注意, 在 NSEC3 规范中不使用尾随填充字符 ("=")。
To cover (覆盖): 如果名称或 "next closer" 名称的哈希值落在 NSEC3 的所有者名称和下一个哈希所有者名称之间, 则称 NSEC3 RR "覆盖" 该名称。换句话说, 如果它证明了该名称的不存在, 无论是直接证明还是通过证明该名称的祖先的不存在。
To match (匹配): 如果 NSEC3 RR 的所有者名称与该名称的哈希所有者名称相同, 则称 NSEC3 RR "匹配" 该名称。