賈 佳, 延志偉, 耿光剛, 金 鍵
?
一種改進(jìn)的BGP路由源認(rèn)證機(jī)制①
賈 佳1,2, 延志偉2, 耿光剛2, 金 鍵1
1(中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心, 北京 100190)2(中國互聯(lián)網(wǎng)絡(luò)信息中心互聯(lián)網(wǎng)域名管理技術(shù)國家工程實(shí)驗(yàn)室, 北京 100190)
資源公鑰基礎(chǔ)設(shè)施(Resource Public Key Infrastructure, RPKI)是當(dāng)前用于保護(hù)互聯(lián)網(wǎng)碼號資源分配真實(shí)性的技術(shù). 作為一種支撐域間路由安全的體系, 它解決了邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol, BGP)缺乏路由源認(rèn)證的問題. 然而當(dāng)前RPKI體系中的依賴方(Relying Party, RP)與路由器數(shù)據(jù)同步機(jī)制可能會導(dǎo)致路由源授權(quán)(Route Originate Authorization, ROA)信息缺乏真實(shí)性和有效性, 并且不斷查詢緩存列表會帶給路由器很大的性能負(fù)載. 據(jù)此, 本文提出一種改進(jìn)的BGP路由源認(rèn)證方案, 發(fā)送端路由器實(shí)時(shí)申請存儲在RP中的ROA證書, 將其附加到BGP update報(bào)文中進(jìn)行傳輸, 以待對等端路由器申請證書公鑰對證書進(jìn)行驗(yàn)證并完成路由源認(rèn)證功能. 該方案將原來周期性更新路由器緩存列表機(jī)制改為路由器實(shí)時(shí)申請認(rèn)證機(jī)制, 有效解決了RP與路由器數(shù)據(jù)同步可能導(dǎo)致的ROA存在錯(cuò)誤的問題, 降低路由器查詢緩存列表造成的路由器運(yùn)行負(fù)載. 此外, 本文通過Quagga仿真實(shí)驗(yàn)表明該方案具有可行性, 并對該方案的適用情形進(jìn)行了具體分析.
邊界網(wǎng)關(guān)協(xié)議; 資源公鑰基礎(chǔ)設(shè)施; 路由源授權(quán); 安全機(jī)制; 前綴劫持
BGP協(xié)議是當(dāng)前互聯(lián)網(wǎng)中唯一的域間路由協(xié)議, 其本身存在的安全漏洞會使整個(gè)互聯(lián)網(wǎng)面臨嚴(yán)峻的安全威脅[1-3], 比如路由劫持攻擊[4-6]、路由泄露[7]等. 根據(jù)BGP協(xié)議規(guī)范, 路由器通過發(fā)送update報(bào)文來通告其他路由器自己發(fā)生變更的路由信息, 并且對接收到的任何update報(bào)文都采取無條件信任的處理機(jī)制, 這種機(jī)制就給了攻擊者可乘之機(jī).
如圖1所示, 路由器R1向R2發(fā)送的update報(bào)文中攜帶的IP地址10.0.0.0/24并不屬于R1, 而此IP地址真正的持有者R4也通過R3向R2發(fā)送路由信息. R2會收到兩個(gè)針對該IP地址的路由通告update報(bào)文, 其AS_PATH分別為1和3 4. 根據(jù)AS_PATH路徑最短原則[8], R2優(yōu)先選擇R1到達(dá)10.0.0.0/24. 由于R2沒有任何認(rèn)證機(jī)制證明消息的合法性和真實(shí)性, R2中目的地為10.0.0.0/24的流量原本應(yīng)該路由到R4中, 卻被劫持到R1中, 造成前綴劫持攻擊.
圖1 前綴劫持實(shí)例
前綴劫持攻擊的結(jié)果可能會導(dǎo)致路由黑洞(black hole)和中間人攻擊(man-in-the-middle attack), 甚至造成互聯(lián)網(wǎng)的大規(guī)模癱瘓[9]. 前綴劫持的根本原因在于BGP協(xié)議缺乏一個(gè)安全可信的路由源認(rèn)證機(jī)制. 為了彌補(bǔ)BGP存在的設(shè)計(jì)缺陷, 降低域間路由傳播中的安全威脅. S-BGP(secure BGP)[10], SoBGP[11]等方法應(yīng)運(yùn)而生.
與此同時(shí), IETF SIDR工作組正在開發(fā)的RPKI[12]也為解決BGP安全問題提供了完整的設(shè)計(jì)思路. 基于RPKI的BGP路由安全機(jī)制不僅彌補(bǔ)了S-BGP計(jì)算開銷大、部署困難的問題, 還解決了soBGP由于缺乏信任錨的地址授權(quán)認(rèn)證體系導(dǎo)致的安全性顯著下降的問題[8].
2.1 RPKI簡介
RPKI是一種公鑰基礎(chǔ)設(shè)施, 用來保障互聯(lián)網(wǎng)基礎(chǔ)碼號資源(包括AS號, IP地址)的可信分配和安全使用. RPKI體系由三部分構(gòu)成, 分別是資源公鑰基礎(chǔ)設(shè)施(RPKI)、數(shù)字簽名對象和分布式數(shù)據(jù)倉庫. 其中RPKI是本套體系中最核心的組成部分.
如圖2所示, RPKI的證書發(fā)布體系沿襲傳統(tǒng)的地址分配邏輯, 按照互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu)(Internet Assigned Numbers Authority, IANA)、地區(qū)性互聯(lián)網(wǎng)注冊機(jī)構(gòu)(Regional Internet Registries, RIRs)、本地互聯(lián)網(wǎng)注冊機(jī)構(gòu)(Native Internet Registries, NIRs)/互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Providers, ISPs)逐層向下發(fā)布認(rèn)證權(quán)威(Certification Authority, CA)證書. 每一個(gè)最底層的資源持有者都擁有一段不可再細(xì)分的IP地址資源, 資源持有者用所屬的CA證書繼續(xù)簽發(fā)EE(End-Entity)證書, 用來對路由源ROA的信息進(jìn)行簽名[13]. ROA包含了IP地址塊以及資源持有者指定用于通告該段地址的AS號. 簡單來說, 一個(gè)ROA就是地址所有者ISP授權(quán)某AS發(fā)起某IP前綴路由的擔(dān)保, 從而對路由源進(jìn)行合法性驗(yàn)證.
圖2 RPKI資源分配架構(gòu)圖
如圖3所示, RP是連接RPKI和BGP路由系統(tǒng)的重要橋梁, RP從RPKI體系中獲取所有ROA證書并進(jìn)行驗(yàn)證, 將合法的ROA信息存儲在RP數(shù)據(jù)庫. 當(dāng)BGP路由器向RP申請更新時(shí), RP將最新驗(yàn)證結(jié)果反饋給BGP路由器. BGP路由器則根據(jù)驗(yàn)證結(jié)果構(gòu)建自己的過濾表項(xiàng)和緩存列表. 當(dāng)BGP路由器接收到來自對等端發(fā)送的update報(bào)文, 首先查詢本地緩存列表update報(bào)文信息是否真實(shí)有效, 再進(jìn)行路由選擇.
如果在支持RPKI的情況下, 圖1的路由器R2將會周期性地從RP獲取所有的ROA信息, 當(dāng)R1向 R2發(fā)送IP地址為10.0.0.0/24的update報(bào)文時(shí), R2首先查詢本地的路由器緩存列表, 檢查R1是否具有通告當(dāng)前IP地址的權(quán)利. 如果匹配正確, 則驗(yàn)證成功. 由此可見RPKI路由源認(rèn)證功能有效地防御了前綴劫持攻擊.
圖3 BGP路由源認(rèn)證
2.2 RPKI存在的問題
在RPKI體系中, RP與BGP路由器交互協(xié)議設(shè)計(jì)如圖4所示[14], 每個(gè)路由器要與一個(gè)或者多個(gè)RP建立并保持連接, 以此來建立客戶端/服務(wù)器關(guān)系. 每個(gè)路由器都將配置一個(gè)緩存列表, 用來接收從RP發(fā)送來的所有的ROA信息.
圖4 RP與路由器交互機(jī)制
然而, BGP路由器通過定期向RP發(fā)送更新請求機(jī)制, 來更新路由器緩存列表信息, 不論RP是否已經(jīng)將數(shù)據(jù)庫進(jìn)行更新, 由此可能會對BGP路由器緩存列表中ROA信息的真實(shí)性和準(zhǔn)確性產(chǎn)生影響. 同時(shí), BGP路由器緩存列表數(shù)量級非常大, 不斷查詢路由器緩存列表會加重路由器的運(yùn)行負(fù)載.
由此可見, RP與BGP路由器交互機(jī)制可能會導(dǎo)致ROA信息缺乏真實(shí)性和有效性, 并且對路由器造成很大的性能威脅.
3.1 改進(jìn)方案介紹
為了解決RP與BGP路由器數(shù)據(jù)同步機(jī)制導(dǎo)致的安全和性能問題, 本文提出了一種改進(jìn)的BGP路由源認(rèn)證方案: 發(fā)送方將從RP申請的ROA證書附加到update報(bào)文中進(jìn)行傳輸, 接收端路由器實(shí)時(shí)申請證書公鑰對ROA證書合法性與真實(shí)性進(jìn)行驗(yàn)證, 并用合法ROA信息對update報(bào)文中IP與AS信息進(jìn)行路由源驗(yàn)證. 路由器驗(yàn)證成功后, 將合法的ROA信息存儲到本地緩存列表并采用定期清空的處理機(jī)制. 該方案中提到的證書公鑰經(jīng)由RP驗(yàn)證可以保證其正確性.
此緩存列表數(shù)量級非常小并且清空緩存周期短, 其本身帶來的查詢消耗可以忽略不計(jì), 旨在減小路由器實(shí)時(shí)申請和驗(yàn)證ROA證書帶來的額外流量負(fù)載. 同時(shí), 實(shí)時(shí)申請和定期清空緩存列表的機(jī)制保證了驗(yàn)證ROA信息的真實(shí)性和準(zhǔn)確性, 有效解決了當(dāng)前機(jī)制中RP與路由器數(shù)據(jù)同步可能導(dǎo)致的ROA存在錯(cuò)誤的缺陷.
改進(jìn)方案的詳細(xì)設(shè)計(jì)流程如圖5所示.
① 路由器R1向RP申請ROA證書.
② R1將ROA證書作為update報(bào)文路徑屬性的一部分附加到update報(bào)文中.
③ R1將ROA證書發(fā)送到對等端路由器R2.
④ R2接收到ROA證書后, 向RP申請ROA證書公鑰并解密證書.
⑤ 通過查看證書所攜帶的AS號與IP前綴信息來驗(yàn)證當(dāng)前update報(bào)文中的AS是否有通告當(dāng)前IP的權(quán)利.
⑥ 如果驗(yàn)證正確則繼續(xù)傳遞, 否則將此包丟棄.
⑦ BGP路由器將申請到的ROA信息保存到本地緩存列表, 以待下一次驗(yàn)證. BGP路由器緩存列表采用定期清空的機(jī)制, 以防止更新不及時(shí)導(dǎo)致的信息錯(cuò)誤.
圖5 改進(jìn)方案交互機(jī)制
3.2 改進(jìn)方案可行性仿真過程
Quagga[15]是一種能夠?qū)inux系統(tǒng)打造成一臺功能完備的路由器的開源軟件. 其能夠同時(shí)支持RIP、OSPF、BGP等諸多TCP/IP協(xié)議. Quagga擁有模塊化設(shè)計(jì)、運(yùn)行速度快、可靠性高等特性. 由于Quagga采用了模塊化設(shè)計(jì), 所以在其運(yùn)行時(shí)要運(yùn)行多個(gè)守護(hù)進(jìn)程. 其中zebra進(jìn)程用來更新內(nèi)核的路由表, bgpd進(jìn)程則負(fù)責(zé)進(jìn)行BGP協(xié)議的路由更新.
本文通過修改Quagga開源代碼, 將靜態(tài)的ROA信息(包括AS號, IP地址及前綴)添加到BGP協(xié)議的update報(bào)文中. ROA作為路徑屬性的一部分傳遞到對等端路由器, 并在對等端完成路由源認(rèn)證. 當(dāng)驗(yàn)證失敗時(shí), 錯(cuò)誤日志中記錄ROA信息無效并將此包丟棄.
本文提到的Quagga實(shí)驗(yàn)旨在驗(yàn)證將ROA證書附加到update報(bào)文中進(jìn)行傳輸, 并在接收端進(jìn)行驗(yàn)證的方案具有可行性, 可以將此方案部署到更復(fù)雜的路由拓?fù)浣Y(jié)構(gòu).
實(shí)驗(yàn)步驟:
① 發(fā)送端從模擬的RP中獲取ROA靜態(tài)信息添加到update報(bào)文中.
② 將ROA信息通過update報(bào)文傳遞到對等端路由器.
③ 對等端路由器接收到更新信息后, 也從RP獲取相應(yīng)的ROA信息, 并將兩者進(jìn)行比較, 驗(yàn)證接收到的ROA信息是否真實(shí)有效.
④ 通過合法的ROA信息, 驗(yàn)證當(dāng)前AS是否有通告當(dāng)前IP前綴的權(quán)利, 即進(jìn)行路由源認(rèn)證.
仿真實(shí)驗(yàn)拓?fù)鋱D如圖6所示.
圖6 仿真拓?fù)鋱D
3.3 改進(jìn)方案可行性仿真結(jié)果
路由器R2接收到傳遞的ROA信息如圖7所示.
圖7 路由器R2信息接收圖
當(dāng)驗(yàn)證失敗時(shí), R2路由器錯(cuò)誤日志記錄顯示如圖8所示.
圖8 錯(cuò)誤日志記錄圖
本文通過Quagga仿真技術(shù)模擬BGP路由器, 成功將靜態(tài)的ROA信息傳遞到對等端, 并完成了路由源認(rèn)證功能.
當(dāng)前方案與改進(jìn)方案對比分析如下:
① 當(dāng)前機(jī)制如圖9上側(cè)所示: 假設(shè)從RP到路由器傳輸?shù)?AS,IP>對象共有個(gè), 每個(gè)對象的平均傳輸速率為0.628s/object[16]. 所以當(dāng)前機(jī)制中RP與路由器的數(shù)據(jù)同步時(shí)間. 設(shè)update報(bào)文的傳輸速率為, 假如路由器發(fā)送、接收報(bào)文時(shí)間為1s, 即1s發(fā)送、接收個(gè)報(bào)文.
當(dāng)=1/s(每秒有1個(gè)報(bào)文發(fā)送到路由器), 路由器緩存列表長度為(因?yàn)橛袀€(gè)對象, 每個(gè)對象為一行). 假設(shè)使用窮舉法進(jìn)行表查詢, 查詢每一行需要1s, 驗(yàn)證時(shí)間為1s. 則平均查找時(shí)間為O(m), 由于最優(yōu)情況查詢時(shí)間為1s, 最差情況查詢時(shí)間為ms, 所以平均查找時(shí)間為, 驗(yàn)證時(shí)間. 所以當(dāng)v=1/s時(shí), 所需時(shí)間為:
當(dāng)v=n/s(每秒有n個(gè)報(bào)文發(fā)送到路由器), 所需時(shí)間為:
圖9 性能對比圖
② 改進(jìn)方案(不考慮本地存儲ROA)如圖9下方所示: 發(fā)送端路由器仍從RP獲取ROA證書. 設(shè)路由器向RP申請1個(gè)ROA證書的時(shí)間為, RP向路由器反饋時(shí)間為.
由于接收端路由器需要獲取證書公鑰并對證書進(jìn)行解密, 所以改進(jìn)方案中ROA證書驗(yàn)證時(shí)間相較于直接驗(yàn)證AS和IP需要消耗更長時(shí)間(不考慮申請公鑰所導(dǎo)致的與RP的交互負(fù)載). 設(shè)對ROA證書驗(yàn)證時(shí)間為.
當(dāng)=1/s, 所需時(shí)間為:
當(dāng)=n/s, 理想情況下為:
假設(shè)發(fā)送端路由器每個(gè)update報(bào)文攜帶的ROA證書都需要重新申請, 由于其頻繁訪問RP數(shù)據(jù)庫, 會加重路由器和RP的運(yùn)行負(fù)載, 使得申請和反饋時(shí)間增長. 當(dāng)速率為n/s時(shí), 申請和反饋時(shí)間為并且假設(shè), 所以所需時(shí)間為:
通過以上數(shù)據(jù)分析, 可以得出兩種機(jī)制查詢和驗(yàn)證時(shí)間分別為:
設(shè):
因?yàn)?/p>
所以, T1與T2有兩個(gè)交點(diǎn), 由于m>=0, a>=0, b>=0, 所以T1與T2有一個(gè)交點(diǎn), 如圖10所示.
圖10 時(shí)間對比圖
綜上所述:
當(dāng)v
RPKI針對BGP協(xié)議存在的安全缺陷, 通過引進(jìn)ROA證明源AS對某IP前綴擁有通告的權(quán)利, 對路由源進(jìn)行認(rèn)證, 從而有效解決了BGP協(xié)議中對源認(rèn)證缺失的安全問題. 但是在路由源認(rèn)證模塊中, 由于路由器要定期更新本地的路由器緩存列表, 從而導(dǎo)致RP數(shù)據(jù)庫與路由器緩存列表在數(shù)據(jù)同步方面存在安全隱患和性能缺陷. 路由器緩存列表更新周期直接影響著緩存列表中ROA信息的正確性與真實(shí)性.
本文在此基礎(chǔ)上, 提出了一種改進(jìn)的BGP路由源認(rèn)證方案. 將從RP獲取的ROA證書附加到update報(bào)文中, 接收端路由器從RP申請可信的ROA證書公鑰并進(jìn)行解密, 與update報(bào)文信息進(jìn)行比較從而驗(yàn)證路由源信息的真實(shí)性. 本文通過Quagga仿真技術(shù)模擬BGP update報(bào)文傳輸, 驗(yàn)證靜態(tài)的ROA信息附加到update報(bào)文的方案切實(shí)可行, 同時(shí)分析了當(dāng)前方案和改進(jìn)方案的適用情況和時(shí)間開銷.
1 Kuhn R, Sriram K, Montgomery D. Border gateway protocol security[Technical Report], 800-54, Gaither-sburg: NIST, 2007.
2 Murphy S. BGP security vulnerabilities analysis. RFC 427 2, 2006.
3 Nordstrom O, Dovrolis C. Beware of BGP attacks. ACM SIGCOMM Computer Communication Review, 2004, 34 (2): 1–8.
4 Andy G. Hacker Redirects Traffic from 19 Internet Providers to Steal Bitcoins. http://www.wired.com/2014/08/isp-bitcoin- theft/. 2014.
5 Matsuzaki Y. Prefix hijacked. https://conference.apnic.net /data/41/apricot-2016-maz-hijack_1456100828.pdf. 2016.
6 Chika Y. BGP Hijack Issue in 2015. https://conference.apnic. net/data/41/janog37-chika-rev7-en_1455078267_1456002602.pdf. 2016.
7 Massive route leak causes Internet slowdown. http://www. bgpmon.net/massive-route-leak-cause-internet-slowdown/#comments-wrap.
8 Matthew C, Jennifer R. BGP routing policies in ISP networks. IEEE Network, 2005.
9 黎松,諸葛建偉,李星.BGP安全研究.軟件學(xué)報(bào),2013,24(1): 121–138.
10 Secure BGP project (S-BGP).2004. http://www.ir.bbn.com/ sbgp/.
11 White R. Securing BGP through sec ure origin BGP (SoBGP). The Internet Protocol Journal, 2003, 6(3): 15–22.
12 Lepinski M, Kent S. An infrastructure to support secure Internet routing. RFC 6480, 2012.
13 Huston G, Michaelson G. Validation of route origination using the resource certificate public key infrastructure (PKI) and route origin authorizations (ROAs). IETF RFC 6483, 2012.
14 Bush R, Austein R. The resource public key infrastructure (RPKI) to router protocol. RFC 6810, 2015.
15 Quagga Routing Suite. http://www.ourg/quagga /.
16 Osterweil E, Manderson T, White R, et al. Sizing estimates for a fully deployed RPKI. Verisign Labs, TR, 2012, 1120005.
Improved Validation Mechanism of Route Origination in BGP
JIA Jia1,2, YAN Zhi-Wei2, GENG Guang-Gang2, JIN Jian1
1(Computer Network Information Center, Chinese Academy of Sciences, Beijing 100190, China)2(National Engineering Laboratory for Naming and Addressing, China Internet Network Information Center, Beijing 100190, China)
Resource public key infrastructure (RPKI) is a kind of technology which is used to protect the authenticity of Internet code number resources allocation and a kind of system of supporting inter-domain routing security which solves the problem of the lack of validation of route origination in BGP. However, it may result in the lack of authenticity and validity of ROA information due to the current data synchronism mechanism between the relying party of RPKI system and BGP routers. Meanwhile, it will bring a lot of performance load of BGP routes that query the cache lists continuingly. In this paper, we propose an improved method for route origination authentication. The sender routers real-timely apply for ROA certificates from RP and transmit them to the peer routers with the update message. Then the peer routers can apply for the public key to verify the certificates and verify the authenticity of the route originate. The verification mechanism is changed from updating the cache list periodically to real-time application for certification. It can effectively solve the problem that the ROA of the RP and the router data synchronization may be wrong, and reduce the running load of routes caused by querying the cache lists effectively. It is proved that the feasibility of the scheme using the simulation tool of Quagga and we make the detailed analysis for the applicable situation of two mechanisms.
BGP; RPKI; ROA; security mechanism; prefix hijacking
2016-04-19;收到修改稿時(shí)間:2016-05-26
[10.15888/j.cnki.csa.005541]