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

Cryptography Next Generation (CNG) 安全通訊範例會模型化處理攔截式攻擊 (Man-in-the-middle Attack) 的密碼編譯方案。 這個範例會模擬虛構廣告公司中 3 位人員 Alice、Bob 和 Mallory 間的通訊。範例中會使用 CNG 類別、具名管道傳輸和互動式主控台視窗,示範攔截式攻擊的安全性方案。

這是屬於進階範例,並假設您很熟悉密碼編譯、處理序間通訊和網路安全性等資訊。

注意事項注意事項

CNG 類別只適用於 Windows Vista 和後續的 Windows 作業系統。

本主題提供您 CNG 範例的概觀。其中會討論下列內容:

  • 範例案例

  • IM 工具的安全性弱點

  • 版本 1:具名管道

  • 版本 2-5:累加的安全性改善措施

  • 測試結果

  • 範例程式碼

  • 命名規範

  • 詳細資訊

範例案例

某家廣告公司在開發桌上型電腦所執行的即時訊息 (IM) 工具。所有的員工都可以檢視輸入這個工具中的訊息。

Alice 和 Bob 服務於銷售部門。他們使用 IM 工具互相傳送銷售連絡資訊。Mallory 是服務於系統作業的網路工程師。他在暗地裡監視 Alice 和 Bob 的訊息。為了個人利益,他每隔一個月就複製珍貴的銷售連絡資訊並販賣給公司的競爭者。

幾個月過後,公司發現到有人在竊取銷售連絡資訊,而且跨部門的通訊發生資訊外洩。公司決定建立新的 IM 工具,並從分析現有工具的安全性做為第一步。

IM 工具的安全性弱點

公司了解到現有的 IM 工具有下列安全性弱點:

  • 該工具會傳輸純文字 (非加密) 訊息。

  • 該工具會在整個公司網路廣播這些訊息。

  • 任何人皆可檢視甚至記錄這些訊息。

公司決定要在公司網路上啟用點對點 (Point-To-Point) 通訊,讓新的 IM 工具可以解決這些問題。

版本 1:具名管道

公司建立的新 IM 工具是靠具名管道 (或通道) 進行處理序間的通訊 (IPC)。這個版本並沒有使用加密 (Encryption) 或數位簽章。

Alice 和 Bob 接獲下列指示:

  1. 在名為 PublicChannel 的通道上建立初始連接。

  2. 傳送私用通道名稱給彼此,再立即中斷與 PublicChannel 的連接。

  3. 使用私用通道進行連接,並傳送銷售連絡資訊給彼此。

公司希望這種點對點的通訊通道,可以足夠與其餘的公司網路隔離。但他們很快就知道,這個方案不足以解決問題。Mallory 發現新系統的缺點,並繼續竊取銷售連絡資訊,同時開始謹慎地變更銷售人員的連絡人位址以隱藏自己的罪行。

公司決定為 IM 工具加入更多的安全性防護措施,以停止竊取的行為。

版本 2-5:累加的安全性改善措施

隨後的幾個月,對新軟體進行許多的測試和加強。當測試完成時,共額外建立了 4 個版本的 IM 工具。每個版本都是依前一個版本為基礎而建置的:

  • 版本 2 納入 CNG 加密,使用公開/私密金鑰組。

  • 版本 3 使用數位簽章,簽署密碼編譯金鑰和訊息。

  • 版本 4 加入私用通道,傳輸用來簽署密碼編譯金鑰和訊息的數位簽章。

  • 版本 5 則藉由在任何 IM 工作階段所收到的簽署金鑰具有無效簽章時結束該工作階段,進而終止入侵。

測試結果

版本 2 使用高度安全性的加密演算法。要破解這個加密需要耗費大量的資源和時間。因此,公司非常驚訝這個方案依舊阻止不了資料外洩。

使用數位簽章的版本 3 還是沒有辦法防止竊取行為。然而,這個版本卻讓公司得到一個重大的發現:如果密碼編譯金鑰和數位簽章遭到攔截和替換,則用於傳輸金鑰和簽章的通道就一定是問題的來源。

這個想法可以藉由在版本 4 加入私用通道來傳輸數位簽章而進行測試。另外,當金鑰或訊息具有無效的簽章時,版本 4 也會顯示警告。公司中只有兩個人拿到版本 4:Alice 和 Bob。而當 Alice 和 Bob 傳送第一個訊息,就立即開始顯示安全性警告時,公司終於了解到他們的網路遭遇到攔截式攻擊。

版本 5 跟版本 4 一樣,唯一的不同在於,版本 5 會在發生第一個安全性違規時結束工作階段。一旦安裝這個版本,銷售連絡資訊的竊取行為也就會終止。

範例程式碼

本範例所提供的程式碼會模型化處理這 5 個安全性版本。在原始程式碼概觀 (CNG 範例) 中有提供您相關的程式碼概觀。

注意事項注意事項

本範例並不是提供您完整的安全性方案。其目的僅在於藉由接近真實的安全性案例示範 CNG API。完整的安全性應用程式並不在本範例所討論的範圍內。

命名規範

本範例的說明內容會參照 5 個軟體版本,並以編號對應其安全性層級 (例如,版本 1、版本 2 等等)。

隨前後文之不同,名稱 "Alice"、"Bob" 和 "Mallory" 可能代表範例情節中提及的 3 個人員或是 3 個 Visual Studio 應用程式。為了簡潔性,說明內容會使用相同的名稱表示這些人員或應用程式。例如,「Alice 會自動載入 Bob 和 Mallory」,即代表 Alice 應用程式會自動載入 Bob 和 Mallory 應用程式。

詳細資訊

下列主題提供您有關範例案例和程式碼的深入資訊:

請參閱

概念

密碼編譯服務

.NET Framework 密碼編譯模型

密碼編譯服務

其他資源

密碼編譯工作