共用方式為


手動會話金鑰交換

注意

本節所述的程式假設使用者(或 CryptoAPI 用戶端)已經擁有自己的一組 公開/私鑰組,而且也已取得彼此 公鑰

 

下圖顯示如何使用此程式來傳送加密的訊息。

傳送加密訊息

這種方法很容易受到至少一種常見的攻擊形式。 竊聽程式可以取得一或多個加密訊息和加密金鑰的複本。 然後,在一段時間后,竊聽程式可以將其中一則訊息傳送給接收者,而接收者將無法知道訊息沒有直接從原始發件者來。 此風險可藉由時間戳所有訊息或使用序號來降低。

將加密訊息傳送給另一位使用者最簡單的方式,是傳送以隨機會話密鑰加密的訊息,以及以接收者 金鑰交換公鑰加密的會話金鑰,

以下是傳送加密會話金鑰的步驟。

傳送加密的會話金鑰

  1. 使用 cryptGenKey 函式,建立隨機 會話密鑰
  2. 使用會話金鑰加密訊息。 此程式會在 數據加密和解密中討論。
  3. 使用 CryptExportKey 函式,將會話密鑰導出至 金鑰 BLOB,並指定以目的地使用者的金鑰交換公鑰加密金鑰。
  4. 將加密的訊息和加密金鑰 BLOB 傳送給目的地使用者。
  5. 目的地使用者會使用 cryptImportKey 函式,將密鑰 BLOB 匯入至其 CSP。 這會自動解密會話密鑰,前提是目的地使用者的金鑰交換公鑰已在步驟 3 中指定。
  6. 然後,目的地使用者可以使用工作階段金鑰來解密訊息,遵循 資料加密和解密中討論的程式,