Diffie Hellman金鑰協議演算法

2021-10-09 16:17:28 字數 2493 閱讀 7697

diffie-hellman金鑰協議演算法是一種確保共享金鑰key安全穿越不安全網路的方法,它是oakley的乙個組成部分,由whitefield與martin hellman在2023年提出。這個機制的巧妙在於需要安全通訊的雙方可以用這個方法確定對稱金鑰。然後可以用這個金鑰進行加密和解密。但是注意,這個金鑰交換協議/演算法只能用於金鑰的交換,而不能進行訊息的加密和解密。雙方確定要用的金鑰後,要使用其他對稱金鑰操作加密演算法實際加密和解密訊息。

由於diffie-hellman演算法本身限於金鑰交換的用途,被許多商用產品用作金鑰交換技術,因此該演算法通常可以被稱為diffie-hellman金鑰交換(簡寫為dh演算法,基於dh演算法的金鑰交換通常也被稱為dh交換)

[2]。這種金鑰交換技術的目的在於使得兩個使用者安全地交換乙個秘密金鑰以便用於以後的報文加密. diffie-hellman金鑰交換演算法的有效性依賴於計算離散對數的難度.簡言之,可以如下定義離散對數:首先定義乙個素數p的原根,為其各次冪產生從1 到p-1的所有整數根,也就是說,如果a是素數p的乙個原根,那麼數值 a mod p,a2 mod p,…,ap-1 mod p 是各不相同的整數,並且以某種排列方式組成了從1到p-1的所有整數. 對於乙個整數b和素數p的乙個原根a,可以找到惟一的指數i,使得 b = a^i mod p 其中0 ≤ i ≤ (p-1)指數i稱為b的以a為基數的模p的離散對數或者指數。

基於原根的定義及性質,可以定義diffie-hellman金鑰交換演算法。該演算法描述如下:

1,有兩個全域性公開的引數,乙個素數q和乙個整數a,a是q的乙個原根。

2,假設使用者a和b希望交換乙個金鑰,使用者a選擇乙個作為私有金鑰的隨機數xa(xaxb)xa mod q (根據取模運算規則得到) = a^(xbxa) mod q = (axa)xb mod q = (a^xa mod q)^xb mod q = (ya)^xb mod q 因此相當於雙方已經交換了乙個相同的秘密金鑰.

4,因為xa和xb是保密的,乙個敵對方可以利用的引數只有q,a,ya和yb.因而敵對方被迫取離散對數來確定金鑰.例如,要獲取使用者b的秘密金鑰,敵對方必須先計算 xb = inda,q(yb) 然後再使用使用者b採用的同樣方法計算其秘密金鑰k。diffie-hellman金鑰交換演算法的安全性依賴於這樣乙個事實:雖然計算以乙個素數為模的指數相對容易,但計算離散對數卻很困難。對於大的素數,計算出離散對數幾乎是不可能的。

[3]下面給出例子:金鑰交換基於素數q = 97和97的乙個原根a = 5.a和b分別選擇私有金鑰xa = 36和xb = 58.每人計算其公開金鑰 ya = 5^36 = 50 mod 97 yb = 5^58 = 44 mod 97 在他們相互獲取了公開金鑰之後,各自通過計算得到雙方共享的秘密金鑰如下: k = (yb)^xa mod 97 = 44^36 = 75 mod 97 k = (ya)^xb mod 97 = 50^58 = 75 mod 97 從|50,44|出發,攻擊者要計算出75很不容易.[1]

優點與缺點

編輯優點

1、僅當需要時才生成金鑰,減小了將金鑰儲存很長一段時間而致使遭受攻擊的機會。

2、除對全域性引數的約定外,金鑰交換不需要事先存在的基礎結構。缺點

1、沒有提供雙方身份的任何資訊。

2、它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的金鑰。受攻擊者花費了相對多的計算資源來求解無用的冪係數而不是在做真正的工作。

3、沒辦法防止重演攻擊。

4、容易遭受中間人的攻擊。第三方c在和a通訊時扮演b;和b通訊時扮演a。a和b都與c協商了乙個金鑰,然後c就可以監聽和傳遞通訊量。中間人的攻擊按如下進行:

(1)b在給a的報文中傳送他的公開金鑰。

(2)c截獲並解析該報文。c將b的公開金鑰儲存下來並給a傳送報文,該報文具有b的使用者id但使用c的公開金鑰yc,仍按照好像是來自b的樣子被傳送出去。a收到c的報文後,將yc和b的使用者id儲存在一塊。類似地,c使用yc向b傳送好像來自a的報文。

(3)b基於私有金鑰xb和yc計算秘密金鑰k1。a基於私有金鑰xa和yc計算秘密金鑰k2。c使用私有金鑰xc和yb計算k1,並使用xc和ya計算k2。

(4)從現在開始,c就可以**a發給b的報文或**b發給a的報文,在途中根據需要修改它們的密文。使得a和b都不知道他們在和c共享通訊。

優化方法

編輯oakley演算法是對diffie-hellman金鑰交換演算法的優化

[4],它保留了後者的優點,同時克服了其弱點。

改進特徵

1、它採用稱為cookie程式的機制來對抗阻塞攻擊。

2、它使得雙方能夠協商乙個全域性引數集合。

3、它使用了現時來保證抵抗重演攻擊。

4、它能夠交換diffie-hellman公開金鑰。

5、它對diffie-hellman交換進行鑑別以對抗中間人攻擊。

鑑別方法

1、數字簽名:通過簽署乙個相互可以獲得的雜湊**來對交換進行鑑別;每一方都使用自己的私鑰對雜湊**加密。雜湊**是在一些重要引數上生成的,如使用者id和現時。

[5]2、公開金鑰加密:通過使用傳送者的私鑰對諸如id和現時等引數進行加密來鑑別交換。

3、對稱金鑰加密:通過使用某種共享金鑰對交換引數進行對稱加密,實現交換的鑑別。

Diffie Hellman金鑰交換

最近在看網課的時候了解了diffie hellman金鑰交換演算法,這裡記錄下來。在公共網路中傳輸資料,很容易被第三方擷取。為了加強資料安全需要使用加密演算法。dh金鑰就是其中一種。dh金鑰就是很好的一種演算法是一種安全協議。能允許雙方在不安全的通道上建立只有彼此知曉的金鑰,其他人即使能看到傳輸的資...

Diffie Hellman金鑰交換

diffie hellman金鑰交換 dhke 是由whitfield diffie和martin hellman在1976年提出的。金鑰交換方案提供了實際中金鑰分配問題的解決方案,即允許雙方通過不安全的通道進行交流獲得乙個共同金鑰。許多公開和商業密碼協議中都實現了這種基本的金鑰協議技術,比如安全外...

Diffie Hellman 金鑰交換協議

設p 是乙個素數,gf p 上的離散對數是困難的,設 g為其生成元,為達到通訊雙方共享金鑰的目的,通訊雙方a和 b分別進行如下操作。1 a 進行如下兩步操作 隨機選取乙個整數 xa,0 xa 計算ya gxa mod p,將ya 傳送給b 2 b進行如下兩步操作 隨機選取乙個整數xb,0 xb傳送給...