当根证书被泄露时,签名的代码会发生什么?

当根证书被泄露时,签名的代码会发生什么?

我的 Windows Server 刚刚请求了与根证书泄露相关的证书更新。我记得 Firefox、Safari、Flash、.Net 堆和 Internet Explorer 都曾请求过该更新。

我知道代码是使用证书签名的,因此我的问题是:

  • 这些证书是否有任何关联?

  • 如果是,那么根证书被泄露的事实是否会对签名代码造成风险(例如允许执行某些邪恶代码,或者允许某人篡改签名代码?)

  • 最后,就 iOS 而言,这是否意味着每个应用程序都需要用新证书重新编译,或者对之前签名的代码没有不良影响?

答案1

首先,Apple 代码签名根与被盗根 (DigiNotar) 无关,因此对于您的第一个问题,这不会对 iOS 代码签名产生直接影响。此证书位于 iOS 根存储中,因此它可能会影响应用程序,包括 Safari 或任何使用内置 URL 加载系统或根密钥的人。

如果 Apple 代码签名密钥(或其中一个主要中介)被泄露,那么理论上,这可能会对代码签名系统造成灾难性的后果。实际上,攻击者还需要伪装成 Apple 更新服务器,这是一个不同的问题。但如果将这两件事结合起来,理论上,他们可以推送任何他们想要的东西。

通常,处理 X.509 中的密钥泄露只有两种方法:等待证书过期或撤销证书。大多数根证书的有效期都相当长(通常为几十年)。较低级别的证书的有效期较短(几个月或几年)。

撤销证书意味着软件(本例中为 iOS)需要检查撤销列表并拒绝其中的证书。这将破坏现有的所有软件,除非它们全部被重新签名并重新安装。

由于苹果控制着应用商店和 iOS,因此他们实际上还有其他选择。他们可以修补 iOS,让其根据应用商店的哈希值对每个软件进行一次性验证,然后应用新的签名。当你控制系统的所有部分时,确定信任就更容易了。

根证书被盗用本身并不意味着恶意代码会突然在每个人的设备(或任何人的设备)上运行。盗用证书只是更复杂攻击的一部分。但它会很有用。

请记住,Mac、Windows 和 Unix 等已经存在多年,但都没有代码签名。大多数现代操作系统都有某种形式的代码签名,但使用并不广泛(通常仅在软件包安装时使用)。当它失败时,用户通常会忽略它。iOS 方案是一大进步,但没有它你也可以应付过去。

代码签名并不能确保代码是良性的。我可以做一些恶意的事情,而苹果在批准应用程序之前几乎不可能检测到。而且,仅仅因为他们有信用卡记录并不意味着苹果真的知道是谁提交了应用程序。

因此,代码签名是一项重要的安全措施,但它并不是唯一的安全措施。正如您所说,密钥非常重要,但它们只是系统的一部分。

答案2

如果您安装了基于由虚假根签名的 X.509 证书签名的代码,那么它可能是虚假代码。它可能对您的系统做了一些令人不快的事情。

但是,这对于未经受损根签名的证书所签名的代码没有任何影响。

相关内容