共用方式為


金鑰和訊息的逐步交換 (CNG 範例)

密碼編譯公開/私密金鑰方案頗容易遭受攔截式攻擊 (Man-in-the-middle Attack)。這些攻擊有許多型式,包括竊聽、替代、拒絕服務和網路釣魚。Cryptography Next Generation (CNG) 安全通訊範例將解決其中的替代型式,範例中的第三方 (Mallory) 讓自己可以介入兩個通訊端點 (Alice 和 Bob) 之間。

下列小節提供您 CNG 範例概觀中討論的 5 個安全性版本的相關背景資訊、說明圖例和逐步指示。

  • 版本 1:基本訊息交換

  • 版本 2:未簽署金鑰和未簽署訊息交換:

    • 沒有攔截的情況

    • 有攔截的情況

  • 版本 3:已簽署金鑰和已簽署訊息交換並搭配攔截

  • 版本 4:已簽署金鑰和已簽署訊息交換並搭配偵測

  • 版本 5:已簽署金鑰和已簽署訊息交換並搭配應用程式終止

版本 1:基本訊息交換

下圖顯示 Alice 和 Bob 在沒有攔截式攻擊情況下的訊息傳送。這些訊息未經加密或數位簽署。CNG 範例會在您選取版本 1 時示範這個程序。圖例後會提供這個程序的逐步說明。

版本 1:基本訊息交換

版本 1:基本訊息交換

Alice 和 Bob 傳送未加密未簽署訊息

1.Alice 建立訊息。

2.Alice 將訊息傳送給 Bob。

3.Bob 收到 Alice 的訊息。

4.Bob 建立訊息。

5.Bob 將訊息傳送給 Alice。

6.Alice 收到 Bob 的訊息。

版本 2:未簽署金鑰和未簽署訊息交換:沒有攔截的情況

下圖顯示在沒有攔截式攻擊情況下的金鑰和訊息交換。CNG 範例會在您選取版本 2 時示範這個程序,並關閉 Mallory 的攔截作業。圖例後會提供這個程序的逐步說明。

版本 2:未簽署金鑰和未簽署訊息交換:沒有攔截的情況

版本 2:未簽署金鑰和未簽署訊息交換,未遭攔截的情況

Alice 和 Bob 建立其金鑰

1.Alice 產生公開/私密金鑰組。

2.Alice 將公開金鑰傳送給 Bob。

3.Bob 儲存 Alice 的公開金鑰。

4.Bob 產生公開/私密金鑰組。

5.Bob 將公開金鑰傳送給 Alice。

6.Alice 儲存 Bob 的公開金鑰。

Alice 和 Bob 衍生相符的金鑰內容

7.Alice 使用其私密金鑰和 Bob 的公開金鑰,產生共用密碼協議。並使用共用密碼協議來衍生金鑰內容。

8.Bob 使用其私密金鑰和 Alice 的公開金鑰,產生相同的共用密碼協議。並使用共用密碼協議來衍生與 Alice 相同的金鑰內容。

如需共用密碼協議和金鑰衍生的詳細資訊,請參閱 ECDH 演算法概觀 (CNG 範例)

Alice 和 Bob 傳送訊息給彼此

9.Alice 建立訊息並使用金鑰內容進行加密。

10.Alice 將加密訊息傳送給 Bob。

11.Bob 接收並解密該訊息。

12.Bob 建立訊息並使用金鑰內容進行加密。

13.Bob 將訊息傳送給 Alice。

14.Alice 接收並解密該訊息。

版本 2:未簽署金鑰和未簽署訊息交換:有攔截的情況

下圖顯示在有攔截式攻擊情況下的金鑰和訊息流動。CNG 範例會在您選取版本 2 時示範這個程序,並啟用 Mallory 的攔截作業。

版本 2:未簽署金鑰和未簽署訊息交換:有攔截的情況

版本 2:未簽署金鑰和未簽署訊息交換,遭攔截的情況

Mallory 模擬 Bob

1.Alice 產生公開/私密金鑰組。

2.Alice 將公開金鑰傳送給 Bob。

3.Mallory 攔截並儲存 Alice 的公開金鑰。

4.Mallory 產生自己的公開/私密金鑰組,與 Alice 搭配使用。

5.Mallory 將公開金鑰傳送給 Alice,讓她誤以為這是來自 Bob 的。

6.Alice 儲存 Mallory 的公開金鑰,並認為這是 Bob 的金鑰。

Mallory 在完成與 Alice 間的金鑰交換前,都不會建立通向 Bob 的通道。這麼做的原因是他要與 Alice 共用 PublicChannel (請參閱原始程式碼概觀)。他要先傳送他的替代金鑰給 Alice,然後才能關閉、重新開啟 PublicChannel 並與 Bob 連接。

比較這部分和步驟 17-22,在該處,Alice 傳送的訊息會傳輸給 Bob。

Mallory 模擬 Alice

7.Mallory 產生第二個公開/私密金鑰組,與 Bob 搭配使用。

8.Mallory 將公開金鑰傳送給 Bob。

9.Bob 儲存 Mallory 的公開金鑰,並認為這是 Alice 的金鑰。

10.Bob 產生公開/私密金鑰組。

11.Bob 將公開金鑰傳送給 Alice。

12.Mallory 攔截並儲存 Bob 的公開金鑰。

Alice 和 Mallory 衍生相符的金鑰內容

13.Alice 使用其私密金鑰和她認定為 Bob 的公開金鑰 (實際上是 Mallory/Alice 公開金鑰),產生共用密碼協議。並使用共用密碼協議來衍生 Mallory/Alice 金鑰內容。

14.Mallory 使用其私密金鑰和 Alice 的公開金鑰,產生相同的共用密碼協議。然後使用共用密碼協議來衍生與 Alice 相同的金鑰內容。

