[英]Storing RSA private key in file
我有一個簡單的加密應用程序,將在其中加密數據庫中的“敏感”數據。 只有具有訪問權限的人才能以解密形式查看這些數據。 我一直在尋找有關如何執行此操作的更多信息,這是我的項目方法:
現在,我的問題是如何安全地存儲該私鑰? 通過閱讀,可以使用FromXMLString獲得私鑰。 但是,我在想,如果有人以某種方式獲取USB文件和XMLFile,他可以通過類似地使用FromXMLString來找到私鑰。 那么,如何使用密碼保護該文件? 我可以在C#中使用任何功能嗎?
另外,如果更改密鑰對,則必須更改公用密鑰,並使用新的新公用密鑰再次重新加密AES密鑰。 為此,我發現這篇文章“ 如何通過RSA生成唯一的公鑰和私鑰”非常有用。 但是,我不確定作者是如何實現的。 他是否還將密鑰容器名稱存儲在私鑰文件中? 還是ToXMLString自動執行此操作?
謝謝〜
不知何故,必須將解密密鑰或用於獲得解密密鑰的RSA
密鑰保存為純文本。 如果不是USB驅動器,則必須放在用戶的腦海中。
因此,您可以做的就是進行多重身份驗證。 只有用戶才知道的密碼(他會把它放在腦海中或記在便箋上;而不是您的電話上)和包含另一個解密密鑰的USB驅動器。
因此,攻擊者必須同時具有密碼和USB驅動器才能獲取加密的信息。
看一下PBKDF2 ,了解如何從用戶輸入的密碼派生出加密安全密鑰。
我建議將證書以及私鑰存儲在PKCS兼容容器(* .pfx)中。 在C#中,這可以通過Bouncy Castle庫完成。
這是創建對的方法:
這是將其存儲在容器中的方法(步驟3):
解密私鑰的問題在於,該密鑰將以純格式傳輸到計算機的主內存中,並且可能會以存儲方式交換。 有一些選擇可以使用私鑰而不將其存儲到內存中:
使用其他棘手的選項:
此外,您還可以選擇使用可以使用PIN或密碼保護的USB驅動器。 Ironkey生產的認證 USB驅動器在USB密鑰本身的硬件中執行AES加密。 當然,這會將您的私鑰移到內存中。
如果必須在內存中使用私鑰,請確保您的系統已正確加固 ,例如,加密交換,確保您具有維護訪問權限的系統等。
歡迎進入密鑰管理領域:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.