4. Usage Profiles (使用配置文件)
此协议提供了灵活性来适应几种不同的使用场景. 本文档定义了两种使用配置文件: (1) 机会性隐私 (opportunistic privacy) 和 (2) 带外密钥固定认证 (out-of-band key-pinned authentication), 如果客户端与支持 TLS 的 DNS 服务器有信任关系, 可以使用它来获得更强的隐私保证. 额外的认证方法将在即将发布的文档 [TLS-DTLS-PROFILES] 中定义.
4.1 Opportunistic Privacy Profile (机会性隐私配置文件)
对于机会性隐私, 类似于 SMTP 机会性安全 [RFC7435], 不要求隐私, 但在可能的情况下希望有隐私.
对于机会性隐私, 客户端可能从不受信任的来源了解到启用 TLS 的递归 DNS 解析器. 一个可能的示例流程是, 客户端使用 DHCP DNS 服务器选项 [RFC3646] 发现启用 TLS 的递归解析器的 IP 地址, 然后在端口 853 上尝试 DNS over TLS. 对于这样发现的 DNS 服务器, 客户端可能会也可能不会验证解析器. 这些选择最大化了可用性和性能, 但使客户端容易受到消除隐私的路径攻击 (on-path attacks).
机会性隐私可以被任何当前的客户端使用, 但它仅在没有路径主动攻击者 (on-path active attackers) 时提供隐私.
4.2 Out-of-Band Key-Pinned Privacy Profile (带外密钥固定隐私配置文件)
带外密钥固定隐私配置文件可用于 DNS 客户端和服务器之间已经存在既定信任关系的环境中 (例如, 企业网络中的存根到递归、积极维护的合同服务关系, 或使用公共 DNS 解析器的客户端). 此配置文件的结果是, 客户端通过仅连接到它可以验证身份的服务器来对其 DNS 数据的隐私有强有力的保证. 此配置文件中的 DNS-over-TLS 服务运营商应提供特定于被固定服务的固定密钥 (pins) (即, 直接属于最终实体或属于特定于服务的私有证书颁发机构 (CA) 的公钥), 而不是通用公共 CA 的公钥.
在此配置文件中, 客户端通过以类似于 [RFC7469] 中描述的方式匹配一组 SPKI 指纹 (SPKI Fingerprints) 来对服务器进行身份验证. 对于此带外密钥固定隐私配置文件, 客户端管理员应该 (SHOULD) 与主固定密钥 (primary pin) 一起部署备份固定密钥 (backup pin), 原因在 [RFC7469] 中有说明. 备份固定密钥在密钥轮换 (key rollover) 时特别有用, 这样服务器运营商就不必同时与所有客户端协调密钥转换. 在服务器上更改密钥后, 应该 (SHOULD) 以某种安全方式将更新的固定密钥集分发给所有客户端, 以准备未来的密钥轮换. 带外固定密钥集更新的机制超出了本文档的范围.
这样的客户端将仅使用已提供 SPKI 指纹固定密钥集的 DNS 服务器. 拥有受信任的预部署固定密钥集允许客户端检测和防止中间人攻击 (person-in-the-middle) 和降级攻击 (downgrade attacks).
然而, 在配置网络时, 配置的 DNS 服务器可能暂时不可用. 例如, 对于需要通过基于 Web 的登录进行身份验证的网络上的客户端, 此类身份验证可能依赖于 DNS 拦截和欺骗. 在网络配置期间可以 (MAY) 使用诸如 DNSSEC-trigger [DNSSEC-TRIGGER] 使用的技术, 目的是在身份验证后过渡到指定的 DNS 提供商. 在此类引导 (bootstrap) 期间, 必须 (MUST) 尽可能警告用户 DNS 不是私有的.
在成功的 TLS 连接和握手后, 客户端计算在验证的服务器证书链中找到的公钥的 SPKI 指纹 (或者如果服务器提供原始公钥 (raw public key), 则计算该原始公钥的指纹). 如果计算的指纹与配置的固定密钥之一完全匹配, 客户端将正常继续连接. 否则, 客户端必须 (MUST) 将 SPKI 验证失败视为不可恢复的错误. 附录 A 提供了在实践中如何执行此身份验证的详细示例.
此隐私配置文件的实现必须 (MUST) 支持将指纹计算为 X.509 证书的 SPKI 的 DER 编码的 ASN.1 表示的 SHA-256 [RFC6234] 哈希.
实现必须 (MUST) 支持将 SHA-256 指纹表示为 base64 编码的字符串 [RFC4648]. 也可以 (MAY) 支持其他指纹类型.