共用方式為


手動工作階段金鑰交換

注意

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

 

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

傳送加密的訊息

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

將加密訊息傳送給另一位使用者最簡單的方式,就是傳送以隨機工作階段金鑰加密的訊息,以及使用接收者 金鑰交換公開金鑰加密的工作階段金鑰。

以下是傳送加密工作階段金鑰的步驟。

傳送加密的工作階段金鑰

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