【发布时间】:2018-08-26 04:31:08
【问题描述】:
根据上面的链接,您可以使用您的代码签名证书对内核模型驱动程序进行签名,然后使用交叉签名证书再次对其进行签名。这是内核模式驱动程序所必需的。
问题是,使用交叉签名证书对 exe/msi 包进行签名是否有任何理由/好处?
如果没有任何好处,为什么内核模式驱动程序需要它?它如何使它更安全?
【问题讨论】:
标签: code-signing code-signing-certificate
根据上面的链接,您可以使用您的代码签名证书对内核模型驱动程序进行签名,然后使用交叉签名证书再次对其进行签名。这是内核模式驱动程序所必需的。
问题是,使用交叉签名证书对 exe/msi 包进行签名是否有任何理由/好处?
如果没有任何好处,为什么内核模式驱动程序需要它?它如何使它更安全?
【问题讨论】:
标签: code-signing code-signing-certificate
交叉签名提供了额外的信任级别,这对于内核模式驱动程序很重要。交叉签名提供了额外的信任,因为两个证书颁发机构都不太可能受到损害。
对于 EXE 和 MSI 而言,交叉签名似乎意味着即使其中一个权限遭到破坏,您的可执行文件仍然可以信任。
编辑:
我与此相关的个人经验是使用 Authenticode 签名的程序集以及它们如何加载缓慢(您还没有说您的 EXE 是否是 .NET 程序集)。看这里https://blogs.msdn.microsoft.com/shawnfa/2005/12/13/authenticode-and-assemblies/
程序集加载性能
当 CLR 加载具有 Authenticode 签名的程序集时,它 将始终尝试验证该签名。 这与 Windows 加载程序,它将仅验证文件的签名 特定实例,例如文件是 ActiveX 控件时。 这 验证可能非常耗时,因为它可能需要点击 网络多次下载最新证书 撤销清单,并确保有一个完整的链 通往受信任根的有效证书。所以,当一个 Authenticode 签名应用于并非闻所未闻的程序集 在加载该程序集时看到几秒钟的延迟。
还要注意,优化应用于强命名程序集, 如果程序集是,则不验证强名称签名 从 GAC 加载的内容不适用于 Authenticode 签名。 由于 Authenticode 提供了撤销证书的能力,我们 不能假设因为程序集的 Authenticode 签名是 它在进入 GAC 时有效,每次我们都将保持有效 加载它。
对我来说,如果您的 EXE 是由 .NET 构建的(即它是一个程序集),那么它所签署的 CA 越多,它的加载速度可能就越慢。如果它不是 .NET 或 ActiveX 控件(或“某些实例”),则不会有延迟。
【讨论】: