共用方式為


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

更新: 2008 年 7 月

密碼編譯公開/私密金鑰方案頗容易遭受攔截式攻擊 (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:基本訊息交換

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

1. Alice 建立訊息。

2. Alice 將訊息傳送給 Bob。

3. Bob 收到 Alice 的訊息。

4. Bob 建立訊息。

5. Bob 將訊息傳送給 Alice。

6. Alice 收到 Bob 的訊息。

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

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

版本 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:未簽署金鑰和未簽署訊息交換:有攔截的情況

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

請參閱

概念

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

密碼編譯概觀

變更記錄

日期

記錄

原因

2008 年 7 月

加入主題。

增強內容