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