3-6 Diffie-Hellman 鑰匙交換法
3-6-1 DH 演算法推論 目前許多廠商皆採用 Diffie-Hellman『鑰匙交換』(Key Exchange)技術,製作公開鑰匙系統,但此演算法並不直接使用於加密或數位簽章,而僅應用於鑰匙交換方面(製作秘密鑰匙,再用它來加密),這與 RSA 演算法的使用有很大的區隔。 Diffie-Hellman 鑰匙交換法是利用 RSA 編碼演算法的特性(同餘乘法與指數運算),雙方互相傳送一段訊息,他們再由這些訊息建立共享鑰匙(又稱會議鑰匙)。其演算法敘述如下:首先 Alice 與 Bob 共用 n 與 g 兩個參數(n, g 是公開的,又稱公鑰),其中 n 是很大的質數且 g 是 n 的原根(primitive),並且 (n - 1) 必須有很大的質因數;接下來,Alice 與 Bob 各選擇一個小於 n 的數值 x 與 y (又稱私鑰),必須是秘密的,不可讓他人知道(經過運算後很難知道)。其運作程序如圖 3-5 所示,說明如下:
圖 3-5 Diffie-Hellman 鑰匙交換的運作程序 簡單的說,DH 演算法是利用: (gx mod n)y mod n = (gy mod n) x mod = gxy mod n 同餘運算的特性來達成。我們先以一個例子說明,再討論其安全性。假設公開參數(公鑰)分別是 n = 47與g = 3(通訊雙方皆知曉),雙方建立會議鑰匙如下:
gx mod n = 38 mod 47 ≡ 28 mod 47
則 Alice 傳送 {28}(鑰匙材料)給 Bob。
gy mod n = 310 mod 47 = 17 mod 47
則 Bob 傳送 {17} 給 Alice。同時 Bob 利用 Alice 傳送鑰匙材料 {28} 計算會議鑰匙,如下:(會議鑰匙 = 4) (gx mod n)y = gxy mod n = 2810 mod 47 = 4 mod 47
(gy mod n)x = gxy mod n = 178 mod 47 = 4 mod 47
最後我們可以發現,Alice與Bob所計算出來的值都是 4,該值就是他們的共享鑰匙。 3-6-2 中間人攻擊 雖然Diffie-Hellman 演算法要從公開參數(公鑰)計算出私鑰不容易,但可能遭受『中間人攻擊』(Man-in-the-middle Attack)。圖 3-6 中,假設 Alice 欲與 Bob 通訊:
圖 3-6 中間人攻擊 接下來會發生什麼事情已不必多言,Alice 與 Bob 都誤認為 Trudy 是他們通訊的對象,他們之間通訊的訊息必然被Bob一覽無遺,一般我們又稱為『桶列攻擊法』(Bucket Bridge Attack)。 3-6-3 防禦中間人攻擊 Diffie-Hellman 鑰匙交換法對資訊安全的貢獻非常大,其實中間人攻擊法並不難防禦,諸多文獻已提出解決方案,並且已嵌入許多安全系統中。接下來,介紹幾種防禦方法,這些方法或許會被混合使用(因為沒有一種方法是百分之一百安全的)。 【(A)公開 Diffie-Hellman 參數】 Diffie-Hellman 演算法中有兩個公開的參數 n 與 g,若將其值固定,並且對外公佈(由鑰匙交換協定規範)。當中間人攔截到訊息之後,因無法傳送另一個參數欺騙另一方(如圖 4-8 訊號 (2)),就可以避免中間人的主動攻擊,但儘管如此,也不盡然能完全防禦中間人攻擊,仍需仰賴其它配套措施。 【(B)認證的 Diffie-Hellman】 遭受中間人攻擊的主要原因,是因為不能確認通訊對方的身分,若能在交換訊息之前,先確認彼此身分,便不會受到攻擊,『認證的 Diffie-Hellman』(Authenticated Diffie-Hellman) 正是如此,其實現的方法有下列幾種:
後面兩種方法,都能提供再確認的功能,至於如何建立安全通道之『前置共享密鑰』的方法,爾後再詳細介紹。
|
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|