Ключевые Контейнеры, достаточно безопасные для хранения закрытых ключей?

19
задан 4 revs 7 August 2009 в 07:27
поделиться

1 ответ

Это действительно зависит от ваших требований.

Хранилище ключей RSACryptoServiceProvider на самом деле является хранилищем ключей CryptoAPI. Ключи здесь хранятся в файловой системе, защищенной учетными данными пользователя (если используется хранилище пользователя) или учетными данными компьютера (если используется хранилище компьютера). Это означает, что злоумышленник, имеющий доступ к надлежащим учетным данным, сможет извлечь закрытый ключ.

Это будет верно для всех криптографических реализаций, которые не хранят ключ на смарт-карте, аппаратном модуле безопасности, микросхеме TPM и т. Д.

Для защиты от менее способного злоумышленника CryptoAPI и, следовательно, RSACryptoServiceProvider дают вам возможность установить для ключа значение неэкспортируемого. Это означает, что CryptoAPI /. NET откажется выполнять экспорт закрытого ключа за вас (но опытный злоумышленник все равно сможет обойти это). Для этого сгенерируйте ключ с помощью CspProviderFlags.UseNonExportableKey .

Вы также можете использовать CspProviderFlags.UseUserProtectedKey , который будет запрашивать у пользователя подтверждение и необязательный дополнительный пароль всякий раз, когда закрытый ключ используется.

16
ответ дан 30 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: