0

设想

我想设计一个从第三方供应商加载插件程序集的服务器。第三方供应商在实现插件程序集时需要遵循一些合同。第三方插件程序集需要复制到服务器指定的部署文件夹中。服务器将动态加载插件程序集。服务器只需要加载那些来自受信任源的程序集

可能的解决方案

作为解决方案之一,服务器可以依赖数字证书技术。服务器应仅加载那些使用受信任的根证书颁发机构进行数字签名的程序集。我计划从下图中导出测试用例:

替代文字

叶节点(以紫色突出显示)表示可能的测试用例。

我需要获得以下方面的想法/反馈:

  • 上述基于数字证书的机制对于上述场景是否足够好?
  • 除了数字证书技术,还有哪些替代方案?
  • 是否缺少任何未考虑的测试用例(基于上图)?

谢谢。

4

1 回答 1

1

只是一些随意的想法。

虽然不是唯一的方法(例如,您可以使用带有特定密钥的 HMAC,或者仅使用 RSA 或 DSA 等公钥算法),但它可能是实现目标的最佳方法你想用最少的努力去做。

当然,我假设您将在这种情况下充当 CA,并且任何第三方都可以获得您签署的证书?如果不是,并且只是说 Verisign 证书等,您可能需要考虑检查证书的密钥使用和增强的密钥使用字段,以确保它适合签署二进制文件(例如阻止某人使用 SSL 证书) .

正如上述评论中所指出的,您想要检查任何证书吊销列表,尽管这可能包含在签名与未签名中。您可能还希望在一个完全未签名的文件、一个已签名但不正确的文件(例如公钥不匹配)和一个已签名但无效的文件之间有一个不同的测试用例,例如签名未由受信任的权威机构加盖时间戳并且证书已经过期,或者 CRL 的东西。

您是否还排除了签名证书是 CA 的可能性?拥有这是一件愚蠢的事情,但从技术上讲,这样做并没有错。您甚至可以跳过整个 CA 的内容,让第三方生成他们自己的自签名证书,然后将其发送给服务器管理员,后者会将其添加到有效证书列表中以供使用。CA 的唯一原因是他们应该检查需要它的人的详细信息,这取决于您计划如何使用该系统,而不是可能不需要。

于 2010-11-16T21:53:56.933 回答