儲存會話金鑰
注意
本節假設用戶擁有一組 公開/私鑰組。 如需建立金鑰組的指示和範例,請參閱 範例 C 程式:建立金鑰容器和產生金鑰。
儲存會話金鑰
- 使用 CryptExportKey 函式建立簡單的密鑰 BLOB。 這會將會話金鑰從 CSP 傳輸到應用程式的記憶體空間。 指定用來簽署金鑰 BLOB 的交換公鑰。
- 將已簽署的金鑰 BLOB 儲存至磁碟。 假設所有磁碟都不安全。
- 需要金鑰時,請從磁碟讀取金鑰 BLOB。
- 使用 CryptImportKey 函式將金鑰 BLOB 匯回 CSP。
如需建立會話密鑰並將該金鑰導出至可寫入磁碟檔案之簡單密鑰 BLOB 的範例,請參閱範例 C 程式:匯出工作階段金鑰。
此程式只提供最少的安全性。 如果預存會話金鑰將在稍後用來加密數據,則上述程式不提供足夠的安全性。
若要提供更高的安全性,請先使用交換私鑰簽署金鑰 BLOB,再將密鑰儲存至磁碟。 稍後從磁碟讀取密鑰 BLOB 時,可以驗證其簽章,以確保密鑰 BLOB 完好無損。
如果未簽署金鑰 BLOB,任何有權存取磁碟或其他媒體的密鑰儲存者都可以建立新的會話密鑰。
新的工作階段金鑰可以使用原始使用者的公鑰交換金鑰來加密,而這個新金鑰可以取代為原始密鑰。 如果使用者不知情地使用替代的會話密鑰來加密檔案和訊息,則建立替代密鑰的人員可以輕鬆地解密它們。
哈希和數位簽名會詳細討論數字簽名。