Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为我的插件实现自定义数字签名? 在C++应用程序中(实际上是浏览器插件,但这不是太相关),我需要它能够运行通过IPC公开特定接口的外部进程。有点像插件架构,但插件是离散的应用程序,而不是DLL等_C++_Security_Plugins_Digital Signature_Browser Plugin - Fatal编程技术网

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

如何为我的插件实现自定义数字签名? 在C++应用程序中(实际上是浏览器插件,但这不是太相关),我需要它能够运行通过IPC公开特定接口的外部进程。有点像插件架构,但插件是离散的应用程序,而不是DLL等,c++,security,plugins,digital-signature,browser-plugin,C++,Security,Plugins,Digital Signature,Browser Plugin,有些人可以很容易地找到所需的接口并编写一个恶意的“插件”,将其托管在他们的网站上,与恶意的SWF相当,但SWF是沙盒的。然后,如果安装了浏览器插件的人来到该页面,它将加载并运行恶意进程,这是一种驱动式攻击 我看到的一个建议是使用签名机制,但我不知道如何实现。请注意,我不是为大众市场而创建,而是为专业用户而创建,因此生产合法插件的公司数量将很小。一种方法是使用加密库,如GPG或OpenSSL。使用这两个密钥可以创建公钥/私钥对。您可以使用私钥对应用程序进行签名。浏览器插件包含用于验证签名的公钥。这

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


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

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

如果您使用的是Windows,那么您也可以以大致相同的方式使用Windows Crypto API(CAPI),但我对Windows API几乎一无所知


另一种方法是从头实现签名算法。这也不是为胆小的人准备的。阅读并选择一个看起来易于实现的方法(RSA、DSA、ElGamal…),然后实现它(签名和验证部分,或者只是验证部分——但要确保它与OpenSSL或GPG兼容,以便您可以使用它们进行签名。

一种方法是使用加密库,如
GPG
OpenSSL
。使用这两个库,您可以创建一个公钥/私钥对。您可以使用ivate密钥。浏览器插件包含用于验证签名的公钥。这些库不是特别容易使用。请阅读OpenSSL包中的
dgst.c
。您需要调整它(至少是验证部分)您可以使用
dgst.c
原样对文件进行签名

如果您使用的是Windows,那么您也可以以大致相同的方式使用Windows Crypto API(CAPI),但我对Windows API几乎一无所知


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

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

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


如果你想给插件开发者你自己的证书(让他们节省从CAs购买证书的费用),然后您可以使用我们的SecureBackbox产品包,成为您自己的证书颁发机构。PKIBackbox还允许您创建和验证验证验证码签名。

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

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

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