如何为我的插件实现自定义数字签名?

| 在一个C ++应用程序中(实际上是一个浏览器插件,但这不太相关),我需要它能够运行外部进程,这些进程通过IPC公开特定的接口。有点像插件架构,但是插件是离散的应用程序,而不是DLL等。 有人可以轻松找到所需的接口并编写一个恶意的“插件”,将其托管在他们的网站上,与恶意的SWF相当,只是SWF被沙盒化了。然后,如果安装了浏览器插件的人访问了该页面,它将以一种偷渡式攻击来加载和运行恶意进程。 我看到的一个建议是使用签名机制,但是我不知道如何实现。请注意,我不是为大众市场创建产品而是为专家使用,因此生产合法插件的公司数量很少。     
已邀请:
        一种方法是使用诸如“ 0”或“ 1”之类的密码库。通过它们,您可以创建一个公钥/私钥对。您使用私钥对应用程序签名。浏览器插件包含公用密钥,用于验证签名。这些库不是特别易于使用。阅读例如
dgst.c
来自OpenSSL软件包。您需要将其(至少是验证部分)调整为适合您的插件。有很多API需要学习!您可以按原样使用“ 2”对文件进行签名。 如果您使用的是Windows,则也可以以几乎相同的方式使用Windows加密API(CAPI),但我几乎不了解Windows API。 另一种方法是从头开始实现签名算法。这也不是为了胆小者。阅读http://en.wikipedia.org/wiki/Digital_signature,选择一种看起来易于实现的方法(RSA,DSA,ElGamal ...),然后加以实现(包括签名和验证部分,或者仅仅是验证部分-但请确保它与OpenSSL或GPG兼容,以便可以使用它们进行签名。     
        DLL和EXE均使用Authenticode技术和X.509证书签名。 要使用Windows内置的机制在Windows上验证Authenticode签名,请使用CryptoAPI的WinVerifyTrust函数。这将要求每个“插件”都使用某些知名CA(至少是Windows已知)颁发的证书进行签名。 如果要给插件开发人员自己的证书(以使他们节省从CA购买证书的费用),则可以获取SecureBlackbox产品的PKIBlackbox软件包,并成为自己的证书颁发机构。 PKIBlackbox还允许您创建和验证Authenticode签名。     

要回复问题请先登录注册