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