3

Я использую RSACryptoServiceProvider для создания пары открытого/закрытого ключа и используя объект cspParameters, чтобы сохранить его в контейнере ключей.Может ли другое приложение получить доступ к закрытому ключу, хранящемуся в контейнере ключей, используя RSACryptoServiceProvider?

Моя проблема в том, что после того, как я сохраню закрытый ключ в контейнере ключей, может ли другое приложение получить доступ к контейнеру ключей и получить закрытый ключ i?

Если да, то безопасность ключа скомпрометирована, не так ли?

Как этого избежать? Должен ли я шифровать сгенерированный закрытый ключ с помощью симметричного алгоритма шифрования?

ответ

3

без использования аппаратного модуля безопасности, ваша единственная защита, чтобы установить поле CspParameters.Flags:

CspParameters.Flags = CspProviderFlags.UseNonExportableKey | CspProviderFlags.UseUserProtectedKey; 

Первый флаг предотвращает программное обеспечение от «честно» экспорта закрытого ключа. Второй требует взаимодействия пользователя с графическим интерфейсом для выполнения любых операций с закрытым ключом.

+0

Вы имеете в виду какое-то диалоговое окно, которое попросит пользователя одобрить его? –

+1

Да. Попробуйте. –