在负载平衡的云环境中存储非对称密钥容器



我的任务是用C#RSACryptoServiceProvider.SignData()方法对一些数据进行签名。为了生成公钥和私钥,我使用了RSACryptoServiceProvider并传递了一个keycontainername以安全地存储密钥。

当我运行MSDN示例在我的机器上使用固定的keycontainername生成一组公钥/私钥时,每次都会生成预期的公钥/私钥。

这在单个服务器环境中运行良好,但是,我们在服务器负载平衡的弹性环境中运行。如果我在任何一台机器上用私钥加密数据,并通过RSACryptoServiceProvider将这些数据存储在中,则数据将只存在于机器级别。每台机器都将使用不同的密钥对数据进行签名,公钥用户将无法验证签名。

有什么方法可以在分布式环境中安全地存储密钥吗?

感谢

我想到了两个。

第一种是使用包含私钥的X509证书。您可以使用X509Certificate2类来获取具有私钥的RSACryptoServiceProvider实例。证书和私钥本身将保存在Windows证书存储中。然后,您可以限制某些帐户通过证书存储访问私钥。然后你只需要在每台需要证书的机器/AMI上安装证书

您的另一个选择是使用硬件安全模块。AWS有一个名为CloudHSM的服务,它允许您在VPC内部使用网络HSM(我不知道它与Elastic Bean Stalk的配合效果如何)。HSM供应商SafeNet IIRC允许安装指向HSM的CSP。然后,您将为RSACryptoServiceProvider提供一个接受容器和CSP名称的CspParameters实例。

HSM解决方案是最安全的,尽管它更复杂、更昂贵。

最新更新