是的,但如果不被发现,这将很难做到。
从纯粹的技术角度来看,您是正确的,没有什么能阻止一个民族国家强迫其管辖范围内的证书颁发机构向他们颁发欺诈性证书,并且大多数 TLS 客户端(包括 Web 浏览器)会在不警告用户的情况下默默地接受该证书.
然而,有几个因素使得这种方法完全不适合政府用于大规模监控,甚至对于有针对性的攻击也存在风险。
被发现的风险
首先,重要的是要注意,如果发现某个 CA 颁发了这样的欺诈性证书,尤其是为了允许政府进行 MITM 攻击,那么该 CA 几乎肯定会使其根证书不被浏览器供应商和其他信任存储所信任. 这将使该 CA 停业,并使欺诈性证书无用。因此,如果一个民族国家想要强制 CA 以这种方式颁发欺诈性证书,他们就必须秘密进行,而公众不会意识到这一点。在实践中,这将是非常困难的。
通过莱纳斯定律发现
在大规模监控的情况下,使用伪造的证书而不被发现几乎是不可能的。即使网络浏览器没有自动检测到他们的连接被欺诈性证书劫持(我们稍后会介绍一些可能发生的方式),这些证书仍然必然不同于发给合法网站运营商的证书,因此可以手动检测。如果向数百万用户提供欺诈性证书,几乎可以肯定有人会注意到(可能是网站运营商自己),整个计划很快就会被发现。它本质上是适用于 TLS 证书的 Linus 定律(“只要有足够的眼球,所有的 bug 都是浅层的”)。
对于针对个人用户的有针对性的攻击,在不被发现的情况下使用欺诈性证书更为可行。只有目标用户才有机会注意到证书已更改,而普通用户甚至不太可能检查类似的内容。但是,仍然存在通过其他方式检测到欺诈性证书的重大风险。
通过 HPKP 发现
普通用户最有可能检测到他们正在使用欺诈性颁发的证书的方法是访问使用 HTTP 公钥固定 (HPKP) 的站点。HPKP 是现代浏览器的一项功能,它可以让网站告诉浏览器“将来对该网站的访问应该只使用这些已知密钥之一来保护”。如果用户在政府开始监视他们之前访问过某个站点,那么如果该站点提供了欺诈性证书,那么以后的访问将导致警告消息。这可能会引起用户的怀疑,如果他们要调查出现警告消息的原因,他们可能会发现并报告欺诈证书。
通过泄漏发现
政府机构、CA 或其一名员工也有可能将欺诈性证书泄露给第三方。您可能会认为这不太可能,但这种泄漏总是有可能的,而且欺诈性证书本身就是强有力的密码证明,证明颁发它们的 CA 以某种方式受到了损害,因此即使是完全匿名的泄密者也可以毫不费力地让安全专家相信其合法性他们的故事。
未来:证书透明度
但是,如果民族国家只针对少数用户,避免监视使用 HPKP 的网站,并小心确保没有人将欺诈性证书泄露给公众呢?那他们就可以逍遥法外了,对吧?眼下; 应该是。但是,还有另一种方法可能会发现欺诈性颁发的证书,这将在不久的将来变得更加困难:证书透明度。
证书透明度 (CT) 是一个可公开审计的 TLS 证书记录系统,CA 可以使用它来记录他们签署的所有证书。如果将欺诈性证书提交到 CT 日志,很可能有人会注意到。目前,政府很容易通过简单地不将证书提交到日志来避免检测,但从2018 年 4 月开始,至少有一个浏览器 (Chrome) 将开始强制对所有新证书进行日志记录。这意味着至少有 2 个受信任的日志需要对声明他们已记录给定证书的声明进行加密签名,才能将其视为有效。
浏览器和其他第三方审核员将通过定期检查他们声称已记录的证书是否确实在日志中(尽管 Chrome尚未实现此功能)以及所有各方的日志是否一致,来信守 CT 日志查看它们。(因此,证书透明度日志不能只告诉客户端它记录了证书,而是在第三方联系时假装证书不存在。)
图片来源:https ://www.certificate-transparency.org/how-ct-works#TOC-Typical-System-Configuration
为了绕过这些检查,一个民族国家需要妥协或强制多个证书透明度日志和独立的第三方审计员和监视器,其中一些可能在他们的管辖范围之外,所有这些都不会泄露民族国家的任何一方对公众采取的行动。这将是非常困难的。事实上,即使是一个民族国家也很可能会在这一点上放弃并开始考虑完全不同的方法来监视他们的目标。
总结
是的,政府可以强迫 CA 为他们颁发一个网站的假证书。但为了让这个工作有效,他们必须对他们获得证书的事实保密。这意味着他们必须将监视针对相对较少的用户,避免监视使用 HPKP 的网站,确保没有人向公众泄露他们的任何证书,并且从 2018 年 4 月开始,攻击大量用户证书透明度日志和第三方监控器和审核员一次。简而言之,可能性不大。