首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >密钥容器,足够安全,可以存储私钥?

密钥容器,足够安全,可以存储私钥?
EN

Stack Overflow用户
提问于 2009-08-07 06:42:29
回答 1查看 7K关注 0票数 22

我读到过Key Containers in .NET是一个安全的地方,用来存储用于非对称加密和数字签名的私钥。

我的问题是密钥容器有多安全?因为我已经发现,如果我知道密钥容器名称,那么我将能够使用以下命令检索私钥:

代码语言:javascript
复制
// Create the CspParameters object and set the key container 
// name used to store the RSA key pair.
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;

// Create a new instance of RSACryptoServiceProvider that accesses
// the key container MyKeyContainerName.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);

// Display the key information to the console.
Console.WriteLine("Key retrieved from container : \n {0}", rsa.ToXmlString(true));

密钥容器是存储私钥的安全位置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-07 07:38:47

这真的取决于你的需求。

RSACryptoServiceProvider背后的密钥库实际上是CryptoAPI密钥库。这里的密钥存储在受用户凭证(如果使用用户存储)或机器凭证(如果使用机器存储)保护的文件系统上。这意味着有权访问适当凭据的攻击者将能够提取私钥。

这将适用于不在智能卡、硬件安全模块、TPM芯片等中存储密钥的所有密码实现。

为了防止能力较弱的攻击者,CryptoAPI和RSACryptoServiceProvider提供了将密钥设置为不可导出的可能性。这意味着CryptoAPI/.NET将拒绝为您执行私钥导出(但知识丰富的攻击者仍然能够解决此问题)。为此,使用CspProviderFlags.UseNonExportableKey生成密钥。

您还可以使用CspProviderFlags.UseUserProtectedKey,每当使用私钥时,它都会要求用户进行确认,并提供一个可选的附加密码。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1243259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档