Bob 和 Mallory 衍生相符的金鑰內容

15.Mallory 使用其私密金鑰和 Bob 的公開金鑰,產生共用密碼協議。並使用共用密碼協議來衍生 Mallory/Bob 金鑰內容。

16.Bob 使用其私密金鑰和他認定為 Alice 的公開金鑰 (實際上是 Mallory/Bob 公開金鑰),產生相同的共用密碼協議。然後使用共用密碼協議來衍生與 Mallory 相同的金鑰內容。

注意事項注意事項

經過步驟 13 和 16 後,Alice 和 Bob 認為他們正在共用相同的金鑰內容。實際上,他們並沒有與彼此共用金鑰內容,而是與 Mallory 共用。

Alice 將訊息傳送給 Bob

這時,Mallory 就可以從事雙向對談,因為他有兩個開放管道可供使用。這個部分與步驟 1-6 不同,在該處 Mallory 一次只能開啟一個通道,才能攔截密碼編譯金鑰。

17.Alice 產生訊息,並使用在步驟 13 產生的 Mallory/Alice 金鑰內容來加密訊息。她告訴 Bob 有關值得開發的銷售連絡人資訊。

18.Alice 將訊息傳送給 Bob。

19.Mallory 攔截並解密該訊息,也就竊取到該連絡資訊。

20.Mallory 根據 Alice 的訊息產生假的訊息,變更其中的連絡位址。並使用共用的 Mallory/Bob 金鑰內容來加密假訊息。

21.Mallory 將訊息傳送給 Bob。

22.Bob 解密該訊息,認定這是來自 Alice 的。

Bob 將訊息傳送給 Alice

23.Bob 產生訊息,並使用在步驟 16 產生的 Mallory/Bob 金鑰內容來加密訊息。他告訴 Alice 希望能與該連絡人會面。

24.Bob 將訊息傳送給 Alice。

25.Mallory 攔截、解密並捨棄該訊息。

26.Mallory 使用共用的 Mallory/Alice 金鑰內容來產生假訊息。他告訴 Alice 他認為該銷售連絡位址不正確,但他會繼續嘗試聯繫該連絡人。

27.Mallory 將訊息傳送給 Alice。

28.Alice 解密該訊息,認定這是來自 Bob 的。她接受他的說法並轉而開發其他的客戶。

版本 3:已簽署金鑰和已簽署訊息交換並搭配攔截

下圖顯示密碼編譯金鑰和訊息流動、攔截式攻擊,以及使用數位簽章來簽署金鑰和訊息。CNG 範例會在您選取版本 3 時示範這個案例,並啟用 Mallory 的攔截作業。

版本 3:已簽署金鑰和已簽署訊息交換並搭配攔截

版本 3:已簽署金鑰和已簽署訊息交換,遭攔截的情況

版本 3 與版本 2 相同,不同的是,版本 3 示範使用數位簽章來簽署訊息和密碼編譯金鑰。

在步驟 1-6 中,Alice 在不安全的 PublicChannel 上傳送數位簽章金鑰而遭到 Mallory 的攔截,Mallory 使用這個金鑰來簽署他的替代金鑰和訊息。因此,Alice、Bob 和 Mallory 使用相同的數位簽章金鑰。當 Alice 和 Bob 在步驟 15、20、35 和 42 中驗證金鑰和訊息簽章時,並沒有察覺到 Mallory 的攔截作業。

版本 4:已簽署金鑰和已簽署訊息交換並搭配偵測

下圖顯示密碼編譯金鑰和訊息流動、攔截式攻擊,以及使用數位簽章來簽署金鑰和訊息。除此之外,版本 4 軟體會偵測到無效的簽章。CNG 範例會在您選取版本 4 時示範這個案例,並啟用 Mallory 的攔截作業。

版本 4:已簽署金鑰和已簽署訊息交換並搭配偵測

版本 4:已簽署金鑰和已簽署訊息交換,已偵測到攻擊的情況

版本 4 與版本 3 在下列方面有所不同:

  • 只有 Alice 和 Bob 收到版本 4 軟體。

  • 版本 4 會傳送版本 3 中使用的數位簽章金鑰,但會將其視為假的金鑰。

  • 版本 4 會讓 Alice 透過 Mallory 不知道的私用通道,傳送第二個數位簽章金鑰給 Bob (這是上圖中的步驟 0)。Alice 和 Bob 會使用這個私密數位簽章來簽署金鑰和訊息。

  • 版本 4 會在步驟 15、20、35 和 42 中偵測到 Mallory 的無效簽章,並顯示安全性警告。

Mallory 繼續使用版本 3 數位簽章來簽署他的替代金鑰和訊息。因此:

  • 他不知道有版本 4 的私密數位簽章金鑰。

  • 他不會收到安全性警告。

  • 他不知道 Alice 和 Bob 可以偵測到他的無效金鑰和訊息簽章。

版本 5:已簽署金鑰和已簽署訊息交換並搭配應用程式終止

下圖顯示密碼編譯金鑰和訊息流動、攔截式攻擊,以及使用數位簽章來簽署金鑰和訊息。跟版本 4 一樣會偵測到無效的簽章。CNG 範例會在您選取版本 5 時示範這個案例,並啟用 Mallory 的攔截作業。

版本 5:已簽署金鑰和已簽署訊息交換並搭配應用程式終止

版本 5:已簽署金鑰和已簽署訊息交換,工作階段終止的情況

版本 5 與版本 4 相同,不同的是,當 Alice 和 Bob 收到的公開密碼編譯金鑰具有無效數位簽章時,會結束工作階段。

請參閱

概念

Cryptography Next Generation (CNG) 安全通訊範例

密碼編譯服務