Diffie-Hellman加密算法
由于Diffie-Hellman加密算法本身限于密鑰交換的用途,被許多商用產(chǎn)品用作密鑰交換技術(shù),因此該加密算法通常稱之為Diffie-Hellman密鑰交換。這種密鑰交換技術(shù)的目的在于使得兩個(gè)用戶安全地交換一個(gè)秘密密鑰以便用于以后的報(bào)文文件加密。
一、Diffie-Hellman加密算法原理
Diffie-Hellman加密算法的有效性依賴于計(jì)算離散對(duì)數(shù)的難度。簡(jiǎn)言之,可以如下定義離散對(duì)數(shù):首先定義一個(gè)素?cái)?shù)p的原根,為其各次冪產(chǎn)生從1 到p-1的所有整數(shù)根,也就是說(shuō),如果a是素?cái)?shù)p的一個(gè)原根,那么數(shù)值 a mod p,a2 mod p,...,ap-1 mod p 是各不相同的整數(shù),并且以某種排列方式組成了從1到p-1的所有整數(shù)。對(duì)于一個(gè)整數(shù)b和素?cái)?shù)p的一個(gè)原根a,可以找到惟一的指數(shù)i,使得 b = ai mod p 其中0 ≤ i ≤ (p-1)指數(shù)i稱為b的以a為基數(shù)的模p的離散對(duì)數(shù)或者指數(shù),該值被記為inda,p(b)。
二、Diffie-Hellman加密算法描述
基于Diffie-Hellman加密算法的定義及性質(zhì),可以定義Diffie-Hellman密鑰交換加密算法。該加密算法描述如下:
1、有兩個(gè)全局公開(kāi)的參數(shù),一個(gè)素?cái)?shù)q和一個(gè)整數(shù)a,a是q的一個(gè)原根。
2、假設(shè)用戶A和B希望交換一個(gè)密鑰,用戶A選擇一個(gè)作為私有密鑰的隨機(jī)數(shù)XA(XA<q),并計(jì)算公開(kāi)密鑰YA=a^XA mod q。A對(duì)XA的值保密存放而使YA能被B公開(kāi)獲得。類似地,用戶B選擇一個(gè)私有的隨機(jī)數(shù)XB<q,并計(jì)算公開(kāi)密鑰YB=a^XB mod q。B對(duì)XB的值保密存放而使YB能被A公開(kāi)獲得。
3、用戶A產(chǎn)生共享秘密密鑰的計(jì)算方式是K = (YB)^XA mod q.同樣,用戶B產(chǎn)生共享秘密密鑰的計(jì)算是K = (YA)^XB mod q.這兩個(gè)計(jì)算產(chǎn)生相同的結(jié)果: K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q (根據(jù)取模運(yùn)算規(guī)則得到) = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相當(dāng)于雙方已經(jīng)交換了一個(gè)相同的秘密密鑰。
4、因?yàn)閄A和XB是保密的,一個(gè)敵對(duì)方可以利用的參數(shù)只有q,a,YA和YB.因而敵對(duì)方被迫取離散對(duì)數(shù)來(lái)確定密鑰.例如,要獲取用戶B的秘密密鑰,敵對(duì)方必須先計(jì)算 XB = inda,q(YB) 然后再使用用戶B采用的同樣方法計(jì)算其秘密密鑰K. Diffie-Hellman密鑰交換算法的安全性依賴于這樣一個(gè)事實(shí):
雖然計(jì)算以一個(gè)素?cái)?shù)為模的指數(shù)相對(duì)容易,但計(jì)算離散對(duì)數(shù)卻很困難.對(duì)于大的素?cái)?shù),計(jì)算出離散對(duì)數(shù)幾乎是不可能的. 下面給出例子.密鑰交換基于素?cái)?shù)q = 97和97的一個(gè)原根a = 5.A和B分別選擇私有密鑰XA = 36和XB = 58。每人計(jì)算其公開(kāi)密鑰 YA = 5^36 = 50 mod 97 YB = 5^58 = 44 mod 97 在他們相互獲取了公開(kāi)密鑰之后,各自通過(guò)計(jì)算得到雙方共享的秘密密鑰如下:
K = (YB)^XA mod 97 = 44^36 = 75 mod 97 K = (YA)^XB mod 97 = 50^58 = 75 mod 97 從|50,44|出發(fā),攻擊者要計(jì)算出75很不容易,下圖給出了一個(gè)利用Diffie-Hellman計(jì)算的簡(jiǎn)單協(xié)議:

三、Diffie-Hellman算法特征:
Diffie-Hellman算法具有兩個(gè)吸引力的特征:
1、僅當(dāng)需要時(shí)才生成密鑰,減小了將密鑰存儲(chǔ)很長(zhǎng)一段時(shí)間而致使遭受攻擊的機(jī)會(huì)。
2、除對(duì)全局參數(shù)的約定外,密鑰交換不需要事先存在的基礎(chǔ)結(jié)構(gòu)。
小知識(shí)之加密算法:
數(shù)據(jù)加密的基本過(guò)程就是對(duì)原來(lái)為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來(lái)內(nèi)容,通過(guò)這樣的途徑來(lái)達(dá)到保護(hù)數(shù)據(jù)不被非法人竊取、閱讀的目的。 該過(guò)程的逆過(guò)程為解密,即將該編碼信息轉(zhuǎn)化為其原來(lái)數(shù)據(jù)的過(guò)程。










