Skip to main content

4. Resolving (解析)

4. Resolving (解析)

本节描述包含安全感知解析器 (security-aware resolver) 功能的实体的行为.在许多情况下, 此类功能将是安全感知递归名称服务器的一部分.

4.1. EDNS Support (EDNS 支持)

安全感知解析器的实现必须 (MUST) 支持 EDNS0 消息大小扩展, 必须 (MUST) 支持至少 1220 八位字节的消息大小, 并且应该 (SHOULD) 支持 4000 八位字节的消息大小.

4.2. Signature Verification Support (签名验证支持)

安全感知解析器必须 (MUST) 支持第 5 节中描述的签名验证机制, 并且必须 (MUST) 将它们应用于每个接收的响应, 除非:

  • 安全感知解析器是安全感知递归名称服务器的一部分, 并且响应是代表设置了 CD 位的查询进行递归的结果
  • 响应是通过某种形式的应用程序接口直接生成的查询的结果, 该接口指示安全感知解析器不要对此查询执行验证
  • 本地策略 (local policy) 已禁用对此查询的验证

安全感知解析器对签名验证的支持必须 (MUST) 包括对通配符所有者名称 (wildcard owner name) 的验证支持.

安全感知解析器可以 (MAY) 查询缺失的安全 RR 以尝试执行验证.当尝试检索位于区域切割的父区域侧的缺失 NSEC RR 时, 安全感知迭代模式解析器 (security-aware iterative-mode resolver) 必须 (MUST) 查询父区域的名称服务器, 而不是子区域.

当尝试检索缺失的 DS 时, 安全感知迭代模式解析器必须 (MUST) 查询父区域的名称服务器, 而不是子区域.

4.3. Determining Security Status of Data (确定数据的安全状态)

安全感知解析器必须 (MUST) 能够确定是否应该期望特定 RRset 被签名.安全感知解析器必须能够区分四种情况:

Secure (安全): 解析器能够从受信任的安全锚点 (trusted security anchor) 构建到 RRset 的签名 DNSKEY 和 DS RR 链的 RRset.在这种情况下, RRset 应该被签名并且需要进行签名验证.

Insecure (不安全): 解析器知道从任何受信任的起点到 RRset 没有签名 DNSKEY 和 DS RR 链的 RRset.当目标 RRset 位于未签名区域或未签名区域的后代中时, 可能会发生这种情况.在这种情况下, RRset 可能被签名也可能不被签名, 但解析器将无法验证签名.

Bogus (伪造): 解析器认为应该能够建立信任链但无法这样做的 RRset, 可能是由于某种原因无法验证的签名, 或者是由于缺少相关 DNSSEC RR 指示应该存在的数据.这种情况可能表明攻击, 但也可能表明配置错误或某种形式的数据损坏.

Indeterminate (不确定): 解析器无法确定 RRset 是否应该被签名的 RRset, 因为解析器无法获得必要的 DNSSEC RR.当安全感知解析器无法联系相关区域的安全感知名称服务器时, 可能会发生这种情况.

4.4. Configured Trust Anchors (配置的信任锚点)

安全感知解析器必须 (MUST) 能够配置至少一个受信任的公钥或 DS RR, 并且应该 (SHOULD) 能够配置多个受信任的公钥或 DS RR.

由于没有这样配置的信任锚点, 安全感知解析器将无法验证签名, 因此解析器应该 (SHOULD) 在启动时具有某种合理强大的机制来获取此类密钥.

4.5. Response Caching (响应缓存)

安全感知解析器应该 (SHOULD) 将每个响应作为单个原子条目缓存, 包含整个应答, 包括命名的 RRset 以及与其关联的任何 RRSIG RR 和 NSEC RR, 无论响应的安全状态如何.

安全感知解析器绝对不能 (MUST NOT) 独立于它们签名的 RRset 缓存 RRSIG RR, 因为这可能允许攻击者使用新数据重放旧的 RRSIG.

4.6. Handling of the CD and AD Bits (CD 和 AD 位的处理)

CD 位控制安全感知解析器是否对特定查询执行验证.安全感知解析器必须 (MUST) 在响应中设置 AD 位, 当且仅当解析器认为响应的 Answer 和 Authority 部分中的所有 RRset 都是真实的 (authentic).

非安全感知解析器绝对不能 (MUST NOT) 在响应中设置 AD 位.安全感知解析器绝对不能 (MUST NOT) 设置 AD 位, 除非它已根据本规范中描述的规则验证了数据.

4.7. Caching BAD Data (缓存 BAD 数据)

解析器可以 (MAY) 以不同于具有"良好"安全状态的数据的方式缓存具有"不良"安全状态的数据.但是, 解析器绝对不能 (MUST NOT) 使用具有不良安全状态的缓存数据, 除非:

  • 解析器正在响应设置了 CD 位的查询
  • 不良数据是设置了 CD 位的查询的结果
  • 本地策略明确授权使用不良数据

4.8. Synthesized CNAMEs (合成的 CNAME)

安全感知解析器必须 (MUST) 在处理合成的 CNAME RR 时应用特殊处理规则, 如 [RFC2672] 中所述.解析器绝对不能 (MUST NOT) 期望合成的 CNAME 被签名, 但必须 (MUST) 验证合成 CNAME 的 DNAME RR.

4.9. Stub Resolvers (存根解析器)

安全感知存根解析器 (security-aware stub resolver) 是充当 DNS 解析器并具有执行签名验证能力但不充当完整安全感知递归名称服务器的实体.存根解析器通常依赖递归名称服务器代表它们执行大多数 DNS 操作.

4.9.1. Handling of the DO Bit (DO 位的处理)

安全感知存根解析器应该 (SHOULD) 在查询中设置 DO 位, 以指示它希望在响应中接收 DNSSEC RR.

4.9.2. Handling of the CD Bit (CD 位的处理)

安全感知存根解析器可以 (MAY) 在查询中设置 CD 位, 以指示它愿意自己执行验证, 而不是依赖其发送查询的名称服务器代表其执行验证.

4.9.3. Handling of the AD Bit (AD 位的处理)

安全感知存根解析器可以 (MAY) 使用响应中 AD 位的设置来指示发送响应的名称服务器是否代表存根解析器验证了数据.

在查询中设置 CD 位的安全感知存根解析器必须 (MUST) 忽略响应中的 AD 位, 因为名称服务器被明确指示不要代表存根解析器执行验证.