Обмен защищенными данными между exe и Сервисом - PullRequest
0 голосов
/ 23 августа 2011

У меня есть Windows EXE, который должен записать некоторые безопасные данные в HKEY_LOCAL_MACHINE (HKLM).У меня также есть служба, работающая под учетной записью NetworkService, которая должна читать эти защищенные данные.Обратите внимание, что exe и service работают как разные пользователи.

Проблема здесь в защите данных.Я попытался с CryptProtectData , но проблема в том, что служба не может расшифровать, потому что данные не были зашифрованы с использованием учетной записи NetworkService.Я не хочу использовать флаг CRYPTPROTECT_LOCAL_MACHINE при вызове CryptProtectData, так как любой пользователь может расшифровать его и, по сути, сделать его небезопасным.

Я предполагаю, что это частый случай использования, но я не могу найти никакого решения.Есть идеи, пожалуйста?

К вашему сведению, я использую Visual C ++ для написания exe и службы.

1 Ответ

0 голосов
/ 23 августа 2011

Вы пытаетесь использовать реестр в качестве механизма межпроцессного взаимодействия (IPC) и обнаруживаете, что он не очень элегантен.

Лучшей архитектурой для того, что вы ищете, будет полностью обрабатывать шифрование / дешифрование внутри службы и использовать механизм real IPC (сокеты TCP, почтовый ящик и т. Д.) Для передачи данных из EXE к сервису для шифрования.

Edit:

Реестр не похож на правильное место для этих данных, кроме шифрования. Надев "шапку сисадмина", я бы предпочел, чтобы ваши данные были в файловой системе, а не в реестре. Использование реестра в качестве механизма очереди хранения и пересылки дает мне волю.

Поскольку криптографическая архитектура, я думаю, вам лучше всего использовать асимметричное шифрование. Позвольте EXE зашифровать данные, используя открытый ключ сервиса. Служба может расшифровать данные с помощью своего закрытого ключа.

...