在Internet上已有多種安全保密軟件,但大都是針對特定應(yīng)用采用加密技術(shù)而實現(xiàn)的。例如,針對電子郵件的PGP(Pretty Good Privacy)/Web-of-trust技術(shù),以及在瀏覽器與3W服務(wù)器間用于保護商用3W信息流的驗證與加密的技術(shù)SSL。這類技術(shù)的局限性在于它們是針對特定應(yīng)用而設(shè)計的,因而不能普遍適于企業(yè)網(wǎng)的各種應(yīng)用需求和ISP(Internet Service Provider)今后可能的新應(yīng)用需求。因此,IETF有關(guān)工作組的任務(wù)是要制訂一種通用的安全保密技術(shù)標準,能夠應(yīng)對將來可能的挑戰(zhàn)。
IP網(wǎng)的重要特點是以IP協(xié)議為其網(wǎng)絡(luò)層的惟一選擇,任何借助IP網(wǎng)的通信,包括Internet,都必須使用IP協(xié)議。因此,如果能保證IP層的安全,就在很大程度上保證了IP網(wǎng)上的通信安全,也為組織安全的VPN奠定了基礎(chǔ)。這就是IETF網(wǎng)絡(luò)安全組制訂IPSec協(xié)議集的基本思路。
1、IPSec協(xié)議集概述
IPSec協(xié)議集由三個基本部分組成:分組頭認證AH(Authentication Header)協(xié)議、負載數(shù)據(jù)安全包裝ESP(Encapsulation Secure Payload)協(xié)議和Internet密鑰交換IKE(Internet Key Exchange)協(xié)議。前兩個協(xié)議在IPsec協(xié)議數(shù)據(jù)單元中有對應(yīng)的部分,分別稱為認證頭(AH)和負載數(shù)據(jù)安全包裝字段(ESP)。
認證頭(AH)將各分組內(nèi)的數(shù)據(jù)與可驗證的簽名捆綁在一起,使接收方既能夠認證數(shù)據(jù)發(fā)送源,又能夠驗證數(shù)據(jù)未曾被篡改,此外還提供一種選擇性的“防重放”(Anti-replay)服務(wù)。相關(guān)的協(xié)議稱為“分組頭驗證協(xié)議”。
負載數(shù)據(jù)安全包裝(ESP)字段利用嚴格的加密手段提供安全性服務(wù),通過將各分組中的數(shù)據(jù)和某些敏感IP地址攪混(Scrambling),使網(wǎng)絡(luò)竊聽者不能獲得任何有用信息。與數(shù)據(jù)安全包裝相關(guān)的協(xié)議也縮寫為ESP,因此,在使用ESP時,究竟指字段還是協(xié)議要根據(jù)內(nèi)容來判斷。
AH和ESP都是根據(jù)密鑰分發(fā)和與相關(guān)安全協(xié)議有關(guān)的“流的管理”而提供訪問控制的手段。AH和ESP相關(guān)的協(xié)議可以單獨使用,也可以配合使用。這兩個協(xié)議都可能工作于兩種模式:傳送模式(Transport Mode)和隧道模式(Tunnel Mode)。前一種模式主要用于對IP以上的協(xié)議保護;后一種模式主要用于對IP報文利用隧道進行傳輸。
Internet密鑰交換(IKE)協(xié)議是一種功能極強而靈活性大的協(xié)議,它使用戶就身份驗證方法、加密方式、采用的密鑰以及再次修改密鑰前原密鑰可使用的時間長短等問題,經(jīng)過協(xié)商達成一致。
安全聯(lián)系SA(Security Association)是IPSec中的一個重要概念,AH和ESP協(xié)議都需要使用這一概念,IKE協(xié)議的主要功能則是建立和維護SA。一個SA是一條能夠?qū)υ谄渖线\載的數(shù)據(jù)流提供安全服務(wù)的單工(單向傳輸)連接,因此,要在兩主機間或兩個安全網(wǎng)關(guān)間對雙向通信提供安全保障,應(yīng)在各方向上分別建立一個SA。如果需要把AH和ESP協(xié)議的保護功能同時施加給數(shù)據(jù)流,則需要創(chuàng)建更多的SA。
一組“三位一體”的數(shù)據(jù)被用來唯一地標志一個SA,這些數(shù)據(jù)是安全參數(shù)索引SPI(Security Parameter Index)、IP目的地址和安全協(xié)議標志符(AH或ESP協(xié)議標志符)。盡管SA的使用,原則上也可應(yīng)用于“組播地址”(Multicast Address),但目前的IPSec的SA管理機制,僅僅是為單地址情況制訂的。
SA可工作于兩種模式:傳輸模式(Transport Mode)和隧道模式(Tunnel Mode)。傳輸模式主要用于兩主機之間的通信,在某些情況下也適用于主機與安全網(wǎng)關(guān)間的通信(例如傳送簡單管理協(xié)議SNMP)。傳輸模式的SA是針對傳輸上層協(xié)議數(shù)據(jù)的安全聯(lián)系。對IPv4,安全協(xié)議頭(AH或ESP)將置于IP頭和選項之后,而置于高層協(xié)議(如TCP、UDP)頭之前;對IPv6,安全協(xié)議頭將置于IP頭和擴展頭之后和高層協(xié)議頭之前,但既可能出現(xiàn)在目的選項(Destination Option)之前,也可能在其后。
當SA的通信對象中至少有一方為安全網(wǎng)關(guān)(Security Gateway)時,由于網(wǎng)關(guān)收發(fā)的IP報文可隸屬于多個主機,因此,網(wǎng)關(guān)扮演的角色有些像傳輸給不同主機的IP報文的隧道(IP Tunnel)。為此,相關(guān)的IP報文需要兩個IP報頭,外報頭(Outer Header)的地址指向安全網(wǎng)關(guān),內(nèi)報頭(Inner Header)的地址指向目的主機。凡涉及安全網(wǎng)關(guān)的SA被稱為“隧道SA"(Tunnel SA)。
相關(guān)標準文本還規(guī)定,作為主機必須支持兩種SA模式,而安全網(wǎng)關(guān)必須支持隧道模式,如果安全網(wǎng)關(guān)為了網(wǎng)絡(luò)管理的需要支持傳輸模式,此時它扮演的是主機的角色。
2、認證頭AH格式
如果使用了AH協(xié)議,AH將置于外IP報頭之后(但在內(nèi)IP報頭之前),其后是ESP(如果有的話),然后是其他高層協(xié)議頭(如TCP)。在隧道模式下,AH既保護外IP頭,也保護內(nèi)IP頭、ESP的內(nèi)容(如果有的話)和高層協(xié)議。AH僅涉及身份認證,并未考慮AH自身的保密性。在隧道模式下,ESP中的身份認證字段只對隧道內(nèi)的IP報文進行“散列”(Hashing)計算,對外IP頭無保護作用。圖1為AH格式示意圖。
圖1:AH格式示意圖
圖中下一報頭字段(Next Header)指明AH之后為何種(IP層之上的)高層協(xié)議。如果使用了ESP協(xié)議,則應(yīng)指明是ESP;否則,應(yīng)當指明是TCP或其他協(xié)議。1字節(jié)的負載數(shù)據(jù)長度(Payload Length)字段為認證頭(AH)的負載部分(除去前面4個字段的后面部分)的長度指示,該字段之值等于:“整個AH中含有4字節(jié)的倍數(shù)值減2”(因為早期的版本AH至少2個4字節(jié)長,為了與之兼顧,新版本干脆減去2(個4字節(jié)))。2字節(jié)的保留字段用途待定,留待今后使用,目前要求為全“0”。安全參數(shù)指針SPI用于指明該連接中使用的一組安全參數(shù)(算法、密鑰)。序號SN(Sequence Number)為使用指定的SPI的報文編號,每發(fā)送一報文序號加1。身份認證數(shù)據(jù)字段的長度可變,其功能相當于數(shù)字簽名,又稱整體性檢查值(ICV,Integrity Check Value)。為了保證整個AH字段的長度為4字節(jié)(對IPv4)或8字節(jié)(對IPv6)的整數(shù)倍,在身份認證字段內(nèi)可能需要增加填充字節(jié)。
3、負載數(shù)據(jù)安全包裝字段(ESP)的格式
IPSec處理IP層的加密問題,其ESP協(xié)議支持幾乎所有的對稱加密方式,為保證基本互操作性,其缺省加密標準為56位DES(Data Encryption Standard)。ESP也支持部分身份認證功能,這與驗證頭AH的功能有部分重疊。ESP字段緊跟在IP報頭或AH之后,內(nèi)含數(shù)據(jù)及高層協(xié)議頭,共分6個固定字段和1個可選項字段,其格式如下圖2所示。
在圖中,SPI字段向接收報文的設(shè)備提供發(fā)送方通信時將使用的安全參數(shù)記錄集SA(加密算法、密鑰及其合法使用期等);序號SN為使用同一SPI的報文計數(shù)值,每發(fā)一報文計數(shù)值加1。以上兩字段不加密,但受身份驗證數(shù)據(jù)保護(參與ICV散列計算)。負載數(shù)據(jù)為加密后的運載數(shù)據(jù)。填充字節(jié)的長度為0~255字節(jié),用以滿足某些加密算法要求為一定字節(jié)整數(shù)倍的需要,其字節(jié)數(shù)由填充長度字段指明。下一報頭字段與IP報頭中同名字段類似,指明運載的數(shù)據(jù)類型和使用的協(xié)議。
應(yīng)當指出,IPSec向后兼容,對不具備IPSec功能的路由器,由于未改變原IP報頭,即使原TCP報頭部分已被ESP占用,并不影響路由器對IP報頭的操作。
ESP能支持任何加密協(xié)議,具體采用何種協(xié)議由用戶雙方商定。
ESP也為安全VPN提供一種隧道(Tunnel)功能,將IP報文通過新的IP報文在公用網(wǎng)的隧道中傳送。
ESP還提供一種可選功能、通過圖1中的身份驗證選項實現(xiàn)。這一字段有時稱為整體檢查值。這一功能本質(zhì)上是一種數(shù)字簽名功能,原站點對ESP字段(ICV本身除外)進行散列計算而獲得散列值,目的方按同樣算法檢查ESP字段,若相同,則表明發(fā)方身份正確。
在傳輸模式下,ESP只對高層協(xié)議數(shù)據(jù)提供保護,而對ESP頭之前的部分無保護作用。
4、密鑰交換協(xié)議(IKE,Internet Key Exchange)
AH與ESP協(xié)議提供了IPSec構(gòu)建安全的VPN的基本服務(wù)要素:保密、身份驗證和整體性,但僅此還不夠,還需要為通信雙方提供一種協(xié)商擬使用的協(xié)議的分發(fā)和密鑰的手段,這就是IKE協(xié)議。
IPSec工作組通過定義“安全參數(shù)記錄集”的方式來解決跟蹤參數(shù)變化、使用的加密算法與密鑰等方面的問題。相關(guān)標準文本中有時也把“安全參數(shù)記錄集”與“安全聯(lián)系”(SA)等價看待,其具體的參數(shù)包括:
1)AH中使用的身份認證算法和使用的密鑰;
2)ESP加密算法和相關(guān)密鑰;
3)加密算法中是否使用加密同步字段,如果使用長度如何?
4)使用何種協(xié)議、加密算法和密鑰來驗證通信內(nèi)容;
5)通信私有性程度(加密算法、密鑰等級),密鑰改變頻度;
6)ESP中使用的認證算法、模式、數(shù)據(jù)變換算法及相關(guān)密鑰,密鑰使用壽命;
7)安全聯(lián)系(SA)自身壽命;
8)SA源地址;
9)解密算子的靈敏程度。
通信對象要完成對SA的協(xié)商,還必須提供下面的服務(wù):
1)協(xié)商服務(wù):就使用的協(xié)議、算法和密鑰求得一致;
2)主認證服務(wù):保證從交換之初開始,通信雙方身份無誤;
3)密鑰管理服務(wù):對已商定的密鑰進行管理;
4)密鑰背景材料交換服務(wù):為了安全地生成密鑰交換有關(guān)材料。
IPSec工作組采用了將安全聯(lián)系和密鑰管理協(xié)議(ISAKMP,Internet Security Association and Key Management Protocol)與Key Exchange機制中的一個子集相結(jié)合的方式,將IKE過程分為兩階段進行。第一階段稱為IKE SA,它在執(zhí)行IKE的對等實體間為協(xié)商SA建立起協(xié)商通道;第二階段進行通用SA參數(shù)的協(xié)商。
在IKE過程中AH和ESP中的安全參數(shù)指示字段SPI將作為SA的標志符,因此,對該字段不予以加密。