从Windows密钥库安全地处理私钥
|
我正在开发一个对ASP.Net Web服务器的配置文件设置进行加密的应用程序。我正在实现的加密方法是使用AES和RSA封装数据。我正在生成一个AES密钥,使用该AES密钥对我的数据进行加密,然后使用Windows证书存储区中的证书中的公共密钥对AES密钥进行加密。然后,我将数据以及加密的AES密钥以及用于加密的证书序列号保存回配置文件。
当我想访问此数据时,我读取用于加密AES密钥的证书的序列号,从该证书中取出私钥,然后解密AES密钥,然后使用该密钥解密数据。这是我不确定自己的安全级别的地方。
为了访问与证书关联的私钥,我必须将私钥标记为可导出,并为用户提供我的应用程序在对私钥的访问权限下运行。由于这是ASP.Net服务器,因此该用户为\“网络服务\”。我敢肯定,您会明白为什么这将是一个安全问题。基本上,如果有人通过某种方式侵入Web上的ASP.Net服务器,那么他们将可以访问该私钥,不是吗?
有人对我如何使模型更安全有任何建议吗?
解密功能:
//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);
}
谢谢。
没有找到相关结果
已邀请:
4 个回复
肉簧咸缮
这并不意味着您要分配实际的“键”。您可以将私钥设为“不可导出”,并且仍然可以执行解密。
刷遍派戳
杭难插
碧肮械淌设