gpt4 book ai didi

c# - 安全地处理来自 Windows Key Store 的私钥

转载 作者:太空狗 更新时间:2023-10-29 21:47:04 26 4
gpt4 key购买 nike

我正在开发一个为 ASP.Net Web 服务器加密配置文件设置的应用程序。我正在实现的加密方法是使用 AES 和 RSA 封装数据。我正在生成一个 AES key ,使用该 AES key 加密我的数据,然后使用我的 Windows 证书存储中证书中的公钥加密 AES key 。然后我将数据连同加密的 AES key 和用于加密它的证书序列号一起保存回配置文件。

当我想访问这些数据时,我会读取用于加密 AES key 的证书的序列号,从该证书中提取私钥,解密 AES key ,然后使用该 key 解密数据。这是我不确定我的安全级别的地方。

为了访问与证书关联的私钥,我必须将私钥标记为可导出,并让用户在私钥访问权限下运行我的应用程序。由于这是一个 ASP.Net 服务器,该用户是“网络服务”。我相信你能明白为什么这会是一个安全问题。基本上,如果有人通过网络侵入我的 ASP.Net 服务器,也许是通过某种注入(inject),他们就可以访问该私钥,不是吗?

关于如何让我的模型更安全,有人有什么建议吗?

解密函数:

//need an rsa crytpo provider to decrypt the aes key with the private key associated with the certificate
using (RSACryptoServiceProvider rsaCSP = (RSACryptoServiceProvider) decryptionCertificate.PrivateKey)
{
//decrypt the aes key with the cert's private key
byte[] aesKey = rsaCSP.Decrypt(encryptedAESKey, false);

//decrypt data using the decrypted aes key and the IV passed in
decryptedData = decryptWithAes(encryptedData, aesKey, aesIV);
}

谢谢。

最佳答案

只要写

RSACryptoServiceProvider rsaCSP = (RSACryptoServiceProvider)decryptionCertificate.PrivateKey

这并不意味着您正在分配实际的“ key ”。您可以使私钥不可导出,但仍然能够执行解密。

关于c# - 安全地处理来自 Windows Key Store 的私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5913153/

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