gpt4 book ai didi

.net - key 容器,足够安全以存储私钥?

转载 作者:行者123 更新时间:2023-12-03 12:54:58 24 4
gpt4 key购买 nike

我正在阅读 Key Containers in .NET作为存储用于非对称加密和数字签名的私钥的安全场所。

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

// 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));

key 容器是存储私钥的安全场所吗?

最佳答案

这真的取决于你的要求。

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

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

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

您也可以使用CspProviderFlags.UseUserProtectedKey每当使用私钥时,它将要求用户确认和可选的附加密码。

关于.net - key 容器,足够安全以存储私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com