2015-03-30 41 views
0

我已經被授權使用C#簽署一些數據。RSACryptoServiceProvider.SignData()方法。爲了生成公鑰和私鑰,我使用了RSACryptoServiceProvider並傳遞了一個keycontainername來安全地存儲這些密鑰。在負載平衡的雲環境中存儲非對稱密鑰容器

當我運行MSDN example在我的機器上用固定keycontainername生成一組公鑰/私鑰時,每次都會生成期望的公鑰/私鑰。

這將在單一服務器環境下正常工作,但是,我們正在一個彈性環境中對服務器進行負載平衡。如果我在任何一臺機器上用私鑰加密數據並通過RSACryptoServiceProvider存儲這些數據,那麼數據將只存在於機器級別。每臺機器將使用不同的密鑰簽署數據,並且公鑰的用戶將無法驗證簽名。

有沒有什麼辦法可以將密鑰安全地存儲在分佈式環境中?

謝謝

回答

1

有兩個想到。

首先是使用包含私鑰的X509證書。您可以使用X509Certificate2類來獲取具有私鑰的RSACryptoServiceProvider實例。證書和私鑰本身將保存在Windows證書存儲區中。然後,您可以通過證書存儲將對私鑰的訪問權限限制到某些帳戶。然後,您只需在每臺需要它的機器/ AMI上安裝證書。

您的其他選擇是使用硬件安全模塊。 AWS有一個名爲CloudHSM的服務,它允許您在VPC內部使用網絡HSM(我不知道它將如何與Elastic Bean Stalk配合使用)。 HSM供應商SafeNet IIRC允許安裝指向HSM的CSP。然後,您將爲RSACryptoServiceProvider提供一個接受容器和CSP名稱的實例CspParameters

HSM解決方案是最安全的,雖然更復雜和昂貴。

+0

很好的答案,謝謝,我會明天與基礎設施人員聊天,並嘗試並實施此操作。再次感謝。 – ahammond 2015-03-30 21:28:53

+0

@ahammond - Azure也有一個類似的HSM服務叫做KeyVault,還有一些加密即服務提供商,比如http://www.safenet-inc.com/data-protection/virtualization-cloud -security/crypto-hypervisor-cloud-encryption /然而它們對於單次使用可能有點矯枉過正... – 2015-03-31 14:23:18

+0

謝謝@ErikFunkenbusch。目前,我們主要是AWS基礎架構。我們仍在調查如此有用的信息,感謝您的幫助。 – ahammond 2015-03-31 16:48:23