陳珍英
(福州英華職業(yè)學(xué)院,福建 福州 350018)
Whitefield與Martin Hellman在1976年提出了一個奇妙的密鑰交換協(xié)議,稱為Diffie-Hellman密鑰交換協(xié)議/算法 (Diffie-Hellman Key Exchange/Agreement Algorithm),通常稱作DH算法。這個算法的優(yōu)勢在于正在安全通信的雙方可以用這個算法來確定對稱密鑰,然后可以用這個密鑰進(jìn)行加密和解密。然而,經(jīng)過一系列的經(jīng)驗(yàn)與實(shí)踐證明:這個密鑰交換協(xié)議(算法)只能用于密鑰的交換,而不能進(jìn)行消息數(shù)據(jù)的加密和解密。所以,Diffie-Hellman是一種建立密鑰的方法,而不是加密方法。需要通信的雙方確定要用的密鑰之后,要使用其他對稱密鑰進(jìn)行加密和解密消息。DH算法的有效性,多半依賴于計算離散對數(shù)的難度程度上。
圖1 DH算法協(xié)議過程
如何來理解“DH算法的有效性是基于計算離散對數(shù)的難度上”?首先要從它的協(xié)議過程來看。協(xié)議過程流程圖如下:到B的響應(yīng)返回的消息后,利用已選擇的大數(shù)X,計算(gymod n)x=gxymod n。如此,A與B就共享了一個秘密的密鑰gxymod n。因此我們說DH算法是制造密鑰的算法(協(xié)議)。
在A、B對話中,作為攻擊者本身,能夠得到A、B之間通信的消息,它要計算出私密密鑰,必須計算出X、Y,但是單純只根據(jù)gxmod n,或者gymod n要求出X或者Y,是很復(fù)雜和困難的,這也說明了離散對數(shù)求解的困難度。
DH算法有兩個特征:(1)需要時才生成密鑰,縮短密鑰存儲時間過長,給攻擊者創(chuàng)造破解的時間和機(jī)會。
(2)密鑰交換無需預(yù)先存在基礎(chǔ)結(jié)構(gòu)。
DH算法的不足:(1)無法知道雙方身份的任何信息。(2)易導(dǎo)致阻塞性攻擊,即計算的密集性過于頻繁,攻擊者請求大量的密鑰,受攻擊者花費(fèi)較多的資源來計算無用的冪系數(shù),而不是做真正地在做保護(hù)或加密工作。(3)沒有辦法防衛(wèi)重演攻擊。(4)易受中間人攻擊。
針對DH算法的第一個不足,需要辯證地來看,無法知道雙方身份的任何信息其實(shí)在某種安全領(lǐng)域是需要的,目前匿名追蹤以及群簽名的發(fā)展是在保護(hù)發(fā)送方和接收方的身份信息。
而對于DH算法易受中間人攻擊的不足,理論上按兩個方向進(jìn)行優(yōu)化,一是純粹防止中間人攻擊,而是引入“第三者”作為“中間人”防止中間人攻擊。
對于純粹的中間人攻擊可如下簡單圖示:
圖1-1算法協(xié)議過程實(shí)現(xiàn)前提有兩個:
(1)A、B必須同時知道兩個大的質(zhì)數(shù)n,g且(n-1)/2和(g-1)/2都是質(zhì)數(shù),這兩個數(shù)字都是公開的,都可被除A、B另外的人知道。
(2)A、B各自選擇的大數(shù)X、Y必須保密。在這個協(xié)議流程圖中可以看到,B收到A發(fā)送的消息后,利用已確定的大數(shù)Y,計算(gxmod n)y=gxymod n,同樣,A在得
圖2中間人攻擊過程轉(zhuǎn)換圖
圖2中的C稱之為第三方,C和A通信時充當(dāng)B,和B通信時扮演A,A、B、C三方兩兩協(xié)商定義出了一個密鑰,然后C就可以竊聽、外傳甚至泄露通信消息和數(shù)據(jù)。
引入“中間人”防止中間人攻擊其實(shí)是DH的優(yōu)化,而這個“中間人”是什么?怎么合理設(shè)定“中間人”,在文章后面會相繼闡述。
Oakley是一個密鑰交換協(xié)議,它允許認(rèn)證過的雙方通過不安全的網(wǎng)絡(luò)交換秘鑰的一部分元素,這一過程是通過DH算法(Diffie-Hellmankeyexchange)來實(shí)現(xiàn)的。鑒于DH算法的不足,Oakley算法可以算是對其進(jìn)行優(yōu)化,特別是在阻止中間人攻擊上。Oakley使用三種不同的算法鑒別中間人攻擊:(1)數(shù)字簽名。(2)公開密鑰加密。(3)對稱密鑰加密。
針對洪泛攻擊時DH算法的脆弱性,Oakley算法采用了cookie程序機(jī)制來對抗阻塞攻擊,可以使A、B雙方協(xié)商一個全局參數(shù)集合;又可以用現(xiàn)時來抵擋重演攻擊。密鑰決定協(xié)議的三個組件是:(1)cookie交換(可選,無狀態(tài))。( 2)Diffe-Hellman半密鑰交換。( 3)驗(yàn)證。
Oakley的特點(diǎn)是在DH算法基礎(chǔ)上附加了一些加密算法如RSA算法、散列算法等。它是使用附加的算法加密來增加源密鑰的安全性。用于加密的源密鑰不僅要使用DH算法,還和通信雙方所使用的安全驗(yàn)證的方法密切相關(guān)。
Oakley在Internet密鑰交換協(xié)議中使用廣泛。Internet密鑰交換協(xié)議IKE是早期的Oakley算法和SkEME的安全協(xié)議結(jié)合而成的綜合性協(xié)議,其中Oakley算法指定了密鑰交換的順序,并描述清楚提供的服務(wù),SkEME協(xié)議則交代了密鑰交換的具體方法。
基于第三方簽名認(rèn)證密鑰算法可以有效地防止中間人攻擊。其過程是:(1)生成并發(fā)送報文。(2)數(shù)據(jù)加密。(3)接收方利用報文進(jìn)行身份驗(yàn)證。(4)接收數(shù)據(jù)。(5)數(shù)據(jù)解密。
可以用以下幾張簡單的流程圖來描述基于第三方簽名認(rèn)證過程:
圖3 生成報文并發(fā)送報文的流程
圖4加密過程
圖5解密過程
圖6生成報文并發(fā)送報文的流程
基于第三方簽名認(rèn)證的密鑰交換算法是一種具有保密和鑒別能力的密鑰交換算法,在VPN網(wǎng)絡(luò)中有廣泛的應(yīng)用。這種簽名算法相比于DH算法來說引入了“中間人”,這就是文章前面所提及的用“中間人”來防止“中間人”的做法。但是筆者認(rèn)為,這個“中間人”是不是百分百的可信賴是值得探討的。在可認(rèn)證的、可信任的信道中,“第三方”也就是所謂的“中間人”在安全性存在一定穩(wěn)定信任域,但是如果中間人是存在于非認(rèn)證的信道上呢?因此考慮到“中間人”的信任度,我們是用感知和經(jīng)驗(yàn)還是用可量化的方式進(jìn)行刻畫?顯然,不能用感知和經(jīng)驗(yàn),這個做法太冒險。而量化的方式換句話說就是用計算的方式從大量的數(shù)據(jù)中訓(xùn)練出一個信任閾值,但是這個計算量涉及到數(shù)據(jù)分析的復(fù)雜度和計算量大的問題。當(dāng)然,這也就成為了基于第三方簽名認(rèn)證密鑰交換算法的一個缺點(diǎn),因在保證安全和效率的前提下,最大可能地降低可信賴第三方的參與,依賴度越小影響力就越小,影響力越小安全系數(shù)就越高。
雖然引入公開密鑰加密的算法以及某些證書機(jī)制可以避免攻擊,但是算法仍是非常的復(fù)雜。為了解決這個問題,有人提出了SAKA協(xié)議,稱為簡單密鑰交換協(xié)議。該協(xié)議是基于DH算法的,這個協(xié)議也是可以抵抗中間人攻擊的。該協(xié)議雙方A、B預(yù)先共享一個密鑰P,同時系統(tǒng)使用兩個在DH中定義的公開參數(shù)g和n,n是一個大素數(shù),在得出n之前需要進(jìn)行素數(shù)檢測。該協(xié)議過程如下:
(1)使用預(yù)先定義的函數(shù)從密鑰P中得出兩個整數(shù)Q和 Q-1mod( n-1)
(2)A選擇一個隨機(jī)整數(shù)a,并且發(fā)給B:X=gaQmodn。
(3)B選擇一個隨機(jī)整數(shù)b,并且發(fā)給B:Y=gbQmodn。
(4)A計算K1=YaQ-1mod n=gabmod n
(5)B計算K2=Xb Q-1mod n=gabmod n
如此,A與B共享一個密鑰K=K1=K2,為了身份認(rèn)證,A計算K1Qmod n發(fā)送給B,B計算K2Qmod n發(fā)送給A,A與B分別用Q-1對收到的值作指數(shù)進(jìn)行運(yùn)算,找出密鑰檢驗(yàn)?zāi)芊衽c自己所生成的密鑰相同,如果相同則相信彼此,否則就拒絕接收相應(yīng)信息。如此,顯然可以防止中間人攻擊。
也有學(xué)者提出N-PAKE協(xié)議,即基于口令認(rèn)證的密鑰交換協(xié)議。這種方法的基礎(chǔ)也是DH算法,N-PAK這種可證的兩方口令認(rèn)證密鑰交換協(xié)議可以抵御服務(wù)器泄露攻擊和離線字典攻擊,當(dāng)然也可以防止中間人攻擊。
密鑰的管理在整個安全協(xié)議中占據(jù)非常重要的作用,分為密鑰的分配和交換。而密鑰交換作為核心問題,必須在提高速度和解決各個算法弊端的基礎(chǔ)上不斷優(yōu)化,一個有效的密鑰交換機(jī)制的實(shí)現(xiàn)應(yīng)盡量引入密鑰的安全傳送和安全措施,不以犧牲存儲空間或者計算速度為代價的前提下,逐步提高安全性。
[1]劉志會.基于RSA密鑰交換算法的研究[D].遼寧工程科技大學(xué),2005.
[2]方勇,周安民,劉嘉勇,蔡建.Oakley密鑰確定協(xié)議[J].計算機(jī)工程與應(yīng)用,2003(24).
[3]王繼林,伍前紅,陳德人,王育民.匿名技術(shù)的研究進(jìn)展[J].通信學(xué)報,2005( 2).
[4]項(xiàng)順伯,彭志平,柯文德.一種可證安全的口令認(rèn)證密鑰交換協(xié)議[J].計算機(jī)工程,2013( 1).