何青松 何青林
(中國船舶重工集團公司第七二二研究所1) 武漢 430079)(公安部第一研究所2) 北京 100048)
在眾多的安全協(xié)議中,IPSec[1]是因特網(wǎng)的基礎(chǔ)協(xié)議,IPSec是負責網(wǎng)絡(luò)數(shù)據(jù)通信安全的部分,具有良好的開放性,一般而言,在無邊界的開放網(wǎng)絡(luò)中,更適合用現(xiàn)有的IPSec協(xié)議。
但在封閉的網(wǎng)絡(luò)中,如軍隊網(wǎng)絡(luò)、電子政務(wù)網(wǎng),需要有一種安全、高效的網(wǎng)絡(luò)和認證協(xié)議;在IPSec協(xié)議簇中,IKE是IPSec協(xié)議簇的重要內(nèi)容,負責密鑰的協(xié)商和管理。因此,IKE的效率、安全性就顯得尤為重要,鑒于IKE對PKI的依賴,以及PKI存在固有的弊端,在使用過程中存在很多不盡人意的地方,如需要大量的CA、多層CA之間的認證既降低了效率,又降低了信任度。
本文主要對IKE進行的分析和改進,采用基于組合公鑰(CPK Combined Public Key)提出的不依賴于證書[2],而將用戶身份直接作為公鑰的思想,給出了基于CPK的IPSec的改進思路,從而提高了IKE的效率。
現(xiàn)有的互聯(lián)網(wǎng)協(xié)議IP本身作為其他高層協(xié)議的載體,在設(shè)計的時候并未考慮安全性問題,因此它無法保證高層協(xié)議載荷的安全,很容易便可偽造IP包的地址、修改其內(nèi)容、重播以前的包以及在傳輸途中攔截并查看包的內(nèi)容。出于對上述問題的考慮,IETF(Internet Engineering Task Force)推出了IPSec標準安全協(xié)議集,它定義了IP數(shù)據(jù)包格式和相關(guān)基礎(chǔ)結(jié)構(gòu),以便為網(wǎng)絡(luò)通信提供端對端、加強的身份驗證、完整性、抗重播和保密性等服務(wù)。
IPSec協(xié)議不是一個單獨的協(xié)議,它給出了應(yīng)用于IP層上網(wǎng)絡(luò)數(shù)據(jù)安全的一整套體系結(jié)構(gòu),包括網(wǎng)絡(luò)認證協(xié)議Authentication Header(AH)、封裝安全載荷協(xié)議Encapsulating Security Payload(ESP)、密鑰管理協(xié)議 Internet Key Exchange(IKE)[3]和用于網(wǎng)絡(luò)認證及加密的一些算法等。
1)IPSec安全體系定義了主機和網(wǎng)關(guān)應(yīng)該提供的各種能力,AH[4]為IP數(shù)據(jù)包提供無連接的數(shù)據(jù)完整性和數(shù)據(jù)源身份認證,同時具有防重放攻擊的能力。
2)ESP[5]為IP數(shù)據(jù)包提供數(shù)據(jù)的保密性、無連接的數(shù)據(jù)完整性、數(shù)據(jù)源身份認證以及防重放攻擊保護,與AH相比,數(shù)據(jù)保密性是ESP新增的功能,數(shù)據(jù)完整性檢驗、數(shù)據(jù)源身份認證以及抗重播攻擊保護都是AH可以實現(xiàn)的。
3)加密算法:描述各種加密算法如何用于ESP中。
4)驗證算法:描述各種驗證算法如何用于AH中和ESP身份驗證選項。
5)密鑰管理包括IKE協(xié)議和安全關(guān)聯(lián)(SA)等部分,其中IKE是默認的密鑰自動交換協(xié)議,IKE為IPSec協(xié)議生成密鑰,IKE的報文格式適合為任何一種協(xié)議協(xié)商密鑰,并不僅限于IPSec的密鑰協(xié)商,協(xié)商的結(jié)果通過解釋域轉(zhuǎn)化為IPSec所需的參數(shù)。IKE在通信系統(tǒng)之間建立安全關(guān)聯(lián),提供密鑰確定和密鑰管理機制,是一個產(chǎn)生和交換密鑰并協(xié)調(diào)IPSec參數(shù)的框架。IKE將協(xié)商的結(jié)果保留在SA中,供AH和ESP使用。
6)IPSec本身沒有為策略定義標準,目前只規(guī)定了兩個策略組件:SAD(安全關(guān)聯(lián)數(shù)據(jù)庫)和SPD(安全策略數(shù)據(jù)庫)。
CPK公鑰體制是一種新的集中式公鑰管理模式。它的基本思想是,將標識作為公開密鑰,管理中心首先生成很多密鑰因子,由密鑰因子可組合成很多公、私鑰對,公鑰全都存貯在一個安全芯片中,私鑰則由中心直接發(fā)放給用戶。CPK以少量的種子生成“海量”公鑰,以簡捷的方式解決了規(guī)模化的密鑰管理,為構(gòu)建認證體系提供了可靠的技術(shù)基礎(chǔ)[6]。
給定素數(shù)p和方程的參數(shù)a,b,確定了橢圓曲線群Ep(a,b),選取Ep(a,b)中的元素G作為基點,由基點G=(XG,YG)的所有倍點構(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的倍點kG(k=1,2,……),S中的元素(Xk,Yk)與該點的倍數(shù)值k構(gòu)成公私鑰對。適當選擇S×T個整數(shù)rij,作為私鑰因子,并用矩陣SSK表示,稱為私鑰種子矩陣。由私鑰因子又可以得到相應(yīng)的公鑰因子:gij=rijG,從而可得相應(yīng)的公鑰種子矩陣PSK,即

在PSK中的每列中取一個因子,其和構(gòu)成一個公鑰。如此可構(gòu)成st<n個不同的公鑰。適當選擇s和t,可形成一個巨大的密鑰空間。一個實體的公、私鑰對是根據(jù)該實體的標識的映射值分別在公鑰矩陣和私鑰矩陣中選取對應(yīng)位置的元素再進行組合而生成的,滿足公、私鑰對的條件PK=SK×G(PK是公鑰,SK是私鑰)。
SSK由管理中心統(tǒng)一生成并保管。用戶私鑰是t個私鑰因子的和,由管理中心利用適當選擇的函數(shù) f作為映射算法,根據(jù)用戶標識先確定PSK中的因子,繼而查找SSK中的相應(yīng)因子,并將諸因子之和即用戶私鑰面對面或通過專門的秘密通道發(fā)放給用戶。公鑰查詢函數(shù) f通常取單向函數(shù)或單向陷門函數(shù),以用戶標識作為輸入。由于每個用戶有自己的私鑰,可用于解密、簽名或身份認證。而當驗證其它用戶的簽名時,可以直接輸入該用戶標識,利用f在PSK中查找其公鑰即可。任一用戶驗證其它用戶的公鑰時,可先訪問管理中心,然后利用公鑰查詢函數(shù) f查找PSK即可。
只有在集中式管理模式下才有可能從技術(shù)上解決密鑰管理的規(guī)模化和基于標識的密鑰分發(fā),才有可能建立有效率的信任系統(tǒng)。CPK認證系統(tǒng)是建立在密鑰算法和映射算法基礎(chǔ)上,采用集中式管理的新型認證體制,從技術(shù)上解決了密鑰的規(guī)模化和密鑰存儲技術(shù),因而不需要多層CA結(jié)構(gòu),也不需要LDAP等目錄庫的支持;CPK解決了基于標識的密鑰分發(fā),密鑰變量本身直接證明標識或身份的真?zhèn)?因而不再需要第三方的證明和第三方機構(gòu)。CPK不需要龐大的支持系統(tǒng),幾乎沒有維護量,與PKI相比較,可以說是一個高效、安全的解決方案。
基于CPK技術(shù)的IPSec的協(xié)議改進是指:基于身份標識的IPSec協(xié)議公、私鑰都是由CPK管理中心統(tǒng)一生成的并分發(fā)的。用戶公鑰由用戶標識來確定,證書與用戶標識之間存在一一對應(yīng)關(guān)系,并且,私鑰面對面分發(fā),不需作更多認證,只要滿足可解性,就可鑒別密鑰的真?zhèn)巍?/p>
在網(wǎng)絡(luò)中所有的終端主機都能實現(xiàn)基于CPK技術(shù)的認證,并且被分配了基于身份標識的私鑰,我們對IKE密鑰協(xié)商協(xié)議過程進行了改進,在此基礎(chǔ)上完成密鑰建立協(xié)議后,再進行ESP封裝,從而完成IPSec交互。因為協(xié)議是基于身份標識的,報頭部分的地址不需校驗,原協(xié)議中AH協(xié)議可以略去。IPSec協(xié)議的實現(xiàn)過程將大大簡化。實現(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ù)對數(shù)據(jù)部分進行處理,生成報文M的散列碼,表述為h=H(M);
(2)用發(fā)起方的私鑰SKa對報文的散列碼h進行簽名,得到標識認證碼IDa,這個過程表述為IDa=SIGNSKa(h);
(3)對IKE密鑰交換協(xié)議進行改進,首先產(chǎn)生隨機數(shù)R用于密鑰交換,計算R×PKb作為密鑰交換字段,其次計算R×G作為公共密鑰K;
(4)使用公共密鑰K對報文M進行加密,表述為code=Encryk(M);
(5)將加密后的報文code和標識認證碼IDa、密鑰交換字段R×PKb作為一個封裝數(shù)據(jù)包一起發(fā)送出去;
2)數(shù)據(jù)接收方B接收過程
(1)用私鑰SKb計算出SKb-1,然后根據(jù)接收到的密鑰交換字段計算SKb-1×R×PKb=SKb-1×R×SKb×G=R×G=K,得到了公共密鑰K;
(2)用K 對接收到的加密報文code′進行解密 ,表述為 Dk(code′)=M′,然后在接收端再次計算報文的散列碼h′=H(M′);
(3)由發(fā)送方A的標識,根據(jù)公鑰矩陣計算出發(fā)送方的公鑰PKa,使用該公鑰對IDa進行驗證得到h,將 h和 h′進行比較,如果一致,則接收該報文,否則對報文作去棄處理。
上述的過程中,該改進方案只需要一次交互,即可實現(xiàn)密鑰交換、數(shù)據(jù)加密和數(shù)字簽名這一系列過程。特別值得指出的是:終端根據(jù)標識,通過公鑰矩陣就可以計算出對方的公鑰,有了公鑰就可以當場驗證對方標識簽名的真?zhèn)?大大的提高了鑒別的效率。標識或數(shù)據(jù)的任意一位被篡改后,都會導(dǎo)致h和h′的不一致,因此,該基于CPK技術(shù)的認證方案能夠有效的防欺騙攻擊,同時實現(xiàn)了加密的數(shù)據(jù)傳輸。
基于CPK改進了IPSec協(xié)議中的密鑰交換協(xié)議,公鑰由用戶標識來確定,證書與用戶名之間存在一一對應(yīng)關(guān)系,實現(xiàn)了雙方直接認證,大大的提高了認證的效率,同時沒有給網(wǎng)絡(luò)的核心增加任何的負擔;而且私鑰面對面分發(fā),是一種直接的信任關(guān)系,可信度較高,用于認證的數(shù)據(jù)通信開銷也十分有限。因而效率較之原協(xié)議有明顯的提高,改進的協(xié)議具有較高的安全性。
[1]S.Kent,R.Atkinson.Security Architecture for the Internet Protocol.RFC2401[S].1998,11
[2]南湘浩,陳鐘.網(wǎng)絡(luò)安全技術(shù)概論[M].北京:國防工業(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標識認證[M].北京:國防工業(yè)出版社,2006