我最近想知道是否有办法确保我的政府不会为了拦截流量而更换 SSL 证书。
我知道几乎所有浏览器都在抱怨自签名证书的情况。但是是什么阻止了政府发行自己的钥匙串呢?
可以想象破坏包含带有CA证书的软件包的存储库,然后颁发自己的证书以解密流量。所有流量都通过政府忠诚的一级运营商,该运营商在提供互联网接入方面也拥有垄断权。
如果这不是可能的情况,是什么机制阻止他们这样做?
我最近想知道是否有办法确保我的政府不会为了拦截流量而更换 SSL 证书。
我知道几乎所有浏览器都在抱怨自签名证书的情况。但是是什么阻止了政府发行自己的钥匙串呢?
可以想象破坏包含带有CA证书的软件包的存储库,然后颁发自己的证书以解密流量。所有流量都通过政府忠诚的一级运营商,该运营商在提供互联网接入方面也拥有垄断权。
如果这不是可能的情况,是什么机制阻止他们这样做?
如果您的对手是强大的民族国家威胁者,那么 Web PKI将无法保护您。
没有什么能阻止他们颁发自己的证书。事实上,许多政府都有自己的证书颁发机构,例如美国 FPKI及其附属机构。查看Firefox当前信任的 CA 列表:
虽然 Firefox目前拒绝信任美国的 FPKI,但它仍然信任许多其他政府运营的 CA,并且一个成熟的民族国家参与者绝对可以访问一些现有的商业 CA。Chrome、Internet Explorer 和 Edge 使用系统信任存储,对于 Windows,它确实包括许多政府证书颁发机构,包括美国 FPKI。其中任何一个都可用于为任何网站签署有效证书,并且您的浏览器会很高兴地信任它们而不会眨眼。
虽然证书透明度(CT)的新实验性标准有助于减少错误颁发证书的影响,但它并不能防止控制恶意 CA 的专门攻击者。然而,一旦它得到更大的采用,它可能会在短时间内更容易发现恶意或行为不端的 CA,但它不会在执行攻击时立即阻止攻击。
一些浏览器使用证书固定,其中重要和备受瞩目的域根据允许的证书颁发机构的硬编码列表进行验证。为这些域签署欺诈性证书将需要破坏他们当前使用的 CA。不幸的是,这仅适用于少数域,并不能保护整个网络。
部分解决方案是拒绝信任没有 .gov TLD 且其证书由政府 CA 颁发的域,这可以在客户端实施,但它可能对现实世界的影响很小。敌对政府不会与国营 CA 签署恶意网站,因为这会立即将攻击归咎于他们。相反,他们会利用与现有 CA 的隐蔽关系来欺骗他们或强迫他们签署证书。如上一段所述,CT 会检测到这一点,并且会很快注意到攻击,但它并不能阻止它。
即使您拥有原始 CA 证书,浏览器/操作系统也可能会被修改为无法正确检查证书。或者浏览器/操作系统可能被安装了后门,因此可以在加密之前或解密之后直接从应用程序中提取明文数据。并且行为中的此类关键修改或更改也可能是由您使用的硬件引起的。
这意味着本质上您在询问如何确保您使用的系统(硬件、操作系统、软件、配置......)只有您期望的功能,即只有供应商和开发人员想要的功能(没有后门或类似的稍后添加)并且此功能不包括任何可以用来对付您的东西(供应商/开发人员没有后门,但也没有可能用作后门的关键错误)。
不幸的是,没有机制可以完全确保您的系统表现得像这样。最终,它归结为您可以在多大程度上信任交付链,无论是在明确的后门还是在错误(无意的后门)方面。交付链意味着您对硬件和软件的来源(供应商、互联网下载......)的信任程度,以及硬件和软件在从源头传输过程中如何得到保护以防篡改。而且这些来源通常也使用第三方组件,这意味着必须进一步扩展交付链可以信任的问题。
有几种方法可以帮助信任交付链,但完全信任是不可能的。一种方法是首先真正了解您的交付链,并使其足够小,以便您可以实际审核它。这还包括使用不太复杂的系统,因为这些系统允许更小且更易于审核的交付链。虽然这对于一些不得不担心有针对性的攻击的政府或真正的大公司来说可能是可能的,但对于普通的最终用户来说实际上是不可能的。这些可能会尝试通过仅从受信任的供应商处购买来降低风险(如果您不信任本地供应商,可能是在国外),并尽量减少从 Internet 下载的内容,并确保始终通过安全传输加载它。
还有一些机制,如安全启动或证书固定,有助于防止或检测较小的修改,但可能会被更复杂的攻击者(政府机构)简单地绕过,如果他控制了足够的交付链,可能会替换/禁用相关检查。
最后,一个不成熟的最终用户没有太多机会区分正常和异常的系统行为,因为他没有足够的细节首先应该是什么样的正常系统行为。但假设使用政府控制(和浏览器信任)CA 替换 CA 证书或 MITM 之类的攻击将不仅针对这些不成熟的用户,而且会更广泛,那么一些更偏执且知识渊博的用户可能会受到影响,并会检测到攻击和警告他人。
攻击者也可能无法控制足够的交付链,尤其是在或多或少可以免费访问互联网的情况下(即除了一些明确的黑名单之外,大部分都是免费访问)。在这种情况下,用户可能会下载增加了保护的软件——例如 Chrome 或 Firefox 等浏览器中关键域的内置 SSL-pinnings。另一方面,偏执的用户也可能被诱骗下载声称保护其隐私但实际上是间谍木马的软件。
是的。检查证书的颁发 CA 及其指纹和/或整个公钥,您可以通过在浏览器中查看证书详细信息来找到它们。将这些值与其他人或相关政府控制范围之外的另一台计算机看到的值进行比较。您可以使用托管在另一个国家/地区的廉价 vps 来执行此操作,使用命令行工具进行 TLS 连接并转储证书信息。您还可以使用证书透明度日志来查看您获得的证书是否与提供给其他用户的证书不同。
这确实是一种风险,如果你要做一些需要“真正”安全的事情,比如交换核弹代码,这是一个真正的问题。再说一次,这不是更大的问题。攻击所经过的参与者不是政府,而是 CA。政府总是可以使用简单的橡胶软管攻击,因此只要 CA 是受法治约束的公共实体,这始终是一个问题(因为这将使它们受制于一个或多个政府,因此对压力或普通的暴力行为敏感)。只要这种攻击是可行的,更精细的证书操作就毫无用处,他们可以迫使 CA 帮助他们(并保持沉默),即使他们自己不是 CA。
如果您需要更高水平的信心,我建议您转向涉及(但不仅限于)隐写术和侧信道的不同通信方法,以降低通信的可见性,从而降低遭受攻击的可能性。
为了更深入地研究这种情况,CA 可以展示其证书正确性证明的想法还不是很流行,但它可能在区块链系统中成为可能。它可能需要更多的计算,所以我怀疑如果没有当前行业的一些调整,它是否可行。即便如此,政府在哪些密码原语是安全的方面也有很大的发言权,因此他们可能会污染用于颁发证书的方法,例如,我想向您推荐 NSA 的 Bullrun 计划,以及 Dual_EC_DRBG 的更详细示例后门由 Bruce Schneier 和 Niels Ferguson 提出理论,后来由 Edward Snowden 证实(我在学习期间有机会面对的一个论点,在它被证实之前,Dual_EC_DRBG 可能是安全的,但你