如何使用数字证书检查程序的作者?

时间:2011-03-20 17:07:17

标签: digital-certificate authenticode

我们开发了一个Win32程序(= host),允许第三方编写插件。由于某些插件包含有价值的代码(例如,高质量的视频标量),第三方希望限制其插件仅适用于我们的主机程序

我们的想法是使用Microsoft Authenticode技术对主机进行签名。然后,要求第三方实施以下算法来检查主机。 (第三方应该对算法进行足够的代码混淆)。

  1. 使用WinVerifyTrust()API验证主机证书是否有效(=未撤销,未被篡改等)。

  2. 验证证书主题是我们公司。

  3. 问题是关于步骤(2)。第三方不能简单地检查拇指印或序列号,因为主机的数字证书将在证书到期日后续订。

    我的想法是检查主题的专有名称的部分,特别是“国家(C)”和“通用名称(CN)”,假设在美国没有公司名称冲突。我们不应该检查州和城市等其他属性,因为我们的公司可能会搬迁 - 事实上,我们已经在一年前从一个城市迁移到另一个城市。

    问题:这是实现目标的好方法吗?

1 个答案:

答案 0 :(得分:0)

虽然该方案是可行的,但是通过修补插件可以相对容易地规避保护,这样他们就可以忽略签名或完全跳过签名验证。

更重要的是, - 如果您计划拥有多个插件/供应商,您将很难确保所有供应商都能正确地模糊验证代码。

然后,我会说插件供应商只能将插件限制在你的应用程序中 - 如果他们想要更大的市场,他们可能希望在更广泛的主机范围内运行相同的插件。