我知道代码是用证书签名的,因此我的问题是:
>是那些以任何方式相关的证书,
>如果他们是,那么根证书被破坏的事实是签名代码的风险(比如允许某些恶意代码执行,或者可能允许某人篡改签名代码?)>最后,在iOS的情况下,是否意味着每个应用程序都需要使用新证书重新编译,或者对先前签名的代码没有任何不良影响? 首先,Apple代码签名根与受损根(DigiNotar)无关,因此对于您的第一个问题,对此的iOS代码签名没有直接影响.此证书位于iOS根存储中,因此可能会影响应用程序,包括Safari或使用内置URL加载系统或根关键字的任何人.如果Apple代码签名密钥(或主要中介之一)被泄露,那么理论上这对代码签名系统来说可能是灾难性的.在实践中,攻击者还需要伪装成Apple更新服务器,这是一个不同的问题.但如果你把这两件事放在一起,是的,他们可以在理论上推动他们想要的任何东西.
一般来说,只有两种方法可以处理X.509中的密钥泄露:等待证书过期或撤销它.大多数根证书具有相当长的有效范围(通常为几十年).较低级别的证书具有较短的范围(数月或数年).
撤销证书意味着软件(在这种情况下为iOS)需要检查撤销列表并拒绝其上的证书.这会破坏每一块软件,直到它们全部被重新签名并重新安装.
由于Apple控制着应用程序商店和iOS,因此实际上还有其他一些选项供他们使用.他们可以修补iOS,针对应用程序商店中的哈希值对每个软件进行一次性验证,然后应用新的签名.当您控制系统的所有部分时,更容易确定信任.
仅仅因为根证书被泄露并不意味着恶意代码会突然在每个人的设备(或任何人的设备)上运行.妥协证书只是一个更复杂的攻击的一部分.但它是一个有用的部分.
请记住,Mac和Windows和Unix等存在多年没有代码签名.大多数现代操作系统都有某种代码签名,但它没有被广泛使用(通常仅在包安装时).当它失败时,用户通常会忽略它. iOS计划是向前迈出的一大步,但如果没有它,你可能会陷入困境.
代码签名不能确保代码是良性的.在批准应用程序之前,Apple几乎无法检测到几种我可以做的恶意事情.仅仅因为他们有信用卡存档并不意味着Apple真的知道谁提交了应用程序.
因此代码签名是一项重要的安全措施,但它并不是唯一的安全措施.如你所知,密钥非常重要,但它们只是系统的一部分.
精彩评论