2011-05-30 7 views
2

C++アプリケーション(実際にはブラウザプラグインですが、これはあまり関係ありません)では、IPCを介して特定のインターフェイスを公開する外部プロセスを実行する必要があります。プラグインアーキテクチャのように並べ替えられますが、プラグインはDLLではなく個別のアプリケーションですプラグインのカスタムデジタル署名を実装する方法は?

誰かが簡単に必要なインターフェイスを見つけ、悪意のある「プラグイン」を作成して悪意のあるWebサイトにホストすることができますSWF以外のSWFはサンドボックス化されています。ブラウザプラグインをインストールした人がそのページに来たら、ある種のドライブバイ攻撃で悪質なプロセスをロードして実行します。

署名メカニズムを使用することをお勧めしますが、その達成方法はわかりません。注目すべきは、マスマーケットではなく専門家のために何かを作っているわけではないので、正当なプラグインを生産している企業の数は少ないだろう。

答えて

0

1つの方法は、GPGまたはOpenSSLのような暗号ライブラリを使用することです。両方とも公開鍵/秘密鍵のペアを作成します。秘密鍵でアプリケーションに署名します。ブラウザプラグインには、署名を検証するために使用される公開鍵が含まれています。これらのライブラリは特に使いやすいものではありません。例: OpenSSLパッケージのdgst.c。あなたはそれを(少なくとも検証部分を)あなたのプラグインに適合させる必要があります。学ぶべき多くのAPIがあります!ファイルに署名する場合は、dgst.cをそのまま使用することができます。

Windowsの場合は、Windows Crypto API(CAPI)を使用することもできますが、Windows APIについてはわかりません。

もう1つの方法は、署名アルゴリズムをゼロから実装することです。これは心のかすかなものでもない。 http://en.wikipedia.org/wiki/Digital_signatureを読んで、簡単に実装できる方法(RSA、DSA、ElGamal ...)を選択して実装します(署名部分と検証部分の両方、または検証部分だけですが、 OpenSSLのか、GPGあなたが署名のためにそれらを使用できるようにします。

0

両方のDLLとEXEはAuthenticodeの技術とX.509証明書を使用して署名されている。

あなたがWinVerifyTrust機能を使用するWindowsに組み込まれたメカニズムを使用してWindows上でAuthenticode署名を検証するにはこれにより、各「プラグイン」は、よく知られているいくつかのCA(Windowsには少なくとも知られている)によって発行された証明書を使って署名されている必要があります。

プラグイン開発者に独自の証明書を提供したい場合(CAからの購入証明書を節約できるようにする)には、SecureBlackbox製品のPKIBlackboxパッケージを取得し、独自の認証局になることができます。 PKIBlackboxを使用すると、Authenticode署名を作成して検証することもできます。

関連する問題