何青松 何青林
(中國(guó)船舶重工集團(tuán)公司第七二二研究所1) 武漢 430079)(公安部第一研究所2) 北京 100048)
在眾多的安全協(xié)議中,IPSec[1]是因特網(wǎng)的基礎(chǔ)協(xié)議,IPSec是負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)通信安全的部分,具有良好的開放性,一般而言,在無邊界的開放網(wǎng)絡(luò)中,更適合用現(xiàn)有的IPSec協(xié)議。
但在封閉的網(wǎng)絡(luò)中,如軍隊(duì)網(wǎng)絡(luò)、電子政務(wù)網(wǎng),需要有一種安全、高效的網(wǎng)絡(luò)和認(rèn)證協(xié)議;在IPSec協(xié)議簇中,IKE是IPSec協(xié)議簇的重要內(nèi)容,負(fù)責(zé)密鑰的協(xié)商和管理。因此,IKE的效率、安全性就顯得尤為重要,鑒于IKE對(duì)PKI的依賴,以及PKI存在固有的弊端,在使用過程中存在很多不盡人意的地方,如需要大量的CA、多層CA之間的認(rèn)證既降低了效率,又降低了信任度。
本文主要對(duì)IKE進(jìn)行的分析和改進(jìn),采用基于組合公鑰(CPK Combined Public Key)提出的不依賴于證書[2],而將用戶身份直接作為公鑰的思想,給出了基于CPK的IPSec的改進(jìn)思路,從而提高了IKE的效率。
現(xiàn)有的互聯(lián)網(wǎng)協(xié)議IP本身作為其他高層協(xié)議的載體,在設(shè)計(jì)的時(shí)候并未考慮安全性問題,因此它無法保證高層協(xié)議載荷的安全,很容易便可偽造IP包的地址、修改其內(nèi)容、重播以前的包以及在傳輸途中攔截并查看包的內(nèi)容。出于對(duì)上述問題的考慮,IETF(Internet Engineering Task Force)推出了IPSec標(biāo)準(zhǔn)安全協(xié)議集,它定義了IP數(shù)據(jù)包格式和相關(guān)基礎(chǔ)結(jié)構(gòu),以便為網(wǎng)絡(luò)通信提供端對(duì)端、加強(qiáng)的身份驗(yàn)證、完整性、抗重播和保密性等服務(wù)。
IPSec協(xié)議不是一個(gè)單獨(dú)的協(xié)議,它給出了應(yīng)用于IP層上網(wǎng)絡(luò)數(shù)據(jù)安全的一整套體系結(jié)構(gòu),包括網(wǎng)絡(luò)認(rèn)證協(xié)議Authentication Header(AH)、封裝安全載荷協(xié)議Encapsulating Security Payload(ESP)、密鑰管理協(xié)議 Internet Key Exchange(IKE)[3]和用于網(wǎng)絡(luò)認(rèn)證及加密的一些算法等。
1)IPSec安全體系定義了主機(jī)和網(wǎng)關(guān)應(yīng)該提供的各種能力,AH[4]為IP數(shù)據(jù)包提供無連接的數(shù)據(jù)完整性和數(shù)據(jù)源身份認(rèn)證,同時(shí)具有防重放攻擊的能力。
2)ESP[5]為IP數(shù)據(jù)包提供數(shù)據(jù)的保密性、無連接的數(shù)據(jù)完整性、數(shù)據(jù)源身份認(rèn)證以及防重放攻擊保護(hù),與AH相比,數(shù)據(jù)保密性是ESP新增的功能,數(shù)據(jù)完整性檢驗(yàn)、數(shù)據(jù)源身份認(rèn)證以及抗重播攻擊保護(hù)都是AH可以實(shí)現(xiàn)的。
3)加密算法:描述各種加密算法如何用于ESP中。
4)驗(yàn)證算法:描述各種驗(yàn)證算法如何用于AH中和ESP身份驗(yàn)證選項(xiàng)。
5)密鑰管理包括IKE協(xié)議和安全關(guān)聯(lián)(SA)等部分,其中IKE是默認(rèn)的密鑰自動(dòng)交換協(xié)議,IKE為IPSec協(xié)議生成密鑰,IKE的報(bào)文格式適合為任何一種協(xié)議協(xié)商密鑰,并不僅限于IPSec的密鑰協(xié)商,協(xié)商的結(jié)果通過解釋域轉(zhuǎn)化為IPSec所需的參數(shù)。IKE在通信系統(tǒng)之間建立安全關(guān)聯(lián),提供密鑰確定和密鑰管理機(jī)制,是一個(gè)產(chǎn)生和交換密鑰并協(xié)調(diào)IPSec參數(shù)的框架。IKE將協(xié)商的結(jié)果保留在SA中,供AH和ESP使用。
6)IPSec本身沒有為策略定義標(biāo)準(zhǔn),目前只規(guī)定了兩個(gè)策略組件:SAD(安全關(guān)聯(lián)數(shù)據(jù)庫(kù))和SPD(安全策略數(shù)據(jù)庫(kù))。
CPK公鑰體制是一種新的集中式公鑰管理模式。它的基本思想是,將標(biāo)識(shí)作為公開密鑰,管理中心首先生成很多密鑰因子,由密鑰因子可組合成很多公、私鑰對(duì),公鑰全都存貯在一個(gè)安全芯片中,私鑰則由中心直接發(fā)放給用戶。CPK以少量的種子生成“海量”公鑰,以簡(jiǎn)捷的方式解決了規(guī)模化的密鑰管理,為構(gòu)建認(rèn)證體系提供了可靠的技術(shù)基礎(chǔ)[6]。
給定素?cái)?shù)p和方程的參數(shù)a,b,確定了橢圓曲線群Ep(a,b),選取Ep(a,b)中的元素G作為基點(diǎn),由基點(diǎn)G=(XG,YG)的所有倍點(diǎn)構(gòu)成Ep(a,b)的子群S。設(shè)n是滿足nG=0的最小整數(shù),則橢圓曲線密碼的參數(shù)由a,b,G,n,p組成,記為T=(a,b,G,n,p)。則子群S中的元素都為G的倍點(diǎn)kG(k=1,2,……),S中的元素(Xk,Yk)與該點(diǎn)的倍數(shù)值k構(gòu)成公私鑰對(duì)。適當(dāng)選擇S×T個(gè)整數(shù)rij,作為私鑰因子,并用矩陣SSK表示,稱為私鑰種子矩陣。由私鑰因子又可以得到相應(yīng)的公鑰因子:gij=rijG,從而可得相應(yīng)的公鑰種子矩陣PSK,即
在PSK中的每列中取一個(gè)因子,其和構(gòu)成一個(gè)公鑰。如此可構(gòu)成st<n個(gè)不同的公鑰。適當(dāng)選擇s和t,可形成一個(gè)巨大的密鑰空間。一個(gè)實(shí)體的公、私鑰對(duì)是根據(jù)該實(shí)體的標(biāo)識(shí)的映射值分別在公鑰矩陣和私鑰矩陣中選取對(duì)應(yīng)位置的元素再進(jìn)行組合而生成的,滿足公、私鑰對(duì)的條件PK=SK×G(PK是公鑰,SK是私鑰)。
SSK由管理中心統(tǒng)一生成并保管。用戶私鑰是t個(gè)私鑰因子的和,由管理中心利用適當(dāng)選擇的函數(shù) f作為映射算法,根據(jù)用戶標(biāo)識(shí)先確定PSK中的因子,繼而查找SSK中的相應(yīng)因子,并將諸因子之和即用戶私鑰面對(duì)面或通過專門的秘密通道發(fā)放給用戶。公鑰查詢函數(shù) f通常取單向函數(shù)或單向陷門函數(shù),以用戶標(biāo)識(shí)作為輸入。由于每個(gè)用戶有自己的私鑰,可用于解密、簽名或身份認(rèn)證。而當(dāng)驗(yàn)證其它用戶的簽名時(shí),可以直接輸入該用戶標(biāo)識(shí),利用f在PSK中查找其公鑰即可。任一用戶驗(yàn)證其它用戶的公鑰時(shí),可先訪問管理中心,然后利用公鑰查詢函數(shù) f查找PSK即可。
只有在集中式管理模式下才有可能從技術(shù)上解決密鑰管理的規(guī)?;突跇?biāo)識(shí)的密鑰分發(fā),才有可能建立有效率的信任系統(tǒng)。CPK認(rèn)證系統(tǒng)是建立在密鑰算法和映射算法基礎(chǔ)上,采用集中式管理的新型認(rèn)證體制,從技術(shù)上解決了密鑰的規(guī)?;兔荑€存儲(chǔ)技術(shù),因而不需要多層CA結(jié)構(gòu),也不需要LDAP等目錄庫(kù)的支持;CPK解決了基于標(biāo)識(shí)的密鑰分發(fā),密鑰變量本身直接證明標(biāo)識(shí)或身份的真?zhèn)?因而不再需要第三方的證明和第三方機(jī)構(gòu)。CPK不需要龐大的支持系統(tǒng),幾乎沒有維護(hù)量,與PKI相比較,可以說是一個(gè)高效、安全的解決方案。
基于CPK技術(shù)的IPSec的協(xié)議改進(jìn)是指:基于身份標(biāo)識(shí)的IPSec協(xié)議公、私鑰都是由CPK管理中心統(tǒng)一生成的并分發(fā)的。用戶公鑰由用戶標(biāo)識(shí)來確定,證書與用戶標(biāo)識(shí)之間存在一一對(duì)應(yīng)關(guān)系,并且,私鑰面對(duì)面分發(fā),不需作更多認(rèn)證,只要滿足可解性,就可鑒別密鑰的真?zhèn)巍?/p>
在網(wǎng)絡(luò)中所有的終端主機(jī)都能實(shí)現(xiàn)基于CPK技術(shù)的認(rèn)證,并且被分配了基于身份標(biāo)識(shí)的私鑰,我們對(duì)IKE密鑰協(xié)商協(xié)議過程進(jìn)行了改進(jìn),在此基礎(chǔ)上完成密鑰建立協(xié)議后,再進(jìn)行ESP封裝,從而完成IPSec交互。因?yàn)閰f(xié)議是基于身份標(biāo)識(shí)的,報(bào)頭部分的地址不需校驗(yàn),原協(xié)議中AH協(xié)議可以略去。IPSec協(xié)議的實(shí)現(xiàn)過程將大大簡(jiǎn)化。實(shí)現(xiàn)過程如下:
設(shè)該CPK算法使用的參數(shù)為T=(a,b,G,n,p),數(shù)據(jù)發(fā)送方的私鑰為SKa,公鑰為PKa,數(shù)據(jù)接收方的私鑰為SKb,公鑰為PKb。
1)數(shù)據(jù)發(fā)起方A發(fā)送過程:
(1)用散列函數(shù)對(duì)數(shù)據(jù)部分進(jìn)行處理,生成報(bào)文M的散列碼,表述為h=H(M);
(2)用發(fā)起方的私鑰SKa對(duì)報(bào)文的散列碼h進(jìn)行簽名,得到標(biāo)識(shí)認(rèn)證碼IDa,這個(gè)過程表述為IDa=SIGNSKa(h);
(3)對(duì)IKE密鑰交換協(xié)議進(jìn)行改進(jìn),首先產(chǎn)生隨機(jī)數(shù)R用于密鑰交換,計(jì)算R×PKb作為密鑰交換字段,其次計(jì)算R×G作為公共密鑰K;
(4)使用公共密鑰K對(duì)報(bào)文M進(jìn)行加密,表述為code=Encryk(M);
(5)將加密后的報(bào)文code和標(biāo)識(shí)認(rèn)證碼IDa、密鑰交換字段R×PKb作為一個(gè)封裝數(shù)據(jù)包一起發(fā)送出去;
2)數(shù)據(jù)接收方B接收過程
(1)用私鑰SKb計(jì)算出SKb-1,然后根據(jù)接收到的密鑰交換字段計(jì)算SKb-1×R×PKb=SKb-1×R×SKb×G=R×G=K,得到了公共密鑰K;
(2)用K 對(duì)接收到的加密報(bào)文code′進(jìn)行解密 ,表述為 Dk(code′)=M′,然后在接收端再次計(jì)算報(bào)文的散列碼h′=H(M′);
(3)由發(fā)送方A的標(biāo)識(shí),根據(jù)公鑰矩陣計(jì)算出發(fā)送方的公鑰PKa,使用該公鑰對(duì)IDa進(jìn)行驗(yàn)證得到h,將 h和 h′進(jìn)行比較,如果一致,則接收該報(bào)文,否則對(duì)報(bào)文作去棄處理。
上述的過程中,該改進(jìn)方案只需要一次交互,即可實(shí)現(xiàn)密鑰交換、數(shù)據(jù)加密和數(shù)字簽名這一系列過程。特別值得指出的是:終端根據(jù)標(biāo)識(shí),通過公鑰矩陣就可以計(jì)算出對(duì)方的公鑰,有了公鑰就可以當(dāng)場(chǎng)驗(yàn)證對(duì)方標(biāo)識(shí)簽名的真?zhèn)?大大的提高了鑒別的效率。標(biāo)識(shí)或數(shù)據(jù)的任意一位被篡改后,都會(huì)導(dǎo)致h和h′的不一致,因此,該基于CPK技術(shù)的認(rèn)證方案能夠有效的防欺騙攻擊,同時(shí)實(shí)現(xiàn)了加密的數(shù)據(jù)傳輸。
基于CPK改進(jìn)了IPSec協(xié)議中的密鑰交換協(xié)議,公鑰由用戶標(biāo)識(shí)來確定,證書與用戶名之間存在一一對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)了雙方直接認(rèn)證,大大的提高了認(rèn)證的效率,同時(shí)沒有給網(wǎng)絡(luò)的核心增加任何的負(fù)擔(dān);而且私鑰面對(duì)面分發(fā),是一種直接的信任關(guān)系,可信度較高,用于認(rèn)證的數(shù)據(jù)通信開銷也十分有限。因而效率較之原協(xié)議有明顯的提高,改進(jìn)的協(xié)議具有較高的安全性。
[1]S.Kent,R.Atkinson.Security Architecture for the Internet Protocol.RFC2401[S].1998,11
[2]南湘浩,陳鐘.網(wǎng)絡(luò)安全技術(shù)概論[M].北京:國(guó)防工業(yè)出版社,2003
[3]D.Harkins,D.Carrel.The Internet Key Exchange(IKE).RFC2409[S].IETF Network Working Group,1998,11
[4]S.Kent,R.Atkinson.IP Authentication Header(AH).RFC2402[S].1998,11
[5]S.Kent,R.Atkinson.IP Encapsulating Security Payload(ESP).RFC2406[S].1998,11
[6]南湘浩.CPK標(biāo)識(shí)認(rèn)證[M].北京:國(guó)防工業(yè)出版社,2006