为什么 Superfish 证书的私钥如此容易被提取?

信息安全 tls 证书
2021-09-03 09:37:08

Robert Graham 在Errata Security 博客上详细介绍了他如何获得 Superfish 证书的私钥。我了解攻击者现在可以使用此密钥生成他们自己的证书,这些证书将由 Superfish CA 签名。

相同的攻击不会对计算机上已有的其他根证书起作用吗?为什么私钥首先在计算机上?

4个回答

除非您的系统上安装了 Superfish 恶意软件(如果您购买了联想机器,可能会安装),您不必担心。这种攻击之所以奏效,是因为它泄露的秘密对于恶意软件劫持数据是必要的;它不是合法证书认证方式的一部分。

它有助于理解证书、公钥和私钥之间的关系。私钥是用于使用数字签名对消息进行签名(或加密网络流量)的秘密数字,并且它具有可用于验证这些签名的匹配公钥。证书是包含公钥的公共文档;网站所有者将他们的公钥放在证书上,然后将其发送给称为证书颁发机构 (CA) 的公司,他们对证书进行数字签名以证明他们的证书是真实的。数字签名确保文档没有被更改,确保它包含的公钥是您正在访问的站点的真实密钥。

CA 是每个人都同意信任的公司,它只签署来自合法来源的证书。他们还有一个私钥和公钥对。他们将私钥保密,锁定在称为硬件安全模块 (HSM) 的安全加密设备中,并限制对其的访问,因此只能在客户生成新密钥时使用它来签署客户的证书。但是为了有用,网络上的每个人都需要知道他们的公钥。因此,这些 CA 将自己的公钥放在特殊证书上,并使用自己的私钥对其进行签名(“自签名”)。然后,他们将这些自签名的“根证书”发送给浏览器供应商和操作系统供应商,他们将它们包含在他们的产品中。真正的 CA 永远不会发送他们的私钥!

受信任的权威根证书是验证您的计算机进行的所有连接的所有证书的文档。因此,您的计算机必须信任它们。该恶意软件在最终信任的位置安装了不可信的证书,通过允许知道此密钥的任何人为任何站点伪造证书,隐藏其篡改的证据,从而危及机器的安全性。

该恶意软件滥用其地位,为您访问的每个站点生成虚假的公钥和私钥;连接后,它会将其有效负载注入网站页面。为了让您的浏览器信任这些假密钥而不给您警告,恶意软件会生成一个伪造的证书,诱使您的浏览器相信这些密钥是合法的。但与任何证书一样,伪造文件需要由受信任的 CA 签名。要签名,恶意软件需要公钥和私钥,就像真正的 CA 一样。因为虚假 CA 正在您的计算机内部伪造这些证书,所以私钥也需要在您的计算机内部。对计算机所有者保密这些事情是不可能的,但他们尝试采取一些基本步骤来隐藏它。你链接到的博客描述了他是如何发现这个秘密的。

任何合法的证书颁发机构都不会允许他们的私钥被泄露,更不用说将其发送给一群随机的计算机所有者了。有一个证书颁发机构的密钥泄露的案例;他们名誉扫地,一个月后破产。由于您的计算机不包含合法证书颁发机构的私钥,因此攻击者没有秘密可以破解。

由于 Superfish 的工作方式,证书及其私钥必须易于提取。

Superfish 为它拦截的网络连接即时创建签名证书,而无需联系中央服务器。为了做到这一点,Superfish CA 的私钥必须以易于使用的形式嵌入到软件中。现在,他们不需要将其设为纯文本 .pem 文件,但即使是最好的安全性也不会使严重的逆向工程工作减慢一两天以上。

你不能与全世界分享一个秘密,也不指望任何人发现它。 真正的证书颁发机构在保护他们的私钥方面做得更好,确保它永远不会离开他们的证书签名计算机。

如果您在保护根证书的私钥方面遵循最佳实践,那肯定不会那么容易。

如果我正确理解 Robert 的博客,那么保护私钥的密码将作为字符串嵌入笔记本电脑附带的广告软件二进制文件中。这就像将您的保险箱连同隐藏在保险箱底部的钥匙一起运送。不是个好主意!密码也不是很强大,这意味着即使它没有嵌入到广告软件中供任何人看到,但有知识和资源的有决心的人可以在合理的时间内破解它。

提取私钥的密码很可能嵌入在广告软件中,以使广告软件能够即时解密由 Superfish 根证书签名的流量,从而注入用户最终会在网页上看到的广告标记。

负责任的证书颁发机构永远不会出现这种情况,我相当确定 CA 需要遵守某些标准,甚至法律,这将禁止他们做这样的事情。

如果很容易获得所有根证书的私钥,那么 PKI 将毫无用处并保护绝对注意。

超级鱼扮演中间人。它会为您访问的域动态生成浏览器信任的密钥。要生成这些密钥,它需要私有证书,虽然可以进行更多混淆,但最终它无法隐藏该密钥。

但是可以做的是在安装了软件的每台计算机上为证书对生成一个唯一的密钥对。这意味着提取用于安装在一台计算机上的根 CA 的密钥将无法访问安装了软件的另一台计算机的通信。这不完全是火箭科学,Komodia 不这样做是不可原谅的。

我想知道其他从事这种 MITM 的公司是否正在发布唯一密钥。例如,我在本地找到了“Skype Click to Call”和“avast! WEB/Mail Shield”的证书,它们的功能可能类似。我已经验证,如果我访问https://www.google.com/ ,我的浏览器会看到由 avast 密钥签名的证书。