IP網(wǎng)絡(luò)安全的基石——IPSec協(xié)議(1)

責(zé)任編輯:editor005

作者:羽扇綸巾

2015-02-05 14:09:09

摘自:51CTO

·認(rèn)證機(jī)制使IP通信的數(shù)據(jù)接收方能夠確認(rèn)數(shù)據(jù)發(fā)送方的真實(shí)身份,以及數(shù)據(jù)在傳輸過(guò)程中是否遭篡改?!ぜ用軝C(jī)制通過(guò)對(duì)數(shù)據(jù)進(jìn)行編碼來(lái)保證數(shù)據(jù)的機(jī)密性,以防數(shù)據(jù)在傳輸過(guò)程中被竊聽。

  認(rèn)識(shí)IPSec

IPSec(IP Security)產(chǎn)生于IPv6的制定之中,用于提供IP層的安全性。由于所有支持TCP/IP協(xié)議的主機(jī)進(jìn)行通信時(shí),都要經(jīng)過(guò)IP層的處理,所以提供了IP層的安全性就相當(dāng)于為整個(gè)網(wǎng)絡(luò)提供了安全通信的基礎(chǔ)。鑒于IPv4的應(yīng)用仍然很廣泛,所以后來(lái)在IPSec的制定中也增添了對(duì)IPv4的支持。最初的一組有關(guān)IPSec標(biāo)準(zhǔn)由IETF在1995年制定,但由于其中存在一些未解決的問(wèn)題,從1997年開始IETF又開展了新一輪的IPSec的制定工作,截至1998年11月份主要協(xié)議已經(jīng)基本制定完成。不過(guò)這組新的協(xié)議仍然存在一些問(wèn)題,預(yù)計(jì)在不久的將來(lái)IETF又會(huì)進(jìn)行下一輪IPSec的修訂工作。

IPSec提供了兩種安全機(jī)制:認(rèn)證(采用ipsec的AH)和加密(采用ipsec的ESP)。

·認(rèn)證機(jī)制使IP通信的數(shù)據(jù)接收方能夠確認(rèn)數(shù)據(jù)發(fā)送方的真實(shí)身份,以及數(shù)據(jù)在傳輸過(guò)程中是否遭篡改。

·加密機(jī)制通過(guò)對(duì)數(shù)據(jù)進(jìn)行編碼來(lái)保證數(shù)據(jù)的機(jī)密性,以防數(shù)據(jù)在傳輸過(guò)程中被竊聽。

AH(Authentication Header)和ESP(Encapsulating Security Payload,封裝安全負(fù)載)都可以提供認(rèn)證服務(wù),不過(guò),AH提供的認(rèn)證服務(wù)要強(qiáng)于ESP。

IPSec主要功能為加密和認(rèn)證,為了進(jìn)行加密和認(rèn)證,IPSec還需要有密鑰的管理和交換的功能,以便為加密和認(rèn)證提供所需要的密鑰并對(duì)密鑰的使用進(jìn)行管理。以上三方面的工作分別由AH,ESP和IKE(Internet Key Exchange,Internet 密鑰交換)三個(gè)協(xié)議規(guī)定。為了介紹這三個(gè)協(xié)議,需要先引人一個(gè)非常重要的術(shù)語(yǔ)SA(Security Association安全關(guān)聯(lián))。所謂安全關(guān)聯(lián)是指安全服務(wù)與它服務(wù)的載體之間的一個(gè)“連接”。AH和ESP都需要使用SA,而IKE的主要功能就是SA的建立和維護(hù)。要實(shí)現(xiàn)AH和ESP,都必須提供對(duì)SA的支持。通信雙方如果要用IPSec建立一條安全的傳輸通路,需要事先協(xié)商好將要采用的安全策略,包括使用的加密算法、密鑰、密鑰的生存期等。當(dāng)雙方協(xié)商好使用的安全策略后,我們就說(shuō)雙方建立了一個(gè)SA。SA就是能向其上的數(shù)據(jù)傳輸提供某種IPSec安全保障的一個(gè)簡(jiǎn)單連接,可以由AH或ESP提供。當(dāng)給定了一個(gè)SA,就確定了IPSec要執(zhí)行的處理,如加密,認(rèn)證等。SA可以進(jìn)行兩種方式的組合,分別為傳輸臨近和嵌套隧道。

IPSec的工作原理類似于包過(guò)濾防火墻,可以看作是對(duì)包過(guò)濾防火墻的一種擴(kuò)展。當(dāng)接收到一個(gè)IP數(shù)據(jù)包時(shí),包過(guò)濾防火墻使用其頭部在一個(gè)規(guī)則表中進(jìn)行匹配。當(dāng)找到一個(gè)相匹配的規(guī)則時(shí),包過(guò)濾防火墻就按照該規(guī)則制定的方法對(duì)接收到的IP數(shù)據(jù)包進(jìn)行處理。這里的處理工作只有兩種:丟棄或轉(zhuǎn)發(fā)。IPSec通過(guò)查詢SPD(Security Po1icy Database安全策略數(shù)據(jù)庫(kù))決定對(duì)接收到的IP數(shù)據(jù)包的處理。但是IPSec不同于包過(guò)濾防火墻的是,對(duì)IP數(shù)據(jù)包的處理方法除了丟棄,直接轉(zhuǎn)發(fā)(繞過(guò)IPSec)外,還有一種,即進(jìn)行IPSec處理。正是這新增添的處理方法提供了比包過(guò)濾防火墻更進(jìn)一步的網(wǎng)絡(luò)安全性。進(jìn)行IPSec處理意味著對(duì)IP數(shù)據(jù)包進(jìn)行加密和認(rèn)證。包過(guò)濾防火墻只能控制來(lái)自或去往某個(gè)站點(diǎn)的IP數(shù)據(jù)包的通過(guò),可以拒絕來(lái)自某個(gè)外部站點(diǎn)的IP數(shù)據(jù)包訪問(wèn)內(nèi)部某些站點(diǎn),也可以拒絕某個(gè)內(nèi)部站點(diǎn)對(duì)某些外部網(wǎng)站的訪問(wèn)。但是包過(guò)濾防火墻不能保證自內(nèi)部網(wǎng)絡(luò)出去的數(shù)據(jù)包不被截取,也不能保證進(jìn)入內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)包未經(jīng)過(guò)篡改。只有在對(duì)IP數(shù)據(jù)包實(shí)施了加密和認(rèn)證后,才能保證在外部網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包的機(jī)密性、真實(shí)性、完整性,通過(guò)Internet進(jìn)行安全的通信才成為可能。IPSec既可以只對(duì)IP數(shù)據(jù)包進(jìn)行加密,或只進(jìn)行認(rèn)證,也可以同時(shí)實(shí)施二者。但無(wú)論是進(jìn)行加密還是進(jìn)行認(rèn)證,IPSec都有兩種工作模式,一種是隧道模式,另一種是傳輸模式。

IPSec協(xié)議組

IPSec協(xié)議組包含Authentication Header(AH)協(xié)議、Encapsulating Security Payload(ESP)協(xié)議和Internet Key Exchange(IKE)協(xié)議,如圖1所示,他們的功能如下。

AH協(xié)議定義了認(rèn)證的應(yīng)用方法,提供數(shù)據(jù)源認(rèn)證和完整性保證;AH只涉及認(rèn)證,不涉及加密。AH雖然在功能上和ESP有些重復(fù),但AH除了可以對(duì)IP的有效負(fù)載進(jìn)行認(rèn)證外,還可以對(duì)IP頭部實(shí)施認(rèn)證。主要是處理數(shù)據(jù)時(shí),可以對(duì)IP頭部進(jìn)行認(rèn)證,而ESP的認(rèn)證功能主要是面對(duì)IP的有效負(fù)載。為了提供最基本的功能并保證互操作性,AH必須包含對(duì)HMAC?/FONT>SHA和HMAC?/FONT>MD5(HMAC是一種SHA和MD5都支持的對(duì)稱式認(rèn)證系統(tǒng))的支持。AH既可以單獨(dú)使用,也可在隧道模式下,或和ESP聯(lián)用。

ESP協(xié)議定義了加密和可選認(rèn)證的應(yīng)用方法,提供了可靠性保證。ESP協(xié)議主要用來(lái)處理對(duì)IP數(shù)據(jù)包的加密,此外對(duì)認(rèn)證也提供某種程度的支持。ESP是與具體的加密算法相獨(dú)立的,幾乎可以支持各種對(duì)稱密鑰加密算法,例如DES、TripleDES、RC5等。為了保證各種IPSec實(shí)現(xiàn)間的互操作性,目前ESP必須提供對(duì)56位DES算法的支持。ESP協(xié)議數(shù)據(jù)單元格式由三個(gè)部分組成,除了頭部、加密數(shù)據(jù)部分外,在實(shí)施認(rèn)證時(shí)還包含一個(gè)可選尾部。頭部有兩個(gè)域:安全策略索引(SPl)和序列號(hào)(Sequence Number)。使用ESP進(jìn)行安全通信之前,通信雙方需要先協(xié)商好一組將要采用的加密策略,包括使用的算法、密鑰以及密鑰的有效期等。“安全策略索引”使用來(lái)標(biāo)識(shí)發(fā)送方是使用哪組加密策略來(lái)處理IP數(shù)據(jù)包的,當(dāng)接收方看到了這個(gè)序號(hào)就知道了對(duì)收到的IP數(shù)據(jù)包應(yīng)該如何處理。“序列號(hào)”用來(lái)區(qū)分使用同一組加密策略的不同數(shù)據(jù)包。加密數(shù)據(jù)部分除了包含原IP數(shù)據(jù)包的有效負(fù)載外,填充域(用來(lái)保證加密數(shù)據(jù)部分滿足塊加密的長(zhǎng)度要求)包含其余部分在傳輸時(shí)都是加密過(guò)的。其中“下一個(gè)頭部(Next Header)”用來(lái)指出有效負(fù)載部分使用的協(xié)議,可能是傳輸層協(xié)議(TCP或UDP),也可能是IPSec協(xié)議(ESP或AH)。通常,ESP可以作為IP的有效負(fù)載進(jìn)行傳輸,由于采用了這種封裝形式,所以ESP可以使用舊有的網(wǎng)絡(luò)進(jìn)行傳輸。

  圖1 IP層協(xié)議安全結(jié)構(gòu)

IKE協(xié)議主要是對(duì)密鑰交換進(jìn)行管理,它主要包括三個(gè)功能。

·對(duì)使用的協(xié)議、加密算法和密鑰進(jìn)行協(xié)商。

·方便的密鑰交換機(jī)制(這可能需要周期性地進(jìn)行)。

·跟蹤對(duì)以上這些約定的實(shí)施。

前面已經(jīng)提到用IPSec進(jìn)行加密可以有兩種工作模式,意味著ESP協(xié)議有兩種工作模式:傳輸模式(Transport Mode)和隧道模式(Tunnel Mode)。當(dāng)ESP工作在傳輸模式時(shí),采用當(dāng)前的IP頭部。而在隧道模式時(shí),將整個(gè)IP數(shù)據(jù)包進(jìn)行加密作為ESP的有效負(fù)載,并在ESP頭部前增添以網(wǎng)關(guān)地址為源地址的新的IP頭部,此時(shí)可以起到NAT的作用。在實(shí)際進(jìn)行IP通信時(shí),可以根據(jù)實(shí)際安全需求同時(shí)使用這兩種協(xié)議或選擇使用其中的一種。

[page]

熟悉IPSec的工作模式

IPSec有兩種工作模式,分別是傳輸模式和隧道模式。在這兩種模式下,分別可以使用AH頭(IPSec認(rèn)證頭)或ESP頭(IPSec ESP封裝安全負(fù)荷頭)兩種方式進(jìn)行安全封裝,各種工作模式下的認(rèn)證和加密原理如下。

(1)傳輸模式的認(rèn)證

傳輸模式只對(duì)IP數(shù)據(jù)包的有效負(fù)載進(jìn)行認(rèn)證。此時(shí),繼續(xù)使用以前的IP頭部,只對(duì)IP頭部的部分域進(jìn)行修改,而IPSec協(xié)議頭部插入到IP頭部和傳輸層頭部之間,如圖2所示。

(2)隧道模式的認(rèn)證

隧道模式對(duì)整個(gè)IP數(shù)據(jù)色進(jìn)行認(rèn)證。此時(shí),需要新產(chǎn)生一個(gè)IP頭部,IPSec頭部被放在新產(chǎn)生的IP頭部和以前的IP數(shù)據(jù)包之間,從而組成一個(gè)新的IP頭部,如圖3所示。

  圖2 傳輸模式認(rèn)證報(bào)文

  圖3 隧道模式認(rèn)證報(bào)文

(3)傳輸模式的加密

傳輸模式只對(duì)IP數(shù)據(jù)包的有效負(fù)載進(jìn)行加密。此時(shí),繼續(xù)使用以前的IP頭部,只對(duì)IP頭部的部分域進(jìn)行修改,而IPSec協(xié)議頭部插入到IP頭部和傳輸層頭部之間,如圖4所示。

  圖4 傳輸模式加密報(bào)文

(4)隧道模式的加密

隧道模式對(duì)整個(gè)IP數(shù)據(jù)包進(jìn)行加密。此時(shí),需要新產(chǎn)生一個(gè)IP頭部,IPSec頭部被放在新產(chǎn)生的IP頭部和以前的IP數(shù)據(jù)包之間,從而組成一個(gè)新的IP頭部,如圖5所示。

  圖5 隧道模式加密報(bào)文

