包 卓,馬 迪,,毛 偉,邵 晴
1(中國(guó)科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)
2(中國(guó)科學(xué)院大學(xué),北京 100049)
3(互聯(lián)網(wǎng)域名系統(tǒng)北京市工程研究中心,北京 100190)
全球互聯(lián)網(wǎng)中,BGP (border gateway protocol,邊界網(wǎng)關(guān)協(xié)議)是目前域間路由器進(jìn)行可達(dá)性信息交換應(yīng)用最廣泛的安全協(xié)議,AS_PATH 是BGP update 報(bào)文中一種通用屬性,AS 邊界路由器在廣播前綴地址時(shí),會(huì)在AS_PATH 最左端加上自己的AS 號(hào),隨后將該通告?zhèn)鬟f給鄰居.利用AS_PATH 信息,路由器可進(jìn)行決策信息的補(bǔ)充,“AS-Path Prepend”技術(shù)[1]在路徑信息中預(yù)裝填自己的AS 號(hào),用來(lái)影響AS_PATH 屬性長(zhǎng)度,實(shí)施流量工程.“BGP Poisoning”[2]則是利用BGP 防環(huán)機(jī)制,通過(guò)預(yù)裝填A(yù)S 號(hào)來(lái)達(dá)到繞過(guò)具體AS 目的的一種方案.
AS_PATH 明文傳輸且影響路由決策,攻擊者可對(duì)AS_PATH 進(jìn)行偽造,刪除或者惡意增加,來(lái)影響后續(xù)路由器的路徑抉擇,以達(dá)到ip 前綴流量劫持的目的.針對(duì)Update 中AS_PATH的驗(yàn)證問題,學(xué)術(shù)界提出過(guò)多種解決方案,該文獻(xiàn)提出了sBGP (secure BGP)[3]的解決方案,sBGP 同樣使用PKI 體系對(duì)網(wǎng)絡(luò)資源進(jìn)行驗(yàn)證,sBGP 基于資源分配的層級(jí)模型,分別為ip 前綴分配、AS 編號(hào)及其路由器信息建立PKI 認(rèn)證體系.在BGP路由器傳遞數(shù)據(jù)包過(guò)程中,采用逐跳嵌套的方式,將“地址”和“路由”的數(shù)字簽名添加進(jìn)路徑屬性中.結(jié)合IPSec,保證路由源頭和路徑的合法授權(quán)驗(yàn)證.
soBGP (secure origin BGP)[4]方案采用分布式認(rèn)證中心,為每個(gè)AS 簽發(fā)用以身份認(rèn)證的證書EntityCert,根據(jù)每一個(gè)AS 對(duì)ip 前綴資源的持有狀態(tài)簽發(fā)證書,完成路由源的授權(quán).同時(shí),利用證書ASPolicyCert 將鄰間關(guān)系簽發(fā)后進(jìn)行廣播.通過(guò)建立的全局視圖,任意路由器可對(duì)AS_PATH 信息進(jìn)行驗(yàn)證,以此對(duì)BGP 通告進(jìn)行過(guò)濾.
IRV (interdomain routing validation)[5]方案最大的特征是每個(gè)AS 掛載一臺(tái)驗(yàn)證服務(wù)器,通過(guò)提供該AS歷史通告記錄的驗(yàn)證查詢,確保全網(wǎng)路由信息“可查”和“可信”.
1.2.1 RPKI 體系架構(gòu)
RPKI (resource public key infrastructure,資源公鑰基礎(chǔ)設(shè)施)是一種基于PKI 體系的路由資源保護(hù)方案,截至2021年1月,全球RPKI 部署率已達(dá)27.2%[6].RPKI 工作架構(gòu)如圖1,資源持有者通過(guò)資源證書的層級(jí)簽發(fā)來(lái)進(jìn)行號(hào)碼資源的分配,資料庫(kù)負(fù)責(zé)證書的存儲(chǔ),依賴方負(fù)責(zé)授權(quán)信息的驗(yàn)證與推送,有效的授權(quán)信息將指導(dǎo)BGP 環(huán)境號(hào)碼資源的認(rèn)證.
1.2.2 BGPSec
BGPSec (border gateway protocol security)[7]方案借鑒了上述sBGP 方案中的簽名思路,利用RPKI 體系中的路由器證書及其密鑰信息,對(duì)鏈路AS 信息進(jìn)行簽名.其中,路徑簽名信息循環(huán)嵌套,通過(guò)BGP Update 數(shù)據(jù)包進(jìn)行傳遞.前AS 對(duì)包含后AS 號(hào)碼的路徑信息進(jìn)行簽名,表示對(duì)后一AS 進(jìn)行通告授權(quán),嚴(yán)格確保AS_PATH屬性中的信息不被篡改.
BGPSec 是一種嚴(yán)格的路徑保護(hù)方案,其高頻率的密碼學(xué)計(jì)算,給路由器的硬件帶來(lái)極大的算力考驗(yàn),同時(shí)也降低了BGP的實(shí)際收斂速率,該方案難以在實(shí)際環(huán)境中進(jìn)行大規(guī)模部署.
同時(shí)在身份未知的網(wǎng)絡(luò)環(huán)境中,BGPSec 無(wú)法對(duì)AS_PATH“合理性”做出驗(yàn)證,因此無(wú)法阻止路由泄露的發(fā)生.在性能方面,BGPSec 逐跳簽名引入了大量的計(jì)算開銷與內(nèi)存消耗.對(duì)于兩者開銷瓶頸,學(xué)術(shù)界存在一些優(yōu)化思路.例如通過(guò)使用簽名聚合簽名的方法減少簽名的傳遞負(fù)載與計(jì)算消耗[8],或者使用新型密碼學(xué)進(jìn)行公鑰的傳遞[9],以減少證書存儲(chǔ)的內(nèi)存消耗等.
1.2.3 Path-End
2016年,基于RPKI 體系,Cohen 提出了Path-End[10]方案,Path-End 方案繼承路由源認(rèn)證的同時(shí)對(duì)路徑驗(yàn)證進(jìn)行了拓展,使用RPKI 密鑰對(duì)源頭與鄰居的有效連接聲明進(jìn)行簽發(fā).與“嚴(yán)格”的BGPSec 方案相比,Path-End 只對(duì)AS_PATH 末尾信息進(jìn)行驗(yàn)證,確保離源最近一跳路徑的合理性.通過(guò)簡(jiǎn)單的驗(yàn)證規(guī)則,Path-End 能同時(shí)抵御路由源劫持與最后一跳路徑篡改引發(fā)的劫持,帶來(lái)不錯(cuò)的安全收益.但是Path-End 無(wú)法對(duì)離源一跳以上及其復(fù)雜的路徑篡改進(jìn)行有效識(shí)別.
1.2.4 ASPA
沿襲于soBGP 簽發(fā)鄰間關(guān)系的思路,2018年IETF SIDROPS 工作組提出了一種ASPA (autonomous system provider authorization)的路徑驗(yàn)證方案草案[11],并進(jìn)行了多次版本迭代.ASPA 同樣基于RPKI 體系,具體思路如下:
(1)ASPA 整體基于“Valley-Free” (無(wú)谷模型)[12],即認(rèn)為所有AS 都遵守基本的路由轉(zhuǎn)發(fā)策略,在C2P、P2P和P2C 三種“合法”商業(yè)關(guān)系中進(jìn)行傳遞.如圖2所示,AS1 發(fā)出的路由通告途徑AS2、AS3,到達(dá)AS4,隨后再通過(guò)AS4 發(fā)往下游.圖中ASPA 數(shù)據(jù)二元組AS1:{AS2}表示為AS2 是AS1的provider.
(2)ASPA 認(rèn)為在進(jìn)行路由通告的過(guò)程中,需要重點(diǎn)保護(hù)上游部分,防止錯(cuò)誤的信息傳遞給大型運(yùn)營(yíng)商,造成大規(guī)模的路由泄露等安全事件.
(3)AS 發(fā)起前綴通告,開始方向均指向上游,即路徑中的轉(zhuǎn)發(fā)關(guān)系一定從C2P 或者P2P 開始,當(dāng)通告到達(dá)最大的一個(gè)provider 之后,轉(zhuǎn)向下游傳遞,一旦轉(zhuǎn)向下游之后不會(huì)再轉(zhuǎn)向上游.
(4)解析Update 報(bào)文中的AS_PATH 屬性,得到AS_SEQUENCE 信息后,ASPA 方案通過(guò)一個(gè)單位為2的滑動(dòng)窗口對(duì)AS_PATH 信息進(jìn)行校驗(yàn).在驗(yàn)證過(guò)程中,檢索相應(yīng)ASPA 對(duì)象,對(duì)路徑轉(zhuǎn)發(fā)狀態(tài)進(jìn)行判斷,并根據(jù)轉(zhuǎn)發(fā)狀態(tài)對(duì)路由信息進(jìn)行驗(yàn)證過(guò)濾.
ASPA 巧妙地利用RPKI 體系實(shí)現(xiàn)了路徑的驗(yàn)證,結(jié)合ROA 路由源驗(yàn)證,ASPA 能夠很大程度上限制各類路由泄露的發(fā)生.區(qū)別于BGPSec,ASPA 能夠?qū)φ麄€(gè)路徑屬性進(jìn)行“合法”校驗(yàn),不僅對(duì)AS 之間的可達(dá)性進(jìn)行驗(yàn)證,還對(duì)其中轉(zhuǎn)發(fā)關(guān)系的“合法性”進(jìn)行驗(yàn)證.其次,ASPA的驗(yàn)證過(guò)程不產(chǎn)生密碼學(xué)的計(jì)算,即對(duì)路由器的硬件性能無(wú)過(guò)高要求.同時(shí)在實(shí)際部署中,ASPA能夠?qū)崿F(xiàn)增量部署.
但是對(duì)于路徑篡改問題,ASPA 并沒有提供完整的解決方案.ASPA 相當(dāng)于將靜態(tài)的拓?fù)潢P(guān)系進(jìn)行發(fā)布,但是在實(shí)際BGP 環(huán)境中,實(shí)時(shí)通告的最終路徑,均受到復(fù)雜的路由策略與決策的影響.ASPA 完全基于AS粒度對(duì)通告路徑進(jìn)行檢測(cè),存在以下缺陷:
ASPA 對(duì)路徑的限制基于AS 粒度,然而ip 前綴在廣播的過(guò)程中存在多條潛在路徑,路由器只對(duì)最優(yōu)路徑進(jìn)行廣播.故在ip 廣播的過(guò)程中,AS 粒度級(jí)別的路徑限制并不能對(duì)AS_PATH 屬性進(jìn)行百分百的保護(hù).由于ASPA 提供了全局AS 拓?fù)湟晥D,在缺乏密碼學(xué)保護(hù)的情況下,任何一個(gè)路由器可以根據(jù)數(shù)據(jù)集偽造出能通過(guò)驗(yàn)證的路徑,繞過(guò)ASPA 驗(yàn)證完成欺騙.其次,隨著路徑長(zhǎng)度的增加,能夠產(chǎn)生多條“合法”路徑的可能性越大,因此被篡改的幾率也會(huì)隨之增加.
圖3描述了路徑篡改的可能性,圖中ASX,ASY,ASZ,ASP 分別代表號(hào)碼為X,Y,Z,P的自治域邊界路由器.ASP 發(fā)出一個(gè)前綴通告p,該條前綴通告通過(guò)不同路徑到達(dá)ASY,根據(jù)路由策略與路由優(yōu)選后,將該通告發(fā)送給ASZ,ASZ 收到包之后,將包的AS_PATH 屬性進(jìn)行有意合成篡改,此舉能夠繞過(guò)ASPA的檢測(cè).
圖4提供了一個(gè)前綴劫持的實(shí)際案例,ASX 同樣作為說(shuō)謊者,將路徑屬性修改成了較短的路徑1,由于ASX 偽造的路徑1 比較短,ASX 便成功劫持了前綴f1的流量.
AS_PATH的驗(yàn)證方案中,BGPSec的簽名操作實(shí)際上引入了用以“比對(duì)”的路徑“副本”,在路由進(jìn)行通告時(shí)帶上簽名,路由器在收到通告時(shí)進(jìn)行簽名的驗(yàn)證等同于“副本”的“比對(duì)”,抵御信息篡改導(dǎo)致的安全攻擊.基于ASPA 提供的方案,我們提出了一種間隔簽名,并只做一次簽名驗(yàn)證的路徑保護(hù)方案.
如圖5,改進(jìn)方案基于RPKI,密鑰體系沿用RFC8635[13]的方案,公私密鑰對(duì)可由管理員生成或者路由器本地生成,隨后向RPKI 系統(tǒng)中對(duì)應(yīng)組織請(qǐng)求生成攜帶公鑰的路由器證書(router-cert),發(fā)布于全球RPKI 倉(cāng)庫(kù).其中路由器證書屬于RPKI終端EE 證書,攜帶AS 號(hào)碼資源,資源由資源持有者進(jìn)行層次授權(quán),并由相應(yīng)CA 進(jìn)行管理.
RP 依賴方服務(wù)器對(duì)RPKI 資料庫(kù)進(jìn)行同步,并按層級(jí)進(jìn)行一致性檢查與資源授權(quán)校驗(yàn)后進(jìn)行本地緩存,之后定期將合法數(shù)據(jù)推送給路由器.路由通告?zhèn)鬟f過(guò)程中,路由器使用私鑰產(chǎn)生簽名,驗(yàn)證者根據(jù)SKI 信息查找對(duì)應(yīng)路由器證書進(jìn)行簽名驗(yàn)證.
當(dāng)路徑簽名內(nèi)容包含下一個(gè)AS 時(shí),后續(xù)第一個(gè)AS 受到簽名限制,無(wú)法對(duì)路徑信息進(jìn)行篡改.而引入靜態(tài)的有效數(shù)據(jù)例如ASPA 數(shù)據(jù)后,能夠延長(zhǎng)簽名的限制半徑,則可考慮適度降低簽名的產(chǎn)生頻率.
如圖6,在“Multi-Homing”[1]的場(chǎng)景中,customer通過(guò)不止一個(gè)provider 連接互聯(lián)網(wǎng).其中,customer 將其路由前綴向其provider 進(jìn)行通告,并按照商業(yè)關(guān)系制定實(shí)際導(dǎo)出策略,即遵循“Valley-Free”(無(wú)谷模型)[12].同時(shí)為滿足一部分性能指標(biāo),customer 可給不同provider制定不同的轉(zhuǎn)發(fā)策略.以達(dá)到降低鏈路延遲、提高連接可靠性、流量負(fù)載均衡等目的.
在添加簽名機(jī)制之后,因數(shù)據(jù)包存在路徑簽名信息,故在未實(shí)際竊取數(shù)據(jù)包的情況下,攻擊者無(wú)法憑空進(jìn)行數(shù)據(jù)包的偽造.可知具體前綴的路徑?jīng)Q策為ASPA數(shù)據(jù)的子集.因此將ASPA 用于路徑驗(yàn)證存在以下情況如圖7,AS100 路徑簽名后將ip 數(shù)據(jù)包轉(zhuǎn)發(fā)給AS200,同時(shí),AS200 對(duì)應(yīng)的ASPA 二元組數(shù)據(jù)集有AS400 與AS300,其中AS300 與AS400為不同運(yùn)營(yíng)商,同時(shí)為AS200 提供服務(wù).因?yàn)槭褂貌煌霓D(zhuǎn)發(fā)策略,AS200的一部分前綴只向AS400 轉(zhuǎn)發(fā).但是攻擊者AS300 通過(guò)網(wǎng)絡(luò)嗅探等方式,獲取到該前綴的數(shù)據(jù)包,可進(jìn)行數(shù)據(jù)包的重放轉(zhuǎn)發(fā),污染后序AS的路由表.
在此攻擊場(chǎng)景中,AS400 與AS300 作為ISP 競(jìng)爭(zhēng)者,同時(shí)為customer 提供連接互聯(lián)網(wǎng)服務(wù),其重放攻擊目的通常僅出于流量計(jì)費(fèi)利益,此類基于競(jìng)爭(zhēng)的攻擊對(duì)全局互聯(lián)網(wǎng)危害具有局部性,并且易被customer 察覺.同時(shí),根據(jù)caida relationship[14]數(shù)據(jù)分析可得,只有一個(gè)provider的customer 數(shù)量占比接近40%.在不考慮此種攻擊的情況下,可以直接使用ASPA 數(shù)據(jù)作為路由決策的驗(yàn)證數(shù)據(jù).
ASPA 數(shù)據(jù)中,授權(quán)關(guān)系不存在傳遞性,即ASPA的授權(quán)關(guān)系是一對(duì)一的,無(wú)法通過(guò)多個(gè)ASPA 數(shù)據(jù)拼接進(jìn)行傳遞,則可知一次簽名加上一次ASPA 授權(quán)驗(yàn)證,簽名頻率最多可減為隔跳一次.可知在基于ASPA數(shù)據(jù)的隔跳簽名的機(jī)制中,有以下特性:
1)保證路徑內(nèi)容合法.ASPA 二元組數(shù)據(jù)攜帶了兩類基本信息,其一為二元組之間的連接關(guān)系.其二兩者存在商業(yè)關(guān)系.利用第一類信息,可對(duì)任意兩個(gè)AS之間連接性進(jìn)行驗(yàn)證.利用第二類信息,能夠路徑內(nèi)容合理性,即轉(zhuǎn)發(fā)與決策過(guò)程的合法性進(jìn)行校驗(yàn).
2)防止路徑篡改.ASPA 機(jī)制下,長(zhǎng)度大于一的路徑存在篡改的隱患.通告?zhèn)鬟f過(guò)程中,其中每個(gè)AS 均知曉通告AS_PATH和鄰間者AS 信息.在隔跳簽名操作下,簽名內(nèi)容能夠覆蓋所有的AS 號(hào)碼.其中,簽名內(nèi)容直接包含后續(xù)第1 個(gè)AS.而對(duì)于后續(xù)第2 個(gè)AS 來(lái)說(shuō),已無(wú)法對(duì)簽名包含的歷史路徑進(jìn)行修改,而其與第一個(gè)AS 連接合理性可由ASPA 二元組給出證明.則可知簽名的最大有效半徑為2,簽名者間距最長(zhǎng)可為2.同時(shí),為防止簽名者緩存路徑后進(jìn)行簽名重放偽造,簽名信息加入可ip 前綴信息.
如圖8,對(duì)于簽名者AS3 來(lái)說(shuō),存在鄰居AS8和AS4,當(dāng)通告發(fā)送至不同鄰居時(shí),AS3 針對(duì)不同出口AS 進(jìn)行簽名.path1 中,當(dāng)通告途徑AS4 轉(zhuǎn)發(fā)時(shí),后續(xù)AS 通過(guò)簽名可證AS_PATH 中AS4 真實(shí)性,同時(shí)在ASPA 提供的數(shù)據(jù)中,能檢索到(AS4,AS5)、(AS4,AS6)和(AS4,AS7)二元組,可知,AS5、AS6、AS7 均與AS4 存在有效連接.則AS3 所提供的路徑簽名能夠?qū)Π霃綖? 以內(nèi)的AS 做出路徑篡改的限制.
對(duì)于兩跳之外的AS,如AS5、AS6、AS7的后續(xù)鄰居,AS3的簽名信息無(wú)法對(duì)后續(xù)路徑內(nèi)容作出限制.同樣的,對(duì)于另外一條路徑path2{…AS3 AS8 AS4…}來(lái)說(shuō),AS5、AS6和AS7 均在半徑兩跳之外,此時(shí),需要AS4 進(jìn)行后續(xù)簽名補(bǔ)充,對(duì)半徑為2 以內(nèi)的AS 進(jìn)行限制.
根據(jù)上述原則,如圖9,BGP 協(xié)議Update 路徑屬性中增加可選過(guò)渡的屬性“PATH_SIGNATURE”,該屬性保存ip 前綴及其AS_PATH 屬性對(duì)應(yīng)的簽名和簽名者SKI 信息,設(shè)置該屬性緩存隊(duì)列長(zhǎng)度為2,即最多保存兩個(gè)簽名信息.假設(shè)ASPA 數(shù)據(jù)的簽發(fā)與改進(jìn)機(jī)制部署同步,即可通過(guò)查詢?cè)揂S 對(duì)應(yīng)ASPA 數(shù)據(jù)個(gè)數(shù)是否為零來(lái)判斷部署情況,則在ASPA 數(shù)據(jù)簽發(fā)率較高的情況下,改進(jìn)方案如下.
1)簽名.如算法1 描述,在BGP 通告轉(zhuǎn)發(fā)過(guò)程中,進(jìn)行路徑信息的隔跳簽名.同時(shí)簽名緩存隊(duì)列只保留兩個(gè)最新的簽名信息.通過(guò)第2.2 節(jié)所述隔跳簽名原理,該簽名方案能夠?qū)⒍ㄆ趯S_PATH 信息以簽名副本的形式進(jìn)行保存,并且簽名者同時(shí)受到上一個(gè)簽發(fā)者簽名信息制約,可保證每一個(gè)簽名的內(nèi)容合理性.在全局部署的情況下,簽名者次序?yàn)檫B續(xù)奇數(shù).
算法1.AS_PATH 簽名算法1) 路由源AS 發(fā)起ip 前綴通告時(shí)產(chǎn)生簽名,跳轉(zhuǎn)步驟5.2) 解析路徑屬性AS_PATH,遍歷AS 號(hào),獲取AS 號(hào)碼的次序索引.3)如果次序?yàn)槠鏀?shù),則將即將轉(zhuǎn)發(fā)的AS 編號(hào)拼接AS_PATH 作為數(shù)字簽名的摘要內(nèi)容,利用私鑰進(jìn)行簽名,跳轉(zhuǎn)步驟5).4) 如果次序不為奇數(shù),判定為非簽名者,則直接返回.5) 取簽名隊(duì)列塊部分,將產(chǎn)生的簽名進(jìn)隊(duì)操作.6) 如果隊(duì)列長(zhǎng)度大于2,則出隊(duì)至長(zhǎng)度為2為止.
2)驗(yàn)證.如算法2 描述,每一個(gè)AS 接收到BGP 通告時(shí),將AS_PATH 信息和PATH_SIGNATURE 信息進(jìn)行解析,首先對(duì)AS_PATH 進(jìn)行ASPA的常規(guī)檢查,判斷整條AS_PATH的轉(zhuǎn)發(fā)關(guān)系是否合法.后對(duì)AS_PATH信息遍歷,匹配到最新兩個(gè)簽名者的AS 號(hào)及其簽名,使用簽名攜帶的SKI 信息匹配到對(duì)應(yīng)的路由器證書,對(duì)有效驗(yàn)證半徑內(nèi)的簽名信息PATH_SIGNATURE和AS_PATH 明文進(jìn)行密碼學(xué)驗(yàn)證,返回驗(yàn)證結(jié)果.
算法2.AS_PATH 簽名驗(yàn)證算法1)解析得到AS_PATH,并記錄索引,根據(jù)ASPA 數(shù)據(jù)集,統(tǒng)計(jì)路徑中已部署AS 序列;2)遍歷進(jìn)行常規(guī)ASPA 校驗(yàn),校驗(yàn)狀態(tài)為invalid 直接跳轉(zhuǎn)步驟8;3)判斷已部署AS 序列中,上一個(gè)AS 是否為簽名者,是則跳轉(zhuǎn)步驟4,否跳轉(zhuǎn)步驟5;4) 獲取隊(duì)列首部簽名,截取取倒數(shù)第2 個(gè)簽名者索引后一位的AS_PATH 信息,跳轉(zhuǎn)步驟6;5) 獲取隊(duì)列尾部簽名,獲取全局AS_PATH 信息,跳轉(zhuǎn)步驟6;6) 根據(jù)SKI 匹配路由器證書;7) 將ip 前綴與AS_PATH 信息拼接,進(jìn)行簽名驗(yàn)證;8)返回校驗(yàn)結(jié)果.
2.4.1 收斂時(shí)間
建立簡(jiǎn)單的BGP 收斂拓?fù)鋱DG(V,E),其中節(jié)點(diǎn)和邊集合分別表示為V={v1,v2,v3,…,vn},E={e1,e2,e3,…,en},其中,定義路徑集合Ri→j(G)={{vi,vi+1,…,vj–1,vj},…}表示所有從節(jié)點(diǎn)vi到節(jié)點(diǎn)vj合法路徑,路徑ri→j∈Ri,j(G)表示集合中最長(zhǎng)路徑.
節(jié)點(diǎn)vi發(fā)起路由通告,當(dāng)其余節(jié)點(diǎn)均接收到該通告,并作出相應(yīng)一致性處理后,認(rèn)為vi發(fā)起的路由通告全局收斂.可知收斂時(shí)長(zhǎng)為式(1),Pvi表示vi節(jié)點(diǎn)對(duì)數(shù)據(jù)包處理的總體時(shí)間開銷,包括路由表項(xiàng)定位與處理更新及其出口數(shù)據(jù)處理時(shí)間開銷,Tl為通信鏈路時(shí)間開銷.則可知ASPA 與Path-End 開銷為式(2),BGPSec方案總體時(shí)間開銷為式(3),改進(jìn)方案時(shí)間開銷為式(4),其中Tsign_path與Tvalidate_path分別為進(jìn)行一次數(shù)字簽名與簽名驗(yàn)證的時(shí)長(zhǎng),可知Tsign_path與Tvalidate_path系數(shù)增長(zhǎng)趨勢(shì)如圖10和圖11.
假設(shè)最長(zhǎng)傳播路徑長(zhǎng)度為n,對(duì)于BGPSec 來(lái)說(shuō),可知密碼計(jì)算消耗主要體現(xiàn)在簽名驗(yàn)證部分.其總體簽名次數(shù)為n,簽名驗(yàn)證次數(shù)為n(n–1)/2,相比之下,改進(jìn)方案只有奇數(shù)次序路由器產(chǎn)生簽名,故簽名總次數(shù)為n/2.驗(yàn)簽的次數(shù)為n.可知收斂時(shí)間性能方面,改進(jìn)方案優(yōu)于BGPSec.
而對(duì)于只考慮路徑“合理”校驗(yàn)的ASPA 與End-Path 來(lái)說(shuō),不涉及到密碼計(jì)算,故整個(gè)過(guò)程簽名與驗(yàn)簽次數(shù)均為0.
可知全球AS_PATH 長(zhǎng)度平均為4.3[15],改進(jìn)方案中,大部分路由通告從傳播到收斂,實(shí)際只需要進(jìn)行一到兩次的簽名,簽名驗(yàn)簽次數(shù)也平均為3 次,相比較BGPSec的消耗而言,改進(jìn)方案在原ASPA 方案基礎(chǔ)上引入的時(shí)間消耗有限.
2.4.2 空間消耗
內(nèi)存消耗.考慮路由器RIB 表隨簽名增加的內(nèi)存消耗.可知RIB 中路徑屬性的內(nèi)存消耗與表項(xiàng)數(shù)存在線性關(guān)系,單個(gè)表項(xiàng)內(nèi)存消耗也與簽名數(shù)量存在線性關(guān)系,可知,改進(jìn)方案中,路由器需要處理的簽名數(shù)量少于BGPSec,在路徑屬性帶來(lái)的內(nèi)存消耗方面,改進(jìn)方案也小于BGPSec.
通信負(fù)載消耗.BGPSec 方案通過(guò)直接修改AS_PATH 信息來(lái)負(fù)載簽名信息,改進(jìn)方案則通過(guò)增加路徑屬性來(lái)負(fù)載簽名信息.在簽名算法一致的情況下,BGPSec需要增加路徑長(zhǎng)度等量的簽名信息,而改進(jìn)方案只保留長(zhǎng)度為2的簽名緩存隊(duì)列,故改進(jìn)方案通信負(fù)載消耗也小于BGPSec.
ASPA 與End-Path 均未對(duì)BGP 進(jìn)行修改,無(wú)需增加額外的通信負(fù)載與路由表負(fù)載,故在與上述兩種方案對(duì)比之下,改進(jìn)方案引入了相對(duì)有限的空間消耗.
假設(shè)絕大多數(shù)AS 都完成了ASPA 部署,即ASPA數(shù)據(jù)簽發(fā)率足夠高,則改進(jìn)方案對(duì)路徑安全保護(hù)性能分析如下:
1)路由泄露:該方案基于ASPA 改進(jìn),在ASPA 驗(yàn)證結(jié)束后才進(jìn)行路徑簽名驗(yàn)證,使用ASPA 原生數(shù)據(jù)獲得AS 之間的商業(yè)關(guān)系,可以識(shí)別1、2、3、4 型路由泄露[4],結(jié)合ROV,可以識(shí)別5、6 型路由泄露.改進(jìn)方案集成了路由泄露檢測(cè)的功能.有效地保護(hù)部署者,防止部署者受到路由泄露的危害.
2)路徑刪除:路徑簽名中,已經(jīng)對(duì)歷史簽名進(jìn)行簽名,攻擊者對(duì)AS_PATH 屬性進(jìn)行惡意刪除將會(huì)導(dǎo)致簽名驗(yàn)證不通過(guò).因此路徑刪除直接導(dǎo)致通告被丟棄.
3)路徑增加:與路徑刪除攻擊一致,構(gòu)造簽名信息時(shí),簽名代表一定程度上可以視為歷史版本的憑證.一旦對(duì)AS_PATH 屬性進(jìn)行惡意增加,需要同時(shí)增加簽名信息,或者修改簽名信息,否則路徑簽名驗(yàn)證不通過(guò).因此惡意增加路徑信息也被成功限制.
4)路徑合成:在路徑偽造的同時(shí),也需對(duì)路徑信息的數(shù)字簽名進(jìn)行偽造,否則無(wú)法通過(guò)驗(yàn)證.私鑰只有簽名者自己持有,其余AS 路由器無(wú)法修改AS_PATH的簽名信息.由于ASPA 數(shù)據(jù)驗(yàn)證的存在,且連續(xù)兩個(gè)簽名信息的明文存在交集,故任一AS 均受到上一個(gè)簽名者AS的限制,無(wú)法進(jìn)行路徑的合成偽造.
原生ASPA 方案使用轉(zhuǎn)發(fā)關(guān)系進(jìn)行路徑驗(yàn)證,能夠有效阻止路由泄露的發(fā)生,改進(jìn)方案繼承了ASPA方案的優(yōu)點(diǎn)的基礎(chǔ)上,引入了周期性的簽名,增強(qiáng)了其安全性能.
相應(yīng)的,BGPSec 方案使用簽名嵌套,因此密碼計(jì)算消耗較大,并且由于轉(zhuǎn)發(fā)關(guān)系的未知,BGPSec 方案無(wú)法阻止路由泄露與蟲洞攻擊的發(fā)生.
Path-End 校驗(yàn)規(guī)則簡(jiǎn)單,只能對(duì)簡(jiǎn)單的源頭一跳路徑進(jìn)行有效驗(yàn)證,無(wú)法對(duì)復(fù)雜的路徑篡改進(jìn)行有效識(shí)別.
四者的具體優(yōu)缺點(diǎn)對(duì)比見表1.
表1 4 種路徑驗(yàn)證方案的比較
BGP 路由器處理路由通告的流程如圖12,路由器從鄰居接收到通告數(shù)據(jù)包,路由信息經(jīng)過(guò)策略決策和路徑優(yōu)選后,將被存入本地RIB 表中,隨后路由器將最優(yōu)路徑轉(zhuǎn)發(fā)給鄰居AS,完成路由信息的傳達(dá).
近年來(lái)容器虛擬化技術(shù)逐漸興起,利用容器虛擬化技術(shù),可在有限的資源里進(jìn)行資源擴(kuò)展,使物理機(jī)器實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備的虛擬.利用虛擬網(wǎng)絡(luò),可對(duì)節(jié)點(diǎn)交互進(jìn)行模擬,進(jìn)行網(wǎng)絡(luò)仿真實(shí)驗(yàn).
為模擬路由器的實(shí)時(shí)響應(yīng),該實(shí)驗(yàn)使用golang 語(yǔ)言輕量級(jí)的goroutine 編寫服務(wù),整體架構(gòu)如圖13,仿照BGP 鄰間協(xié)商,該實(shí)驗(yàn)?zāi)MAS 路由器建立連接,并且將節(jié)點(diǎn)拓展到其余容器實(shí)例,進(jìn)行BGP Update 仿真模擬.節(jié)點(diǎn)部署完畢,handle 模塊將采集的通告信息進(jìn)行同步發(fā)送,同時(shí)設(shè)置路由通告計(jì)數(shù)器,根據(jù)計(jì)數(shù)器數(shù)值判定收斂狀態(tài).其中,每一個(gè)路由器根據(jù)通告路徑信息可知自己的位置索引,根據(jù)對(duì)路徑屬性不同處理方案完成路由通告的解析與驗(yàn)證,具體實(shí)驗(yàn)環(huán)境參數(shù)如表2.
表2 實(shí)驗(yàn)環(huán)境
全網(wǎng)BGP 路由器實(shí)時(shí)產(chǎn)生路由通告,是一個(gè)動(dòng)態(tài)收斂的過(guò)程.該實(shí)驗(yàn)使用BGPStream 項(xiàng)目收集的3 個(gè)收集器的update 數(shù)據(jù)集.采用最近的12月1日的數(shù)據(jù)集.全網(wǎng)AS 數(shù)量大約6 萬(wàn)個(gè),經(jīng)過(guò)數(shù)據(jù)清洗操作后,該數(shù)據(jù)集合剩下3 萬(wàn)個(gè)AS 接近500 萬(wàn)條路由通告.
為描述簽名數(shù)量導(dǎo)致的收斂速率的差異,在仿真邏輯與數(shù)據(jù)一致的基礎(chǔ)上,分別在1 千、10 千、100千、500 千、1 000 千、2 000 千、2 500 千、3 000千、3 500 千、4 000 千條前綴通告基礎(chǔ)上進(jìn)采樣行測(cè)量,進(jìn)行收斂時(shí)間對(duì)比,同時(shí),在數(shù)據(jù)處理轉(zhuǎn)發(fā)的過(guò)程中,對(duì)幾個(gè)連接數(shù)較大的AS 進(jìn)行簽名處理數(shù)量的統(tǒng)計(jì).
在考慮全局部署的情況下,實(shí)驗(yàn)結(jié)果如圖14與圖15.據(jù)圖14收斂時(shí)長(zhǎng)對(duì)比可知,改進(jìn)方案場(chǎng)景下的收斂時(shí)長(zhǎng)明顯短于BGPSec 場(chǎng)景下的收斂時(shí)長(zhǎng),并且隨著網(wǎng)絡(luò)拓?fù)湟?guī)模的增加,前綴數(shù)量的增多,收斂時(shí)長(zhǎng)的差距會(huì)愈加明顯.相比之下,優(yōu)化方案在引入少量簽名之后,收斂時(shí)長(zhǎng)在原有ASPA 機(jī)制的基礎(chǔ)上增長(zhǎng)有限.
據(jù)圖15可知,在相同網(wǎng)絡(luò)拓?fù)渲?對(duì)于路由器來(lái)說(shuō),改進(jìn)方案簽名緩存數(shù)量遠(yuǎn)少于BGPSec,根據(jù)上文推測(cè)的簽名數(shù)量與內(nèi)存消耗的線性關(guān)系,可知改進(jìn)方案簽名緩存的內(nèi)存消耗也明顯小于BGPSec,高于原生ASPA 與Path-End 機(jī)制.
在保證路由源認(rèn)證的前提下,路徑篡改行為主要包括路徑內(nèi)容的增加與刪除.根據(jù)攻擊者對(duì)全局路由拓?fù)涞恼莆涨闆r,本實(shí)驗(yàn)把篡改分為有意與隨機(jī)兩類.其中有意篡改為攻擊者在對(duì)路徑信息進(jìn)行刪除與增加后,路徑仍然“合法”,仍能滿足“Valley-Free”模型[12];而隨機(jī)篡改則是對(duì)路徑內(nèi)容進(jìn)行隨機(jī)添加與刪除,篡改后的路徑不構(gòu)成有效鏈路,即篡改部分與原有部分節(jié)點(diǎn)間無(wú)直接物理連接.
該實(shí)驗(yàn)選取上述收集器收集的真實(shí)路由路徑信息與relationship 靜態(tài)路由拓?fù)湫畔14].在真實(shí)路徑信息的基礎(chǔ)上,進(jìn)行有意與隨機(jī)的路徑增刪篡改.在攻擊者序列后選取同樣的AS 作為觀測(cè)點(diǎn),統(tǒng)計(jì)在多種方案下觀測(cè)點(diǎn)識(shí)別篡改行為的次數(shù),并在相同拓?fù)涞那闆r下進(jìn)行了多次試驗(yàn).平均數(shù)值統(tǒng)計(jì)如圖16.
通過(guò)圖16可知,BGPSec 方案是“嚴(yán)格”的方案,在全局部署的情況下,BGPSec 路徑保護(hù)力度最強(qiáng),但隨著部署率降低,即一旦路徑中存在“斷鏈”的情況,BGPSec保護(hù)失效,性能便會(huì)驟降.ASPA 方案根據(jù)轉(zhuǎn)發(fā)關(guān)系進(jìn)行驗(yàn)證,所以有意篡改的路徑能夠繞過(guò)ASPA的驗(yàn)證,因此即使在全量部署的情況下,ASPA 也無(wú)法對(duì)所有篡改行為進(jìn)行都有效識(shí)別.Path-End 只對(duì)離源頭最近一跳路徑進(jìn)行驗(yàn)證,故其余復(fù)雜篡改均無(wú)法進(jìn)行有效識(shí)別.
改進(jìn)方案吸納了ASPA 與BGPSec 方案的優(yōu)勢(shì),在保證路徑合理的同時(shí),通過(guò)簽名提升了路徑篡改限制粒度,故改進(jìn)方案安全性能最強(qiáng).同時(shí)改進(jìn)方案也盡力追求對(duì)路徑“相對(duì)嚴(yán)格”的保護(hù).故改進(jìn)方案在部署率為1的情況下,改進(jìn)方案安全性能接近于BGPSec.
AS_PATH 是BGP 協(xié)議中關(guān)鍵的路徑屬性之一,路徑驗(yàn)證也一直是路由安全領(lǐng)域研究的熱點(diǎn),本文開始對(duì)路徑驗(yàn)證現(xiàn)有解決思路及缺陷進(jìn)行了闡述,并提出了一種RPKI 體系下的路徑保護(hù)改進(jìn)方案.改進(jìn)方案將授權(quán)數(shù)據(jù)與路徑簽名進(jìn)行結(jié)合,同時(shí)繼承了ASPA與BGPSec 優(yōu)點(diǎn),能對(duì)路徑信息進(jìn)行有效保護(hù),實(shí)驗(yàn)表明,在引入相對(duì)有限的時(shí)間與空間消耗的情況下,改進(jìn)方案在不同部署率均能對(duì)路徑進(jìn)行更為有效的保護(hù).RPKI的時(shí)代已經(jīng)來(lái)臨,如何利用RPKI 體系對(duì)BGP 內(nèi)容進(jìn)行保護(hù)與驗(yàn)證,仍有很大的探索與研究空間.