如何在 Windows 中儲存 RSA 金鑰對?

如何在 Windows 中儲存 RSA 金鑰對?

我正在嘗試使用 Openssl-RSA 編寫一個簡單的加密解密程式。當資料被加密時,會產生金鑰對。如果我想解密數據,我需要加密時產生的確切密鑰對。

那麼我應該在哪裡以及如何儲存這個密鑰對,以便我可以盡可能解密加密的內容?

我使用公鑰進行加密,並使用私鑰進行解密。

答案1

從技術上講,您可以將密鑰對儲存在任何您想要的地方,儘管有一些常見的方法可以實現這一點。

如果資料特別敏感且不會定期/持續需要,則儲存私鑰最安全的方法是儲存在隨身碟上或列印在保險箱或銀行金庫中的一張紙上。 (請注意,您可以將公鑰儲存在任何您想要的地方 - 畢竟,它是一條「公共」訊息。

如果您需要輕鬆存取數據,則將私鑰離線儲存在保險箱或保險庫中通常是不切實際的,因為每次檢索它都很麻煩。經常用於密鑰儲存的常見位置是.ssh在主目錄中命名的資料夾。 (這是 Linux 上 OpenSSL 中的預設設置,也經常在其他系統上使用。)常見做法是將金鑰儲存為兩個文件,其名稱按以下方式描述:purpose_type私鑰和purpose_type.pub公鑰。例如,如果您使用 OpenSSL 命令列建立 RSA 金鑰來標識,它會預設儲存在檔案id_rsa和目錄id_rsa.pub.ssh。在您的情況下,您可以將金鑰檔案命名為mydatastorage_rsa和 之類的名稱mydatastorage_rsa.pub

重要的:如果您以這種方式儲存私鑰,強烈建議您使用密碼來保護它。這可以防止任何有權存取您的文件的人使用您的私鑰。當您最初建立密鑰對時,系統可能會提示您提供密鑰密碼;如果沒有,您可以使用 OpenSSL 命令列工具為私鑰新增密碼。

如果您要做大量敏感的加密工作,您可以購買一個硬體金鑰存儲,稱為“硬體安全模組”,縮寫為“HSM”,它是為私鑰的安全存儲而設計的。除非您實際上在安全/加密行業工作,否則這幾乎肯定是矯枉過正。還有其他硬體解決方案,包括“智慧卡”和“USB 加密令牌”,它們比完整的 HSM 便宜,但仍需要一些硬體投資,這可能超出您的需求。


儘管建議使用密碼保護私鑰,但如果您需要在服務(例如網頁伺服器)內進行此解密,則可能會遇到問題。在這種情況下,您有三個選擇:

  1. 每次伺服器應用程式啟動時提供密碼。
  2. 在設定檔中提供密碼。 (僅部分伺服器支援)
  3. 刪除密碼(或一開始就不設定密碼)。

雖然第一個是最安全的,但只有每次手動啟動服務才能使用它。如果您需要執行其他任一選項,請確保正確保護設定檔(選項 2)或私鑰(選項 3)以防止對其進行存取。

相關內容