2011-05-30 43 views
2

在一個C++應用程序(實際上是一個瀏覽器插件,但這並不太相關),我需要它能夠運行通過IPC公開特定接口的外部進程。有點像插件架構,但插件是離散的應用程序,而不是DLL等。如何爲我的插件實現自定義數字簽名?

有人可以很容易地找到所需的接口並編寫一個惡意的「插件」,將其託管在他們的網站上,可以與惡意軟件SWF除SWF外是SWF格式的。然後,如果安裝了瀏覽器插件的用戶訪問該頁面,則會加載並運行惡意進程,導致某種路過式攻擊。

我看到的一個建議是使用簽名機制,但我不知道如何實現。請注意,我並沒有爲大衆市場創造東西,而是專門使用,所以生產合法插件的公司數量會很少。

回答

0

一種方法是使用像GPGOpenSSL這樣的加密庫。與他們兩個你創建一個公/私鑰對。您使用私鑰簽署您的應用程序。瀏覽器插件包含公鑰,用於驗證簽名。這些庫不是特別容易使用。閱讀例如來自OpenSSL包的dgst.c。您需要將其調整(至少是驗證部分)到您的插件中。有很多API需要學習!您可以原樣使用dgst.c來簽署這些文件。

如果你在Windows上,你也可以用同樣的方式使用windows Crypto API(CAPI),但我幾乎不知道Windows API。

另一種方法是從零開始實現簽名算法。這也不是因爲心臟不好。閱讀http://en.wikipedia.org/wiki/Digital_signature,選擇一個看起來很容易實現的方法(RSA,DSA,ElGamal ...),並實現它(簽名和驗證部分,或者只是驗證部分 - 但確保它與OpenSSL的或GPG這樣你就可以使用他們的簽名。

0

兩個DLL和EXE使用驗證碼技術和X.509證書籤名。

爲了驗證使用您使用WinVerifyTrust功能內置到Windows機制在Windows的驗證碼簽名CryptoAPI,這將要求每個「插件」使用某些知名CA(至少Windows已知)發佈的證書進行簽名。

如果您想爲插件開發人員提供您自己的證書(爲了讓他們省錢購買CA證書),那麼您可以拿取我們的SecureBlackbox產品包PKIBlackbox,併成爲您自己的證書頒發機構。 PKIBlackbox還允許您創建和驗證Authenticode簽名。

相關問題