當前位置:編程學習大全網 - 源碼下載 - 關於diffie-hellman算法的數學解釋(網絡專業)

關於diffie-hellman算法的數學解釋(網絡專業)

Whitefield與Martin Hellman在1976年提出了壹個奇妙的密鑰交換協議,稱為Diffie-Hellman密鑰交換協議/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).這個機制的巧妙在於需要安全通信的雙方可以用這個方法確定對稱密鑰.然後可以用這個密鑰進行加密和解密.但是註意,這個密鑰交換協議/算法只能用於密鑰的交換,而不能進行消息的加密和解密.雙方確定要用的密鑰後,要使用其他對稱密鑰操作加密算法實際加密和解密消息.

(盡管Diffie-Hellman密鑰交換協議/算法使用了數學原理,但是很容易理解.)

Diffie-Hellman

由Whitfield Diffie和Martin Hellman在1976年公布的壹種密鑰壹致性算法。Diffie-Hellman是壹種建立密鑰的方法,而不是加密方法。然而,它所產生的密鑰可用於加密、進壹步的密鑰管理或任何其它的加密方式。 Diffie-Hellman密鑰交換算法及其優化首次發表的公開密鑰算法出現在Diffie和Hellman的論文中,這篇影響深遠的論文奠定了公開密鑰密碼編碼學.由於該算法本身限於密鑰交換的用途,被許多商用產品用作密鑰交換技術,因此該算法通常稱之為Diffie-Hellman密鑰交換.這種密鑰交換技術的目的在於使得兩個用戶安全地交換壹個秘密密鑰以便用於以後的報文加密. 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 = ai mod p 其中0 ≤ i ≤ (p-1) 指數i稱為b的以a為基數的模p的離散對數或者指數.該值被記為inda ,p(b). 基於此背景知識,可以定義Diffie-Hellman密鑰交換算法.該算法描述如下: 1,有兩個全局公開的參數,壹個素數q和壹個整數a,a是q的壹個原根. 2,假設用戶A和B希望交換壹個密鑰,用戶A選擇壹個作為私有密鑰的隨機數XA3,用戶A產生***享秘密密鑰的計算方式是K = (YB)XA mod q.同樣,用戶B產生***享秘密密鑰的計算是K = (YA)XB mod q.這兩個計算產生相同的結果: K = (YB)XA mod q = (aXB mod q)XA mod q = (aXB)XA mod q (根據取模運算規則得到) = aXBXA mod q = (aXA)XB mod q = (aXA 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密鑰交換算法的安全性依賴於這樣壹個事實:雖然計算以壹個素數為模的指數相對容易,但計算離散對數卻很困難.對於大的素數,計算出離散對數幾乎是不可能的. 下面給出例子.密鑰交換基於素數q = 97和97的壹個原根a = 5.A和B分別選擇私有密鑰XA = 36和XB = 58.每人計算其公開密鑰 YA = 536 = 50 mod 97 YB = 558 = 44 mod 97 在他們相互獲取了公開密鑰之後,各自通過計算得到雙方***享的秘密密鑰如下: K = (YB)XA mod 97 = 4436 = 75 mod 97 K = (YA)XB mod 97 = 5058 = 75 mod 97 從|50,44|出發,攻擊者要計算出75很不容易. 下圖給出了壹個利用Diffie-Hellman計算的簡單協議.

假設用戶A希望與用戶B建立壹個連接,並用壹個***享的秘密密鑰加密在該連接上傳輸的報文.用戶A產生壹個壹次性的私有密鑰XA,並計算出公開密鑰YA並將其發送給用戶B.用戶B產生壹個私有密鑰XB,計算出公開密鑰YB並將它發送給用戶A作為響應.必要的公開數值q和a都需要提前知道.另壹種方法是用戶A選擇q和a的值,並將這些數值包含在第壹個報文中. 下面再舉壹個使用Diffie-Hellman算法的例子.假設有壹組用戶(例如壹個局域網上的所有用戶),每個人都產生壹個長期的私有密鑰XA,並計算壹個公開密鑰YA.這些公開密鑰數值,連同全局公開數值q和a都存儲在某個中央目錄中.在任何時刻,用戶B都可以訪問用戶A 的公開數值,計算壹個秘密密鑰,並使用這個密鑰發送壹個加密報文給A.如果中央目錄是可信任的,那麽這種形式的通信就提供了保密性和壹定程度的鑒別功能.因為只有A和B可以確定這個密鑰,其它用戶都無法解讀報文(保密性).接收方A知道只有用戶B才能使用此密鑰生成這個報文(鑒別). Diffie-Hellman算法具有兩個吸引力的特征: 僅當需要時才生成密鑰,減小了將密鑰存儲很長壹段時間而致使遭受攻擊的機會. 除對全局參數的約定外,密鑰交換不需要事先存在的基礎結構. 然而,該技術也存在許多不足: 沒有提供雙方身份的任何信息. 它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰.受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作. 沒辦法防止重演攻擊. 容易遭受中間人的攻擊.第三方C在和A通信時扮演B;和B通信時扮演A.A和B都與C協商了壹個密鑰,然後C就可以監聽和傳遞通信量.中間人的攻擊按如下進行: B在給A的報文中發送他的公開密鑰. C截獲並解析該報文.C將B的公開密鑰保存下來並給A發送報文,該報文具有B的用戶ID但使用C的公開密鑰YC,仍按照好像是來自B的樣子被發送出去.A收到C的報文後,將YC和B的用戶ID存儲在壹塊.類似地,C使用YC向B發送好像來自A的報文. B基於私有密鑰XB和YC計算秘密密鑰K1.A基於私有密鑰XA和YC計算秘密密鑰K2.C使用私有密鑰XC和YB計算K1,並使用XC和YA計算K2. 從現在開始,C就可以轉發A發給B的報文或轉發B發給A的報文,在途中根據需要修改它們的密文.使得A和B都不知道他們在和C***享通信. Oakley算法是對Diffie-Hellman密鑰交換算法的優化,它保留了後者的優點,同時克服了其弱點. Oakley算法具有五個重要特征: 它采用稱為cookie程序的機制來對抗阻塞攻擊. 它使得雙方能夠協商壹個全局參數集合. 它使用了現時來保證抵抗重演攻擊. 它能夠交換Diffie-Hellman公開密鑰. 它對Diffie-Hellman交換進行鑒別以對抗中間人的攻擊. Oakley可以使用三個不同的鑒別方法: 數字簽名:通過簽署壹個相互可以獲得的散列代碼來對交換進行鑒別;每壹方都使用自己的私鑰對散列代碼加密.散列代碼是在壹些重要參數上生成的,如用戶ID和現時. 公開密鑰加密:通過使用發送者的私鑰對諸如ID和現時等參數進行加密來鑒別交換. 對稱密鑰加密:通過使用某種***享密鑰對交換參數進行對稱加密,實現交換的鑒別.

  • 上一篇:盤龍區代理記賬:2018年建築業資質發展展望
  • 下一篇:有用野D練級經驗的老D請進
  • copyright 2024編程學習大全網