簡體   English   中英

使用密碼或其他方式保護RSACryptoServiceProvider私鑰

[英]Protecting RSACryptoServiceProvider private key with password or otherwise

我想使用.NET的RSACryptoServiceProvider加密某些服務器數據,並在有人通過網頁輸入密鑰/密碼時將其解密。 在保護或理想情況下甚至不將私鑰存儲在服務器上,同時又避免讓用戶每次都提供私鑰時,我有哪些選擇?

  • 使用對稱系統加密私鑰,並讓用戶提供密碼嗎?
  • 將大多數私鑰存儲在服務器上,但用戶是否提供了N個字符?
  • 將其存儲在服務器的MachineKeyStore中,並使用秘密的KeyContainerName作為密碼嗎?
  • 以某種可以在網絡上使用的方式使用CspParameters.KeyPassword?
  • 還有嗎

除了硬件方法(HSM或智能卡)以外,您幾乎還必須使用一個秘密來保護另一個秘密。 因此,您不斷添加密碼。 我的建議是使用DPAPI,

http://en.wikipedia.org/wiki/Data_Protection_API

使用這種方法,您無需再創建另一個密碼。 用戶體驗也更好,因為他們只需在登錄時輸入一次密碼即可。

最好的選擇是將私鑰存儲在受HSM密碼保護的硬件安全模塊中,以確保沒有密碼就無法使用私鑰。

如果不是HSM的選擇(畢竟它們非常昂貴),則應使用PBKDF2或類似的強大系統派生對稱密鑰,並使用該密鑰加密私鑰。 也可以選擇使用CSP的密碼保護,但是它對正在發生的事情的透明性稍差一些,因此您必須注意避免讓域管理員等使用該密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM