認識IPSec
IPSec(IP Security)產生于IPv6的制定之中,用于提供IP層的安全性。由于所有支持TCP/IP協議的主機進行通信時,都要經過IP層的處理,所以提供了IP層的安全性就相當于為整個網絡提供了安全通信的基礎。鑒于IPv4的應用仍然很廣泛,所以后來在IPSec的制定中也增添了對IPv4的支持。最初的一組有關IPSec標準由IETF在1995年制定,但由于其中存在一些未解決的問題,從1997年開始IETF又開展了新一輪的IPSec的制定工作,截至1998年11月份主要協議已經基本制定完成。不過這組新的協議仍然存在一些問題,預計在不久的將來IETF又會進行下一輪IPSec的修訂工作。
IPSec提供了兩種安全機制:認證(采用ipsec的AH)和加密(采用ipsec的ESP)。
·認證機制使IP通信的數據接收方能夠確認數據發送方的真實身份,以及數據在傳輸過程中是否遭篡改。
·加密機制通過對數據進行編碼來保證數據的機密性,以防數據在傳輸過程中被竊聽。
AH(Authentication Header)和ESP(Encapsulating Security Payload,封裝安全負載)都可以提供認證服務,不過,AH提供的認證服務要強于ESP。
IPSec主要功能為加密和認證,為了進行加密和認證,IPSec還需要有密鑰的管理和交換的功能,以便為加密和認證提供所需要的密鑰并對密鑰的使用進行管理。以上三方面的工作分別由AH,ESP和IKE(Internet Key Exchange,Internet 密鑰交換)三個協議規定。為了介紹這三個協議,需要先引人一個非常重要的術語SA(Security Association安全關聯)。所謂安全關聯是指安全服務與它服務的載體之間的一個“連接”。AH和ESP都需要使用SA,而IKE的主要功能就是SA的建立和維護。要實現AH和ESP,都必須提供對SA的支持。通信雙方如果要用IPSec建立一條安全的傳輸通路,需要事先協商好將要采用的安全策略,包括使用的加密算法、密鑰、密鑰的生存期等。當雙方協商好使用的安全策略后,我們就說雙方建立了一個SA。SA就是能向其上的數據傳輸提供某種IPSec安全保障的一個簡單連接,可以由AH或ESP提供。當給定了一個SA,就確定了IPSec要執行的處理,如加密,認證等。SA可以進行兩種方式的組合,分別為傳輸臨近和嵌套隧道。
IPSec的工作原理類似于包過濾防火墻,可以看作是對包過濾防火墻的一種擴展。當接收到一個IP數據包時,包過濾防火墻使用其頭部在一個規則表中進行匹配。當找到一個相匹配的規則時,包過濾防火墻就按照該規則制定的方法對接收到的IP數據包進行處理。這里的處理工作只有兩種:丟棄或轉發。IPSec通過查詢SPD(Security Po1icy Database安全策略數據庫)決定對接收到的IP數據包的處理。但是IPSec不同于包過濾防火墻的是,對IP數據包的處理方法除了丟棄,直接轉發(繞過IPSec)外,還有一種,即進行IPSec處理。正是這新增添的處理方法提供了比包過濾防火墻更進一步的網絡安全性。進行IPSec處理意味著對IP數據包進行加密和認證。包過濾防火墻只能控制來自或去往某個站點的IP數據包的通過,可以拒絕來自某個外部站點的IP數據包訪問內部某些站點,也可以拒絕某個內部站點對某些外部網站的訪問。但是包過濾防火墻不能保證自內部網絡出去的數據包不被截取,也不能保證進入內部網絡的數據包未經過篡改。只有在對IP數據包實施了加密和認證后,才能保證在外部網絡傳輸的數據包的機密性、真實性、完整性,通過Internet進行安全的通信才成為可能。IPSec既可以只對IP數據包進行加密,或只進行認證,也可以同時實施二者。但無論是進行加密還是進行認證,IPSec都有兩種工作模式,一種是隧道模式,另一種是傳輸模式。
IPSec協議組
IPSec協議組包含Authentication Header(AH)協議、Encapsulating Security Payload(ESP)協議和Internet Key Exchange(IKE)協議,如圖1所示,他們的功能如下。
AH協議定義了認證的應用方法,提供數據源認證和完整性保證;AH只涉及認證,不涉及加密。AH雖然在功能上和ESP有些重復,但AH除了可以對IP的有效負載進行認證外,還可以對IP頭部實施認證。主要是處理數據時,可以對IP頭部進行認證,而ESP的認證功能主要是面對IP的有效負載。為了提供最基本的功能并保證互操作性,AH必須包含對HMAC?/FONT>SHA和HMAC?/FONT>MD5(HMAC是一種SHA和MD5都支持的對稱式認證系統)的支持。AH既可以單獨使用,也可在隧道模式下,或和ESP聯用。
ESP協議定義了加密和可選認證的應用方法,提供了可靠性保證。ESP協議主要用來處理對IP數據包的加密,此外對認證也提供某種程度的支持。ESP是與具體的加密算法相獨立的,幾乎可以支持各種對稱密鑰加密算法,例如DES、TripleDES、RC5等。為了保證各種IPSec實現間的互操作性,目前ESP必須提供對56位DES算法的支持。ESP協議數據單元格式由三個部分組成,除了頭部、加密數據部分外,在實施認證時還包含一個可選尾部。頭部有兩個域:安全策略索引(SPl)和序列號(Sequence Number)。使用ESP進行安全通信之前,通信雙方需要先協商好一組將要采用的加密策略,包括使用的算法、密鑰以及密鑰的有效期等。“安全策略索引”使用來標識發送方是使用哪組加密策略來處理IP數據包的,當接收方看到了這個序號就知道了對收到的IP數據包應該如何處理。“序列號”用來區分使用同一組加密策略的不同數據包。加密數據部分除了包含原IP數據包的有效負載外,填充域(用來保證加密數據部分滿足塊加密的長度要求)包含其余部分在傳輸時都是加密過的。其中“下一個頭部(Next Header)”用來指出有效負載部分使用的協議,可能是傳輸層協議(TCP或UDP),也可能是IPSec協議(ESP或AH)。通常,ESP可以作為IP的有效負載進行傳輸,由于采用了這種封裝形式,所以ESP可以使用舊有的網絡進行傳輸。
圖1 IP層協議安全結構
IKE協議主要是對密鑰交換進行管理,它主要包括三個功能。
·對使用的協議、加密算法和密鑰進行協商。
·方便的密鑰交換機制(這可能需要周期性地進行)。
·跟蹤對以上這些約定的實施。
前面已經提到用IPSec進行加密可以有兩種工作模式,意味著ESP協議有兩種工作模式:傳輸模式(Transport Mode)和隧道模式(Tunnel Mode)。當ESP工作在傳輸模式時,采用當前的IP頭部。而在隧道模式時,將整個IP數據包進行加密作為ESP的有效負載,并在ESP頭部前增添以網關地址為源地址的新的IP頭部,此時可以起到NAT的作用。在實際進行IP通信時,可以根據實際安全需求同時使用這兩種協議或選擇使用其中的一種。
[page]熟悉IPSec的工作模式
IPSec有兩種工作模式,分別是傳輸模式和隧道模式。在這兩種模式下,分別可以使用AH頭(IPSec認證頭)或ESP頭(IPSec ESP封裝安全負荷頭)兩種方式進行安全封裝,各種工作模式下的認證和加密原理如下。
(1)傳輸模式的認證
傳輸模式只對IP數據包的有效負載進行認證。此時,繼續使用以前的IP頭部,只對IP頭部的部分域進行修改,而IPSec協議頭部插入到IP頭部和傳輸層頭部之間,如圖2所示。
(2)隧道模式的認證
隧道模式對整個IP數據色進行認證。此時,需要新產生一個IP頭部,IPSec頭部被放在新產生的IP頭部和以前的IP數據包之間,從而組成一個新的IP頭部,如圖3所示。
圖2 傳輸模式認證報文
圖3 隧道模式認證報文
(3)傳輸模式的加密
傳輸模式只對IP數據包的有效負載進行加密。此時,繼續使用以前的IP頭部,只對IP頭部的部分域進行修改,而IPSec協議頭部插入到IP頭部和傳輸層頭部之間,如圖4所示。
圖4 傳輸模式加密報文
(4)隧道模式的加密
隧道模式對整個IP數據包進行加密。此時,需要新產生一個IP頭部,IPSec頭部被放在新產生的IP頭部和以前的IP數據包之間,從而組成一個新的IP頭部,如圖5所示。
圖5 隧道模式加密報文
AH頭結構
AH協議為IP通信提供數據源認證、數據完整性和反重播保證,它能保護通信免受篡改,但不能防止竊聽,適合用于傳輸非機密數據。AH的工作原理是在每一個數據包上添加一個身份驗證報頭。此報頭包含一個帶密鑰的Hash散列(可以將其當作數字簽名,只是它不使用證書),此Hash散列在整個數據包中計算,因此對數據的任何更改將致使散列無效——這樣就提供了完整性保護,如圖6、圖7所示。
·Next Header(下一個報頭): 識別下一個使用IP協議號的報頭,例如,Next Header值等于“6”,表示緊接其后的是TCP報頭。
·Length(長度):AH報頭長度。
·Security Parameters Index (SPI,安全參數索引):這是一個為數據報識別安全關聯的 32 位偽隨機值。SPI 值 0 被保留來表明“沒有安全關聯存在”。
圖6 AH報文結構
圖7 AH完整性檢查報文
·Sequence Number(序列號):從1開始的32位單增序列號,不允許重復,唯一地標識了每一個發送數據包,為安全關聯提供反重播保護。接收端校驗序列號為該字段值的數據包是否已經被接收過,若是,則拒收該數據包。
·Authentication Data(AD,認證數據): 包含完整性檢查和。接收端接收數據包后,首先執行Hash計算,再與發送端所計算的該字段值比較,若兩者相等,表示數據完整,若在傳輸過程中數據遭修改,兩個計算結果不一致,則丟棄該數據包。
ESP頭結構
ESP為IP數據包提供完整性檢查、認證和加密,可以看作是“超級 AH”, 因為它提供機密性并可防止篡改。如圖8、圖9所示。
圖8 ESP頭結構
·Security Parameters Index(SPI,安全參數索引):為數據包識別安全關聯。
·Sequence Number(序列號):從1開始的32位單增序列號,不允許重復,唯一地標識了每一個發送數據包,為安全關聯提供反重播保護。接收端校驗序列號為該字段值的數據包是否已經被接收過,若是,則拒收該數據包。ESP報尾字段包括:
·Padding(擴展位):0-255個字節。DH算法要求數據長度(以位為單位)模512為448,若應用數據長度不足,則用擴展位填充。
·Padding Length(擴展位長度):接收端根據該字段長度去除數據中擴展位。
·Next Header(下一個報頭):識別下一個使用IP協議號的報頭,如TCP或UDP。
·ESP認證報尾字段:Authentication Data(AD,認證數據),它包含完整性檢查和。完整性檢查部分包括ESP報頭、有效載荷(應用程序數據)和ESP報尾。
圖9 ESP完整性檢查報文結構