郭 棟,姜鵬博,陽 紅
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
隨著網(wǎng)絡(luò)的普及以及電子商務(wù)的流行,網(wǎng)絡(luò)安全已經(jīng)成為與人們生活息息相關(guān)的課題。IPsec 作為IP 網(wǎng)絡(luò)層的標(biāo)準(zhǔn)安全協(xié)議,在當(dāng)前IP 網(wǎng)絡(luò)中被廣泛的使用。IPsec 標(biāo)準(zhǔn)提出了兩種封裝模式,在提供安全服務(wù)的同時也帶來了一些問題。
IPv6 協(xié)議頭如圖1 所示,對比IPv4 協(xié)議頭,IPv6[2]頭部只有一個新增字段:Flow label,中文譯為流標(biāo)簽,用于標(biāo)示一對網(wǎng)絡(luò)節(jié)點(diǎn)之間傳輸?shù)囊粋€業(yè)務(wù)流,同一個業(yè)務(wù)流中的IP 包應(yīng)具有相同的流標(biāo)簽。
圖1 IPv6 協(xié)議頭
IPsec 是IP Security 的簡稱,是一個由IETF 設(shè)計(jì)的確保IP 層通信安全的機(jī)制,是一系列為IP 網(wǎng)絡(luò)提供安全性的協(xié)議和服務(wù)的集合。IPsec 不是一個單獨(dú)的協(xié)議,包括了12 個RFC 文件和幾十個Internet 草案,已經(jīng)成為標(biāo)準(zhǔn)的IP 網(wǎng)絡(luò)安全協(xié)議。
標(biāo)準(zhǔn)IPsec 中定義了兩種協(xié)議[3],AH(驗(yàn)證頭)和ESP(封裝安全載荷),AH 協(xié)議可以為IP 包提供數(shù)據(jù)完整性、數(shù)據(jù)源認(rèn)證和抗重傳服務(wù),ESP 協(xié)議除了能夠提供AH 協(xié)議的三種服務(wù)外,還可以提供機(jī)密性服務(wù)。
標(biāo)準(zhǔn)IPsec 中定義了兩種封裝模式[4]:傳輸模式和隧道模式,采用ESP 協(xié)議時,兩種封裝模式格式如圖2 所示。
其中,ESP 頭和ESP 尾均由特定的字段構(gòu)成,其格式如圖3 所示。
圖2 兩種封裝模式
圖3 ESP 頭和ESP 尾格式
由于AH 協(xié)議不能提供機(jī)密性服務(wù),在應(yīng)用IPsec 時,通常使用的是ESP 協(xié)議。下文均基于ESP 協(xié)議進(jìn)行分析。
兩種傳統(tǒng)封裝模式最大的問題在于封裝帶來了開銷。以以太網(wǎng)為例,在“初始化向量”長度為8字節(jié)、“驗(yàn)證數(shù)據(jù)”為16 字節(jié)前提下,分別計(jì)算兩種封裝模式下的傳輸效率。
傳輸模式效率計(jì)算公式如圖4 所示,隧道模式效率計(jì)算公式如圖5 所示。
在RFC2544[5]測試性能采用的各種幀長情況下,兩種封裝模式傳輸效率如表1 所示。
圖4 傳輸模式效率
圖5 隧道模式效率
表1 傳輸模式和隧道模式的傳輸效率
從表1 可以看出,在幀長較小情況下,兩種封裝模式開銷將極大的影響傳輸效率。
由于封裝帶來了開銷,當(dāng)業(yè)務(wù)包以線速進(jìn)入IPsec 對等體時,并不是所有業(yè)務(wù)包均得到IPsec 服務(wù)并正確轉(zhuǎn)發(fā),超過IPsec 對等體處理性能的業(yè)務(wù)包將會被丟棄,由此帶來了丟包策略問題。業(yè)務(wù)包優(yōu)先級和丟包策略是一個復(fù)雜的課題,在此文中不再詳述。
由于封裝開銷的存在,部分業(yè)務(wù)包在實(shí)施IPsec時需要分片和重組,進(jìn)一步降低了傳輸性能,增加了IPsec 實(shí)現(xiàn)的復(fù)雜性。
在IP 網(wǎng)絡(luò)中,傳統(tǒng)上使用IP 包的五元組來區(qū)分?jǐn)?shù)據(jù)流,也就是源和目的IP 地址、源和目的端口號以及傳輸協(xié)議。但是,分片會導(dǎo)致非首片分片包缺少端口號字段,加密會導(dǎo)致無法獲取IP 包的傳輸協(xié)議和端口號字段,還有,由于IPv6 包可能存在擴(kuò)展頭,傳輸協(xié)議和端口號字段要通過一系列的解析才能獲取,效率較低。
流標(biāo)簽的使用方法在相關(guān)的RFC 中并未做具體設(shè)定,但是RFC 對流標(biāo)簽的使用提出了一些要求。如流標(biāo)簽在傳輸過程中不能被任意節(jié)點(diǎn)修改,同一對源和目的地址的節(jié)點(diǎn)不能把同一個標(biāo)簽用在不同的數(shù)據(jù)流上,流標(biāo)簽在使用結(jié)束后的120 秒之內(nèi)不可再被使用等。
無開銷封裝模式,是在傳輸模式的基礎(chǔ)上,逐一分析ESP 頭和ESP 尾中各個字段存在的必要性,只保留必需的字段并存儲到流標(biāo)簽中,通過流標(biāo)簽實(shí)現(xiàn)IPsec。
標(biāo)準(zhǔn)IPsec 中ESP 協(xié)議的擴(kuò)展頭和擴(kuò)展尾的格式如圖3 所示,SPI 用于關(guān)聯(lián)安全聯(lián)盟,序列號用于抗重放,初始化向量是加解密算法的一個輸入。另外,分組算法通常需要將明文數(shù)據(jù)填充成8 或16字節(jié)的整數(shù)倍,因此ESP 尾中有填充字段和填充長度。下一個頭用于記錄原始包中的傳輸協(xié)議類型。驗(yàn)證數(shù)據(jù)用于實(shí)現(xiàn)完整性校驗(yàn)功能。
如果不考慮抗重放功能,可省略序列號字段。加解密時可使用IPv6 頭部中的固定字段作為初始化向量,可省略初始化向量字段。另外,通過設(shè)計(jì)特定的算法,加解密無需再提供填充字段。如果不考慮完整性校驗(yàn)功能,可省略驗(yàn)證數(shù)據(jù)字段。
因此,在構(gòu)成ESP 頭和ESP 尾的各字段中,只有SPI 和下一個頭字段必須保留。標(biāo)準(zhǔn)IPsec 中SPI 字段長度為4 個字節(jié),下一個頭長度為1 個字節(jié),流標(biāo)簽的22 比特空間不足以存放SPI 和下一個頭。下一個頭存放的是原始包的協(xié)議值,長度必須為1個字節(jié),因此只能壓縮SPI 存儲空間。
如圖6 所示,將22 比特的流標(biāo)簽空間劃分成兩部分,前14 比特用于存放SPI,后8 比特用于存放下一個頭。
圖6 流標(biāo)簽的劃分格式
無開銷模式中的SPI 和下一個頭與標(biāo)準(zhǔn)Ipsec中的相同字段用法保持一致。
流標(biāo)簽用于在一對源和目的之間標(biāo)記一個特定的數(shù)據(jù)流,與SPI 字段在IPsec 中的作用基本類似,另外具有同樣流標(biāo)簽的業(yè)務(wù)包應(yīng)得到相同的服務(wù),以及流標(biāo)簽在傳輸過程中不能被更改等特點(diǎn),使得流標(biāo)簽非常適合于實(shí)現(xiàn)IPsec。
與標(biāo)準(zhǔn)IPsec 中定義的兩種封裝模式比較,無開銷模式具有以下特點(diǎn):
(1)在實(shí)現(xiàn)IPsec 的同時省略了開銷,傳輸性能可達(dá)到線速。
(2)傳輸模式和隧道模式下,當(dāng)輸入的明文數(shù)據(jù)已達(dá)到線速的情況下,開銷會造成丟包,將帶來丟包策略、業(yè)務(wù)包優(yōu)先級等一系列復(fù)雜問題。無開銷模式無此類問題。
(3)傳輸模式和隧道模式下,經(jīng)過IPsec 處理后,包長度會增加,由此帶來分片和重組問題,分片和重組會進(jìn)一步影響傳輸性能。無開銷模式不會改變包長,無需考慮分片。
(4)傳輸模式和隧道模式下,SPI 字段占用了32 比特空間,同一對源和目的IP 地址之間最多能夠建立4 294 967 296 個SA。無開銷模式下,由于流標(biāo)簽字段空間有限,SPI 字段最大只能占用14 比特空間,在同一對源和目的IP 地址之間最多能夠建立16 384 個SA,對于一般的終端節(jié)點(diǎn)夠用,如果節(jié)點(diǎn)為服務(wù)器則要慎重考慮。
(5)傳輸模式和隧道模式下,ESP 擴(kuò)展頭中存在序列號字段用于提供抗重放服務(wù),無開銷模式?jīng)]有足夠的空間存放序列號,因此無法提供抗重放服務(wù)。
(6)傳輸模式和隧道模式可提供數(shù)據(jù)完整性服務(wù),無開銷模式?jīng)]有足夠的空間存放校驗(yàn)數(shù)據(jù),因此在IPsec 層面無法提供數(shù)據(jù)完整性服務(wù),但被保護(hù)的高層協(xié)議通常包括校驗(yàn)和字段,數(shù)據(jù)完整性方面可以借助于高層協(xié)議如TCP、UDP 及ICMPv6等協(xié)議實(shí)現(xiàn)。
(7)無開銷模式,未對下一個頭字段加密,網(wǎng)絡(luò)攻擊者可通過抓包分析獲取數(shù)據(jù)流傳輸協(xié)議。
標(biāo)準(zhǔn)IPsec 定義的兩種封裝模式在提供IP 網(wǎng)絡(luò)安全服務(wù)的同時,也帶來了傳輸開銷、分片等問題。本文提出的無開銷封裝模式,通過利用IPv6 頭部中的流標(biāo)簽字段,在IPv6 協(xié)議下無開銷實(shí)現(xiàn)IPsec。由于流標(biāo)簽空間有限,無開銷模式無法提供數(shù)據(jù)完整性和抗重放服務(wù),高層協(xié)議的校驗(yàn)和可提供弱完整性服務(wù)。無開銷模式可提供簡單的機(jī)密性服務(wù),在帶寬有限的網(wǎng)絡(luò)中具有一定的優(yōu)勢。另外,省略填充字段依賴于特殊的算法實(shí)現(xiàn),需要在設(shè)計(jì)和實(shí)現(xiàn)算法時考慮。