Appendix A. Design Rationale (附录 A. 设计理由)
Appendix A. Design Rationale (设计理由)
TLS ALPN 质询旨在改进早期 ACME 草案中定义的 TLS SNI 质询. 对于要么运行大型 TLS 层负载均衡系统并希望在该层执行验证, 要么运行从单台主机为大量 DNS 名称提供服务的服务器的服务提供商而言, TLS SNI 质询十分便利, 因为它允许完全在 TLS 层内完成验证. 由于 TLS SNI 质询所提供的价值被认为足够大, 因而撰写了本文档以提供一种新的质询类型, 解决既有安全问题.
Frans Rosen 发现了 TLS SNI 质询中的一个安全问题, 它使得各类服务提供商的用户得以虚假验证同一提供商其他用户的 DNS 名称控制权. 在设计 TLS SNI 质询时, 曾假设用户仅能对已向其服务提供商注册的域名, 通过 SNI 响应 TLS 流量 (即, 若用户注册了 a.example, 则其只能响应针对 a.example 的 SNI 请求, 而不能响应针对 b.example 的 SNI 请求). 事实证明, 许多大型服务提供商并不保证这一性质. 因此, 用户得以对 TLS SNI 质询验证过程所使用的名称响应 SNI 请求. 这意味着 (1) 若用户 A 与用户 B 分别注册了主机 A 与主机 B, 用户 A 仍能为用户 B 主张构造出的 SNI 质询名称, 且 (2) 当验证连接建立时, 用户 A 能够应答, 从而虚假证明对主机 B 的控制. 由于所使用的 SNI 名称是待验证域名的子域, 而非域名本身, 它很可能尚未在该服务提供商处注册用于流量路由, 从而使劫持更容易发生.