2014-07-21 2 views
1

Мое приложение .NET содержит некоторое шифрование RSA. И мой вопрос: where to store the keys?Как сохранить ключ шифрования .NET

После небольшого googleing я не вижу никаких реальных предложений. Что я видел

  1. Разделить их и сохранить в разных папках.
  2. Используйте ProtectedData. Но если я использую защищенные данные, я все равно должен хранить зашифрованный результат ключа. Еще тот же вопрос, где его хранить?

Есть ли лучшие варианты?

+2

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

+0

Недостаточно информации для ответа - поскольку Скотт сказал, что требуется сценарий угроз. – CodesInChaos

ответ

1

Стандартный метод хранит ключ в ключевом контейнере, net имеет API для этого. См. How to: Store Asymmetric Keys in a Key Container Вы можете хранить контейнер ключей как закрытый, в этом случае только вы имеете доступ к ключу. Если вы хотите разделить ключ между разными пользователями или программой на своем компьютере, вы должны использовать контейнер ключа уровня машины. Для того, чтобы хранить в машинном уровне вам нужно только добавить в параметрах контейнера флага UseMachineKeyStore

CspParameters cp = new CspParameters(); 
cp.KeyContainerName = ContainerName; 
cp.Flags = UseMachineKeyStore 

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

Я надеюсь, что эта информация будет полезна вам.

Смежные вопросы