0

HKEY_LOCAL_MACHINE (HKLM) に安全なデータを書き込む必要がある Windows exe があります。また、その安全なデータを読み取る必要がある NetworkService アカウントとして実行されているサービスもあります。exe とサービスは別のユーザーとして実行されることに注意してください。

ここでの問題は、データの保護にあります。私はCryptProtectDataを試しましたが、 NetworkService アカウントを使用してデータが暗号化されていないため、サービスが復号化できないという問題があります。CryptProtectData を呼び出すときに CRYPTPROTECT_LOCAL_MACHINE フラグを使用したくありません。これは、任意のユーザーが暗号化を解除でき、本質的に安全でなくなるためです。

これは一般的なユースケースだと思いますが、解決策が見つかりません。アイデアはありますか?

参考までに、ビジュアル C++ を使用して exe とサービスを記述しています。

4

1 に答える 1

0

レジストリをプロセス間通信 (IPC) メカニズムとして使用しようとしていますが、あまり洗練されていません。

あなたが探しているもののためのより良いアーキテクチャは、サービス内で完全に暗号化/復号化を処理し、実際のIPC メカニズム (TCP ソケット、メールスロットなど) を使用して、暗号化のために EXE からサービスにデータを転送することです。

編集:

レジストリは、暗号化は別として、このデータの適切な場所のようには思えません。「システム管理者の帽子」をかぶって、レジストリよりもファイルシステムにデータを保存したいと思います。ストア アンド フォワード キュー メカニズムとしてレジストリを使用すると、意地悪になります。

暗号化アーキテクチャに関する限り、非対称暗号化を使用するのが最適だと思います。EXE がサービスの公開鍵を使用してデータを暗号化するようにします。サービスは、秘密鍵を使用してデータを復号化できます。

于 2011-08-23T17:08:08.307 に答える