摘要 IPv6與IPv4相比在安全方面具有很多特點,將IPSec集成到協(xié)議內(nèi)部是IPv6的優(yōu)勢。介紹IPv6協(xié)議概念基礎(chǔ)上,重點研究實現(xiàn)VPN的關(guān)鍵技術(shù)——IPSec協(xié)議及其體系結(jié)構(gòu)、工作模式和相關(guān)協(xié)議。最后提出利用FreeS/WAN軟件包并通過修改Linux內(nèi)核的方式來實現(xiàn)了Linux系統(tǒng)上一種基于IPSec的VPN。
1、IPv6簡介
IPv6是因特網(wǎng)協(xié)議第六版(Internet Protocol version six)的縮寫,IPv6是IETF(Internet Engineering Task Force,因特網(wǎng)工程工作小組)設(shè)計的用來替代現(xiàn)行的IPv4協(xié)議的下一代網(wǎng)絡(luò)標(biāo)準(zhǔn),IPv6是為了解決IPv4所存在的一些問題和不足而提出的,同時它還在許多方面提出了改進。
1.1 簡化的報頭和靈活的擴展
IPv6數(shù)據(jù)報頭由一個基本報頭和多個擴展報頭(Extension Header)構(gòu)成,基本報頭具有固定的長度40字節(jié),有助于加快路由速度、減少處理器開銷并節(jié)省網(wǎng)絡(luò)帶寬。對擴展報頭和選項支持的改進,可以提高轉(zhuǎn)發(fā)效率,使得對選項長度的限制更寬松,且提供了將來引入新的選項的更大的靈活性。
1.2 層次化的地址結(jié)構(gòu)
IPv6將現(xiàn)有的IP地址長度擴大4倍,由當(dāng)前IPv4的32位擴充到128位,以支持大規(guī)模量的網(wǎng)絡(luò)節(jié)點。這樣IPv6的地址總數(shù)就大約有3.4×10E38個。如此豐富的IP地址數(shù)目,不僅滿足當(dāng)前的因特網(wǎng)用戶,而且還可以為將來IP地址拓展到其它各種電子設(shè)備做好準(zhǔn)備。IPv6支持更多級別的地址層次,IPv6的設(shè)計者把IPv6的地址空間按照不同的地址前綴來劃分,并采用了層次化的地址結(jié)構(gòu),以利于骨干網(wǎng)路由器對數(shù)據(jù)包的快速轉(zhuǎn)發(fā)。
1.3 即插即用的連網(wǎng)方式
只要機器一連接上網(wǎng)絡(luò)便可自動設(shè)定地址。它有兩個優(yōu)點。一是最終用戶用不著花精力進行地址設(shè)定,二是可以大大減輕網(wǎng)絡(luò)管理者的負擔(dān)。
1.4 安全性方面
在IP協(xié)議設(shè)計之初并沒有考慮安全性,原來的Internet安全機制只建立于應(yīng)用程序級,如E-mail加密、SNMPv2網(wǎng)絡(luò)管理安全、接入安全等,無法從IP層來保證Internet的安全。而IPv6在網(wǎng)絡(luò)安全方面最為顯著的就是將IPSec安全協(xié)議集成到內(nèi)部,實現(xiàn)了IP級的安全,IPSec主要有3個方面的安全機制,即數(shù)據(jù)包確認、數(shù)據(jù)包的保密和數(shù)據(jù)包的完整,安全功能具體在其擴展數(shù)據(jù)包中實現(xiàn)。
1.5 服務(wù)質(zhì)量的滿足
基于IPv4的Internet在設(shè)計之初,只有一種簡單的服務(wù)質(zhì)量,即采用“盡最大努力”(Best effort)傳輸,從原理上講服務(wù)質(zhì)量QoS是無保證的。文本傳輸,靜態(tài)圖像等傳輸對QoS并無要求。隨著IP網(wǎng)上多媒體業(yè)務(wù)增加,如IP電話、VoD、電視會議等實時應(yīng)用,對傳輸延時和延時抖動均有嚴(yán)格的要求。為了更好地支持實時通信(例如視頻會議),IPv6對QoS增加了一種新功能,即流標(biāo)簽機制。通過該機制,其目的是允許發(fā)送業(yè)務(wù)流的源節(jié)點和轉(zhuǎn)發(fā)業(yè)務(wù)流的路由器在數(shù)據(jù)包上加上標(biāo)記,并進行除默認處理之外的不同處理。一般來說,在所選擇的鏈路上,可以根據(jù)開銷、帶寬、延時或其他特性對數(shù)據(jù)包進行特殊的處理。一個流是以某種方式相關(guān)的一系列信息包,IP層必須以相關(guān)的方式對待它們。決定信息包屬于同一流的參數(shù)包括:源地址,目的地址,QoS,身份認證及安全性。IPv6中流的概念的引入仍然是在無連接協(xié)議的基礎(chǔ)上的,一個流可以包含幾個TCP連接,一個流的目的地址可以是單個節(jié)點也可以是一組節(jié)點。IPv6的中間節(jié)點接收到一個信息包時,通過驗證他的流標(biāo)簽,就可以判斷它屬于哪個流,然后就可以知道信息包的QoS需求,進行快速的轉(zhuǎn)發(fā)。
2、IPSec協(xié)議安全和安全機制
如圖1所示,IPSec是一組由IETF設(shè)計的RFC文檔組成,將作為網(wǎng)絡(luò)安全標(biāo)準(zhǔn)在IPv6下強制實施。IPSec為IP及上層協(xié)議提供了數(shù)據(jù)完整性、數(shù)據(jù)源身份認證、抗重放攻擊、數(shù)掘內(nèi)容的機密性等安全服務(wù),是目前網(wǎng)絡(luò)層實現(xiàn)VPN(Virtul Private Network,虛擬專用網(wǎng))的事實上的標(biāo)準(zhǔn),它定義了一個系統(tǒng)來提供安全協(xié)議選擇、安全算法、確定服務(wù)所使用的密鑰等服務(wù),從而在IP層提供安全保障。IPSec是由認證頭AH(Authentication Header)協(xié)議、封裝安全載荷ESP(Encapsulating Security Payload)協(xié)議、密鑰管理協(xié)議IKE(Internet Key Exchange)三部分組成。AH能提供數(shù)據(jù)源的認證、完整性、及抗重放服務(wù)。ESP除能提供AH的功能外還提供數(shù)據(jù)保密性。
圖1 IPSec實施
2.1 IPSec體系結(jié)構(gòu)
IPSec協(xié)議包括:AH(驗證頭)、ESP(封裝安全載荷)、IKE(因特網(wǎng)密鑰交換)。其體系結(jié)構(gòu)如圖2所示。
圖2 IPSec的結(jié)構(gòu)
——AH協(xié)議(Authentication Header Protocol)即分組頭認證協(xié)議,在AH協(xié)議中,推薦的密碼算法是MD5算法和SHA_1密碼算法。
——ESP協(xié)議(Encapsulating Secure PagLoad Protocol)即封裝安全有效凈荷協(xié)議。該協(xié)議主要是為IP層提供加密保證及數(shù)據(jù)源的省份認證。ESP協(xié)議主要用來處理對IP數(shù)據(jù)包的加密。該協(xié)議是一種與具體加密算法相獨立的安全協(xié)議。該協(xié)議幾乎支持所有的對稱密鑰加密算法,例DES、3DES、IDEA、RCS等加密算法。
——IKE協(xié)議(Internet Key Exchange Protocol)即Internet密鑰交換協(xié)議。該協(xié)議主要是為通信用戶提供身份認證方法、采用的密鑰、數(shù)據(jù)加密方式等問題,經(jīng)過協(xié)商后達成一致意見的協(xié)議。
——策略是一個非常重要的問題,因為它決定兩個實體之間是否能夠通信;如果能,又采用哪一種轉(zhuǎn)碼方式。如果策略定義不當(dāng),可能導(dǎo)致雙方不能正常通信。策略這個組件尚未成為標(biāo)準(zhǔn)。
2.2 IPSec的工作模式
IPSec可為IP及上層協(xié)議TCP和UDP提供安全保證,分別通過IPSec的兩種不同模式,傳輸模式和隧道模式實現(xiàn)。
2.2.1 傳輸模式
在傳輸模式中,AH和ESP只對上層協(xié)議數(shù)據(jù)和IP頭中的固定字段提供認證或加密保護,在這種模式中,AH和ESP會攔截從傳輸層到網(wǎng)絡(luò)層的數(shù)據(jù)包,并根據(jù)具體的策略提供安全保護,適用于在端點(主機)之間實現(xiàn)。在傳輸模式數(shù)據(jù)包經(jīng)過AH或ESP處理之后的格式如表1所示。
表1 AH和ESP傳輸模式下的數(shù)據(jù)包格式
2.2.2 隧道模式
隧道模式封裝和加密整個IP數(shù)據(jù)包,IPSec隧道模式的數(shù)據(jù)包有兩個IP頭——內(nèi)部頭和外部頭。其中,內(nèi)部頭由主機創(chuàng)建,而外部頭由提供安全服務(wù)的安全網(wǎng)關(guān)添加。安全網(wǎng)關(guān)對收到的數(shù)據(jù)包進行處理,去除掉明文IP報頭后,對其內(nèi)容進行解密,并獲得最初的IP報頭。這種模式適合在數(shù)據(jù)包的最終目的地不是安全終點的情況,通常應(yīng)用于在外部網(wǎng)絡(luò)和安全網(wǎng)關(guān)之間,內(nèi)部網(wǎng)絡(luò)的主機不負責(zé)加密工作。在隧道模式下數(shù)據(jù)包經(jīng)過AH或ESP處理之后的格式如表2所示。
表2 AH和ESP隧道模式下的數(shù)據(jù)包格式
2.3 IPSec的密鑰管理
IPSec的密鑰管理包括密鑰的確定和分發(fā)。典型的需求是兩個應(yīng)用需要四個密鑰:發(fā)送和接收對的AH和ESP。IPSec體系結(jié)構(gòu)文檔要求支持兩種密鑰管理類型:
(1)手動的:系統(tǒng)管理員手動地為每個系統(tǒng)配置自己的密鑰和其他通信系統(tǒng)密鑰管理,一般應(yīng)用于小規(guī)模、相對靜止的環(huán)境。
(2)自動的:自動系統(tǒng)可以在大型分布系統(tǒng)中使用可變配置為SA動態(tài)按需創(chuàng)建密鑰。
默認的IPSec自動密鑰管理協(xié)議指的是ISAKMP/Oakley,它由以下元素組成:
(1)Oakley密鑰確定協(xié)議:Oakley提供增值安全性,是基于Diffie-Hellman算法的密鑰交換協(xié)議。Oakley是通用的,沒有任何特別格式。
(2)ISAKMP(互聯(lián)網(wǎng)安全關(guān)聯(lián)和密鑰管理協(xié)議):ISAKMP提供互聯(lián)網(wǎng)密鑰管理框架和特定協(xié)議支持,包括格式和安全屬性協(xié)商。
ISAKMP自身不包含特定的交換密鑰算法,而是由一系列使用各種交換密鑰算法的報文類型集合組成。Oakley是ISAKMP的第一個版本規(guī)定使用的交換密鑰算法。
3、基于IPSec的VPN實現(xiàn)
IPSec的典型應(yīng)用是構(gòu)建VPN,它能靈活地將加密、認證、密鑰管理和訪問控制等結(jié)合在一起,以達到專用網(wǎng)絡(luò)的效果。這種方法是將IPSec代碼結(jié)合進操作系統(tǒng)內(nèi)核的IP代碼中。這種方法將IP與IPSec緊湊結(jié)合,但是需要掌握操作系統(tǒng)內(nèi)核源代碼中關(guān)于IP包的處理流程,而有了Linux這樣一種功能強大且開放源碼的網(wǎng)絡(luò)操作系統(tǒng),只要對其內(nèi)核源代碼進行分析,加入IPSec協(xié)議處理功能,就可以實現(xiàn)VPN功能。實施這種方案的典型代表就是FreeS/WAN,
對于數(shù)據(jù)包的接收,F(xiàn)reeS/WAN使用注冊“協(xié)議開關(guān)表”的方法在協(xié)議開關(guān)表中加入對IPSec包的判斷和處理,Linux系統(tǒng)提供標(biāo)準(zhǔn)接口函數(shù)inet_add_protocol(struct inet_protocol*prot)實現(xiàn)協(xié)議開關(guān)表中協(xié)議類型的加入和刪除。這里,ESP和AH作為兩種協(xié)議類型都注冊到協(xié)議開關(guān)表中,其中的參數(shù)為inet_protocol_ah_protocol或inet_protocol esp_protocol,結(jié)構(gòu)定義如下:
ipsec_rcv()函數(shù)完成對接收到的IPSec數(shù)據(jù)包的處理,首先根據(jù)AH或ESP頭中的信息(目的IP地址、安全參數(shù)索引SPI和協(xié)議類型等)確定相應(yīng)的SA,再根據(jù)SA查找安全關(guān)聯(lián)數(shù)據(jù)庫,得到相應(yīng)的安全關(guān)聯(lián),再根據(jù)安全關(guān)聯(lián)對數(shù)據(jù)包實行具體的認證解密工作。具體接收流程如圖3所示。
圖3 接受數(shù)據(jù)包處理流程
對于數(shù)據(jù)包的發(fā)送,它通過注冊“虛擬設(shè)備”的方案實現(xiàn)數(shù)據(jù)包的“重定向”。首先由函數(shù)ipsec_tunnel_in it_evices()向內(nèi)核登記虛接口,再由ipsec_tunnelattach()將虛接口綁定到指定的物理接口上,此時虛接口和物理接口被視為一致的,當(dāng)要發(fā)送的包需要經(jīng)過IPSec處理時,就將包送到虛擬設(shè)備中處理。ipsec_tunnel_start_xmit()為IPSec的發(fā)送處理程序,放在虛擬設(shè)備的驅(qū)動程序中,完成數(shù)據(jù)包的加密和認證。數(shù)據(jù)包在IPSec處理完畢后被送往已與虛擬接口綁定的實際的網(wǎng)絡(luò)接口中。具體的發(fā)送流程如圖4所示。
圖4 發(fā)送數(shù)據(jù)包處理流程
4、結(jié)束語
除了上述軟件方法實現(xiàn)IPSec外,還用兩種方法可實現(xiàn)IPSec。一種是做一個模塊插到協(xié)議棧中,這種方式一般是在主機實施時采用。這種模塊往往是驅(qū)動程序級的代碼,編寫這樣的代碼需要對內(nèi)核中的網(wǎng)絡(luò)接口非常熟悉,相對于一般的編程有一定的難度。優(yōu)點是安裝加載都非常方便,但可能有一定的效率損失;另外一種是通過硬件實現(xiàn)。將IPSec功能集成到網(wǎng)絡(luò)設(shè)備上去。如網(wǎng)卡、或其它的一些網(wǎng)絡(luò)設(shè)備的接口上去。在IPSec的應(yīng)用中需要執(zhí)行許多的加密解密運算,特別是在ESP模式下,DES或3DES一類的對稱加密算法要消耗大量的CPU時間,即便是現(xiàn)在的上GHz的CPU也不能滿足高速加解密的需要。使用硬件實現(xiàn)IPSec就有可能集成將一些專用的加解密芯片。但這樣會增加一些硬件上的成本。
來源:中國聯(lián)通網(wǎng)站