跳到主要内容

12. Security Considerations (安全注意事项)

12. Security Considerations (安全注意事项)

12.1. Hashing Considerations (哈希注意事项)

12.1.1. Dictionary Attacks (字典攻击)

NSEC3 RR 仍然容易受到字典攻击 (即, 攻击者检索所有 NSEC3 RR, 然后计算所有可能域名的哈希值, 与 NSEC3 RR 中找到的哈希值进行比较, 从而枚举区域)。这些攻击比枚举原始 NSEC RR 要昂贵得多, 并且在任何情况下, 这样的攻击也可以直接用于名称服务器本身, 通过对所有可能的名称执行查询, 尽管这显然更容易被检测到。这种离线攻击的成本可以通过设置 NSEC3 RR 中的迭代次数来选择。

区域还容易受到预先计算的字典攻击 -- 即, 为所有可能的名称计算一次哈希列表, 然后定期扫描 NSEC3 RR 并与预先计算的哈希值进行比较。通过定期更改盐可以防止这种攻击。

盐应该至少为 64 位长且不可预测, 以便攻击者无法预测盐的值并在区域发布之前计算下一组字典。

12.1.2. Collisions (碰撞)

QNAME 与 NSEC3 RR 的所有者名称之间可能发生哈希碰撞。当它们发生时, 将无法证明碰撞 QNAME 的不存在性。然而, 对于 SHA-1, 这是极不可能的 (大约为 1/2^160)。请注意, DNSSEC 已经依赖于加密哈希函数是第二原像抗性的假设, 因为这些哈希函数用于生成和验证签名和 DS RR。

12.1.3. Transitioning to a New Hash Algorithm (过渡到新的哈希算法)

尽管 NSEC3 和 NSEC3PARAM RR 格式包含哈希算法参数, 但本文档并未定义从一种 NSEC3 哈希算法安全过渡到另一种哈希算法的特定机制。当指定用于 NSEC3 的新哈希算法时, 必须同时定义过渡机制。可能唯一实用且可接受的过渡机制可能需要中间过渡到不安全状态, 或者过渡到使用 NSEC 记录而不是 NSEC3 的状态。

12.1.4. Using High Iteration Values (使用高迭代值)

由于验证器应该将包含具有高迭代值的 NSEC3 RR 的响应视为不安全, 因此区域中仅存在一个具有高迭代值的已签名 NSEC3 RR 就为攻击者提供了可能的降级攻击。

攻击很简单, 就是从响应中删除任何现有的 NSEC3 RR, 并向响应中替换或添加一个 (或多个) 使用高迭代值的 NSEC3 RR。然后验证器将被迫将响应视为不安全。此攻击仅在满足以下所有条件时才有效:

  • 区域中至少存在一个使用高迭代值的已签名 NSEC3 RR。

  • 攻击者可以访问这些 NSEC3 RR 中的一个或多个。当具有高迭代值的 NSEC3 RR 在典型响应中被返回时, 这是显而易见的, 但如果攻击者可以通过 AXFR 或 IXFR 查询或任何其他方法访问区域, 这也可能是真的。

使用大量迭代还会引入针对服务器的额外拒绝服务机会, 因为服务器必须为每个否定或通配符响应计算多个哈希。

12.2. Opt-Out Considerations (Opt-Out 注意事项)

Opt-Out 标志 (O) 允许未签名的名称 (以委派到未签名区域的形式) 存在于其他已签名的区域中。根据定义, 所有未签名的名称都是不安全的, 它们的有效性或存在性无法通过加密方式证明。

一般来说:

  • 具有未签名名称的资源记录 (无论是否存在) 会受到与未签名区域中的 RR 相同的漏洞影响。这些漏洞在 [RFC3833] 中有更详细的描述 (特别注意第 2.3 节 "Name Chaining" 和第 2.6 节 "Authenticated Denial of Domain Names")。

  • 具有签名名称的资源记录无论是否使用 Opt-Out 都具有相同的安全性。

请注意, 无论是否使用 Opt-Out, 不安全的委派都可能被攻击者不可检测地更改。因此, 使用 Opt-Out 时安全性的主要差异是失去了在 Opt-Out NSEC3 RR 范围内证明不安全委派的存在或不存在的能力。

特别是, 这意味着恶意实体可能能够插入或删除具有未签名名称的 RR。这些 RR 通常是 NS RR, 但这也包括已签名的通配符扩展 (虽然通配符 RR 本身是已签名的, 但其扩展名称是未签名的名称)。

请注意, 能够添加委派在功能上等同于能够添加任何 RR 类型: 攻击者只需伪造对其控制下的名称服务器的委派, 并在子区域顶点放置所需的任何 RR。

虽然在特定情况下, 这个问题可能不会带来重大的安全问题, 但一般来说不应轻易忽视。因此, 强烈建议谨慎使用 Opt-Out。特别是, 区域签名工具不应该默认使用 Opt-Out, 并且可以选择根本不支持 Opt-Out。

12.3. Other Considerations (其他注意事项)

遍历 NSEC3 RR 将揭示区域中 RR 的总数 (加上空非终结符), 以及存在哪些类型。这可以通过添加虚拟条目来缓解, 但肯定可以找到上限。