跳到主要内容

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 的总数 (加上空非终结符), 以及存在哪些类型. 这可以通过添加虚拟条目来缓解, 但肯定可以找到上限.