AH頭結(jié)構(gòu)

AH協(xié)議為IP通信提供數(shù)據(jù)源認(rèn)證、數(shù)據(jù)完整性和反重播保證,它能保護(hù)通信免受篡改,但不能防止竊聽,適合用于傳輸非機(jī)密數(shù)據(jù)。AH的工作原理是在每一個(gè)數(shù)據(jù)包上添加一個(gè)身份驗(yàn)證報(bào)頭。此報(bào)頭包含一個(gè)帶密鑰的Hash散列(可以將其當(dāng)作數(shù)字簽名,只是它不使用證書),此Hash散列在整個(gè)數(shù)據(jù)包中計(jì)算,因此對(duì)數(shù)據(jù)的任何更改將致使散列無(wú)效——這樣就提供了完整性保護(hù),如圖6、圖7所示。

·Next Header(下一個(gè)報(bào)頭): 識(shí)別下一個(gè)使用IP協(xié)議號(hào)的報(bào)頭,例如,Next Header值等于“6”,表示緊接其后的是TCP報(bào)頭。

·Length(長(zhǎng)度):AH報(bào)頭長(zhǎng)度。

·Security Parameters Index (SPI,安全參數(shù)索引):這是一個(gè)為數(shù)據(jù)報(bào)識(shí)別安全關(guān)聯(lián)的 32 位偽隨機(jī)值。SPI 值 0 被保留來(lái)表明“沒(méi)有安全關(guān)聯(lián)存在”。

  圖6 AH報(bào)文結(jié)構(gòu)

  圖7 AH完整性檢查報(bào)文

·Sequence Number(序列號(hào)):從1開始的32位單增序列號(hào),不允許重復(fù),唯一地標(biāo)識(shí)了每一個(gè)發(fā)送數(shù)據(jù)包,為安全關(guān)聯(lián)提供反重播保護(hù)。接收端校驗(yàn)序列號(hào)為該字段值的數(shù)據(jù)包是否已經(jīng)被接收過(guò),若是,則拒收該數(shù)據(jù)包。

·Authentication Data(AD,認(rèn)證數(shù)據(jù)): 包含完整性檢查和。接收端接收數(shù)據(jù)包后,首先執(zhí)行Hash計(jì)算,再與發(fā)送端所計(jì)算的該字段值比較,若兩者相等,表示數(shù)據(jù)完整,若在傳輸過(guò)程中數(shù)據(jù)遭修改,兩個(gè)計(jì)算結(jié)果不一致,則丟棄該數(shù)據(jù)包。

ESP頭結(jié)構(gòu)

ESP為IP數(shù)據(jù)包提供完整性檢查、認(rèn)證和加密,可以看作是“超級(jí) AH”, 因?yàn)樗峁C(jī)密性并可防止篡改。如圖8、圖9所示。

  圖8 ESP頭結(jié)構(gòu)

·Security Parameters Index(SPI,安全參數(shù)索引):為數(shù)據(jù)包識(shí)別安全關(guān)聯(lián)。

·Sequence Number(序列號(hào)):從1開始的32位單增序列號(hào),不允許重復(fù),唯一地標(biāo)識(shí)了每一個(gè)發(fā)送數(shù)據(jù)包,為安全關(guān)聯(lián)提供反重播保護(hù)。接收端校驗(yàn)序列號(hào)為該字段值的數(shù)據(jù)包是否已經(jīng)被接收過(guò),若是,則拒收該數(shù)據(jù)包。ESP報(bào)尾字段包括:

·Padding(擴(kuò)展位):0-255個(gè)字節(jié)。DH算法要求數(shù)據(jù)長(zhǎng)度(以位為單位)模512為448,若應(yīng)用數(shù)據(jù)長(zhǎng)度不足,則用擴(kuò)展位填充。

·Padding Length(擴(kuò)展位長(zhǎng)度):接收端根據(jù)該字段長(zhǎng)度去除數(shù)據(jù)中擴(kuò)展位。

·Next Header(下一個(gè)報(bào)頭):識(shí)別下一個(gè)使用IP協(xié)議號(hào)的報(bào)頭,如TCP或UDP。

·ESP認(rèn)證報(bào)尾字段:Authentication Data(AD,認(rèn)證數(shù)據(jù)),它包含完整性檢查和。完整性檢查部分包括ESP報(bào)頭、有效載荷(應(yīng)用程序數(shù)據(jù))和ESP報(bào)尾。

  圖9 ESP完整性檢查報(bào)文結(jié)構(gòu)

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)