客户端 B 使用 TLS 连接到服务器 A。B 通过它的 FQDN(例如www.alice.tld)和 CA 的根证书知道 A,该 CA 为该 FQDN 向 A 颁发了证书。假设 B 使用 HTTPS 和标准 Web 浏览器,并且 A 持有的证书带有一系列证书,发给位于 B 浏览器白名单中的 CA。
状态参与者 M 能够强制 B 的 ISP 使用路由器 M 提供的资源(或等效地,通过 M 控制下的路由器路由 B 的流量)。M 还能够获得 B 的浏览器将信任的任何 FQDN 的证书,因为 M 已涉足具有此能力的无数 CA 之一。
如果我错了,请纠正我,但是 AFAIK TLS 或 HTTPS 中没有内置任何东西来阻止 M 让他们的路由器执行中间人攻击,其中路由器持有 A 的 FQDN 的流氓证书,使用它来模拟 A wrt B,并连接到 A 和 B 一样(这里是未经身份验证的)。理论上,没有任何公共点对点协议可以有效抵御这种中间人攻击。
但是,在实践中,可以检测到
- 从 A 到 B 的一些具有可信完整性的链接可以做到:A 可以发布它使用的证书(或只是它们的哈希/指纹),B 可以检查它作为 A 使用的证书是否在此列表中。
- 一些公共服务机构可以尝试这样做,而不是 A,通过各种链接收集 A 使用的证书,希望不受 M 的影响,并将其重新发布为推文、无线电广播、印刷的讲义或其他难以-审查员的意思。
- 使用 M 尚未实施对策的协议在 TLS 链接顶部传递相同的信息就足够了。首先,A 发送它当前使用的证书的哈希值的新的实验性 HTTP(S) 标头就可以了。
问题:是否有一些持续的努力来检测这种对 TLS 的中间人攻击?它使用什么方法?