2

在 C++ 应用程序(实际上是一个浏览器插件,但这不是太相关)中,我需要它能够运行通过 IPC 公开特定接口的外部进程。有点像插件架构,但插件是离散的应用程序而不是 DLL 等。

有人可以轻松找到所需的接口并编写恶意“插件”,将其托管在他们的网站上,与恶意 SWF 相当,但 SWF 是沙盒。然后,如果安装了浏览器插件的人来到该页面,它将以一种偷渡式攻击的方式加载并运行恶意进程。

我看到的一个建议是使用签名机制,但我不知道如何实现。请注意,我不是为大众市场创造东西,而是为专业用途创造东西,因此生产合法插件的公司数量会很少。

4

2 回答 2

0

一种方法是使用加密库,如GPGor OpenSSL。使用它们,您可以创建一个公钥/私钥对。您使用私钥签署您的应用程序。浏览器插件包含用于验证签名的公钥。这些库并不是特别容易使用。dgst.c例如从 OpenSSL 包中读取。您需要将其(至少是验证部分)适应您的插件。有很多 API 需要学习!您可以dgst.c按原样使用来签署文件。

如果您在 Windows 上,您也可以以几乎相同的方式使用 Windows Crypto API (CAPI),但我对 Windows API 几乎一无所知。

另一种方法是从头开始实现签名算法。这也不适合胆小的人。阅读http://en.wikipedia.org/wiki/Digital_signature,选择一个看起来容易实现的方法(RSA、DSA、ElGamal ...),然后实现它(签名和验证部分,或者只是验证部分——但要确保它与 OpenSSL 或 GPG 兼容,以便您可以使用它们进行签名。

于 2011-05-30T11:59:33.337 回答
0

DLL 和 EXE 都使用 Authenticode 技术和 X.509 证书进行签名。

要使用 Windows 内置的机制验证 Windows 上的 Authenticode 签名,请使用CryptoAPI 的WinVerifyTrust函数。这将要求每个“插件”都使用某个知名 CA(至少 Windows 已知)颁发的证书进行签名。

如果您想为插件开发人员提供自己的证书(让他们节省从 CA 购买证书的费用),那么您可以使用我们 SecureBlackbox 产品的PKIBlackbox包并成为您自己的证书颁发机构。PKIBlackbox 还允许您创建和验证 Authenticode 签名。

于 2011-05-30T12:44:00.417 回答