Как поделиться секретом между распределенными Windows приложениями, не сохраняя его в сборке? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть распределенное приложение Windows - несколько веб-сайтов IIS и windows служб на разных компьютерах.

Мне нужно зашифровать конфиденциальные данные пользователя (например, учетные данные API сторонних производителей), а затем расшифровать до использовать его в приложениях.

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

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

Я рассматриваю возможность распространения этого ключа в составе установщиков, но такой подход сам по себе сделает установщиков чувствительными. Так как они распространяются через небезопасные «бизнес-каналы», я хочу этого избежать.

Что-то, что я думаю, что я ищу - это подпись на моих установщиках, которая будет проверена целью Windows машина, и которая даст мне доступ к встроенным механизмам для шифрования-дешифрования данных. Что-то вроде ProtectedData.Protect , но с DataProtectionScope не ограничивается пользователем или машиной. В идеале это должно быть ограничено компанией.

1 Ответ

0 голосов
/ 24 марта 2020

У меня есть некоторые новые мысли, так что он уже может считаться ответом (хотя и не окончательным решением).

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

Старые Crypto API do c имеют такую ​​цитату:

Это будет будет проще, если соответствующие CSP смогут напрямую общаться, но не смогут. Поскольку CSP не могут связываться, ключ должен быть экспортирован из одного CSP, передан в целевое приложение и затем импортирован в CSP назначения. Этот процесс может стать более сложным, если канал связи не является доверенным.

Более новые CNG do c имеют следующую фразу:

Вы может импортировать и экспортировать симметричные c ключи и асимметричные c ключи с CNG. И вы можете использовать функции экспорта и импорта ключей для перемещения ключей между компьютерами .

Так что переход доверия между Windows машинами является частью процесса установки. Например, после установки можно предложить пользователю экспортировать закрытый ключ, а затем использовать его в процессе установки ведомого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...