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