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