蘇瑩瑩,李丹,2,葉洪琳
(1. 清華大學(xué),北京 100084;2. 清華大學(xué)深圳國際研究生院,廣東 深圳 518055)
BGP是支持網(wǎng)絡(luò)之間互聯(lián)互通的標(biāo)準(zhǔn)協(xié)議,作為域間路由至關(guān)重要的協(xié)議,其對互聯(lián)網(wǎng)的安全性有著重大影響。但BGP在設(shè)計之初并沒有充分考慮安全性,AS(autonomous system,自治系統(tǒng))缺乏對路由通告(BGP宣告)內(nèi)容真實性的驗證,使得BGP很容易受網(wǎng)絡(luò)管理員錯誤參數(shù)配置或惡意攻擊行為的影響。
目前BGP最嚴(yán)重的一個安全威脅是BGP前綴劫持[1]。由于誤配置或惡意行為,AS對外宣告了不屬于自己的IP地址前綴,從而將發(fā)往該IP地址前綴的一部分(或全部)流量吸引過來(前綴/子前綴劫持)或充當(dāng)中繼節(jié)點竊聽流量(中間人劫持)[2]。
BGP前綴劫持事件每天都在發(fā)生,一些大規(guī)模的劫持事件更是對網(wǎng)絡(luò)造成了不可逆轉(zhuǎn)的影響[3-4]。針對BGP前綴劫持問題,較為早期的解決方案是1997年BBN公司提出的S-BGP[5],S-BGP通過在BGP宣告中附加AS的簽名來驗證IP地址前綴和自治系統(tǒng)號(autonomous system number,ASN)的綁定關(guān)系。但由于S-BGP存在密鑰管理復(fù)雜、計算開銷大等缺陷,并沒有得以部署。RPKI沿用了S-BGP通過簽名將IP地址前綴和ASN綁定的思想,但為了不修改BGP以及盡可能降低邊界路由器的開銷,RPKI并沒有在BGP宣告中附加簽名,而是將簽名以一種帶外的方式獨立存儲于分布式RPKI資料庫中,由專門的服務(wù)器獲取并驗證簽名證書,路由器獲取驗證后的結(jié)果指導(dǎo)路由選擇。與BGP兼容、帶外的設(shè)計理念是RPKI能夠得以部署的重要原因。
IETF自2012年起對RPKI進(jìn)行標(biāo)準(zhǔn)化[6],并在之后對與RPKI相關(guān)的概念及標(biāo)準(zhǔn)不斷進(jìn)行更新和完善。RPKI通過提供IP地址前綴和ASN之間的可信映射來防止源前綴劫持和源子前綴劫持。其將BGP宣告的“默認(rèn)接受”模式更改為“默認(rèn)拒絕”模式,只有被RPKI判定為真實有效的路由宣告才會被AS接受。在IANA以及五大RIR的不斷推動下,目前RPKI已初具部署規(guī)模。近兩年,RPKI部署率增長相對較快,多個大型AS也公開宣布正在部署RPKI并將丟棄被RPKI判斷為無效的BGP宣告[7]。
BGP前綴劫持可以分為前綴劫持和子前綴劫持。前綴劫持如圖1(a)所示,源AS1向外發(fā)出了帶有自身前綴1.1.0.0/16的BGP宣告,由于AS5的誤配置或攻擊行為,它也向外發(fā)出了帶有前綴1.1.0.0/16的BGP宣告。AS一般會優(yōu)先選取到達(dá)某個前綴AS_path最短的BGP宣告,因此AS4發(fā)往1.1.0.0/16的流量大概率會發(fā)往AS5,AS3會綜合其他策略選擇到達(dá)前綴1.1.0.0/16的路徑。子前綴劫持如圖1(b)所示,AS5向外發(fā)出了相比于1.1.0.0/16更加具體的BGP宣告(帶有前綴1.1.0.0/24),根據(jù)BGP的最長前綴匹配原則,AS2、AS3以及AS4到達(dá)1.1.0.0/24的流量都將會發(fā)往AS5。
圖1 BGP前綴劫持及子前綴劫持示意圖
為了解決前綴劫持問題,BBN公司(即BBN Technology)早在1997年就提出安全邊界網(wǎng)關(guān)協(xié)議(secure BGP,S-BGP)[5]方案。發(fā)展至今,前綴劫持問題解決思路主要可分為兩大類:異常檢測與預(yù)防。
異常檢測通過對異常BGP宣告的識別,讓網(wǎng)絡(luò)管理員快速修復(fù)異常情況,從而盡可能降低前綴劫持造成的危害[8-18],檢測的準(zhǔn)確性和實時性是這類方案的關(guān)鍵。前綴劫持預(yù)防通過丟棄驗證失敗的BGP宣告來達(dá)到預(yù)防前綴劫持的目的,是一類從根本上解決BGP前綴劫持的方案。具有代表性的方案有S-BGP[5]以及在S-BGP基礎(chǔ)上發(fā)展來的SPV(secure path vector,安全路徑向量)[19]、APA(aggregated path authentication,聚合路徑驗證)[20]、soBGP(secure origin BGP,安全源邊界網(wǎng)關(guān)協(xié)議)[21]及psBGP(pretty secure BGP,非常安全的邊界網(wǎng)關(guān)協(xié)議)[22]等。S-BGP通過兩個PKI(public key infrastructure,公鑰基礎(chǔ)設(shè)施)體系對BGP宣告的源偽造及路徑偽造進(jìn)行檢測[5]。對于一個AS內(nèi)部的邊界路由器來說,每收到一個BGP宣告,都要確認(rèn)這個BGP宣告中AS_path上的每個AS都被授權(quán)向外廣播了這條BGP宣告。S-BGP存在計算、存儲開銷較大、密鑰管理復(fù)雜等缺點,使邊界路由器負(fù)擔(dān)過重,難以部署。
針對S-BGP密鑰管理復(fù)雜的缺點,SPV[19]和APA[20]通過對密碼技術(shù)進(jìn)行改進(jìn),降低了S-BGP的開銷;針對S-BGP的計算、存儲開銷大的缺點,2003年思科公司提出了soBGP[21],soBGP采用信任網(wǎng)絡(luò)(Web of trust)的分布式信任模型,犧牲了一定的安全性來提高S-BGP的性能;psBGP[22]結(jié)合了S-BGP和soBGP的特點,利用信任網(wǎng)絡(luò)實現(xiàn)AS之間的互相背書,進(jìn)一步降低了驗證開銷,但同樣沒有在實際中得到部署;其他的一些改進(jìn)方案[23-25]根據(jù)BGP宣告的特點有針對性地降低S-BGP的開銷。
由于上述方案對BGP有所修改,難以推動部署,之后又提出了不修改BGP的安全外包機(jī)制。主要有IRV(interdomain routing validation,域間路由驗證)[26]和ROVER(route origin verification,路由源認(rèn)證)[27]。IRV通過向源AS詢問來實現(xiàn)路由源驗證,與源AS的通信開銷以及網(wǎng)絡(luò)不可達(dá)是IRV面臨的主要挑戰(zhàn);ROVER利用DNS(domain name system,域名系統(tǒng))反向查詢機(jī)制對源AS進(jìn)行驗證,但ROVER依賴DNSSEC(DNS security,域名系統(tǒng)安全)的部署,而DNSSEC本身的部署情況也不理想[28],因此ROVER的部署也受到了較大的阻礙。
2012年IETF安全域間路由(Secure Inter-Domain Routing,SIDR)工作組以S-BGP為基礎(chǔ)提出資源公鑰基礎(chǔ)設(shè)施(resource public key infrastructure,RPKI),并開始對其進(jìn)行標(biāo)準(zhǔn)化[25]。RPKI是一套保障互聯(lián)網(wǎng)號碼資源(IP地址及自治系統(tǒng)號)安全使用的公鑰基礎(chǔ)設(shè)施。其通過對X.509公鑰證書進(jìn)行拓展[29],完成了公鑰及互聯(lián)網(wǎng)號碼資源與資源持有者的綁定和授權(quán)。RPKI通過由上至下逐級頒發(fā)資源證書來進(jìn)行資源授權(quán),最下層資源持有者頒發(fā)路由源認(rèn)證(route origin authorization,ROA)來完成IP地址與具體AS的綁定。此外,作為一種帶外的驗證機(jī)制,RPKI證書及簽名對象被存放至RPKI資料庫,供需進(jìn)行路由源驗證(route origin validation,ROV)的實體同步和驗證,而后將驗證結(jié)果下發(fā)至路由器,避免了路由器的加密和驗證開銷。
RPKI體系由3部分組成:證書簽發(fā)體系、證書存儲系統(tǒng)以及證書同步驗證機(jī)制。RPKI的證書簽發(fā)體系與互聯(lián)網(wǎng)號碼資源由上至下的分配架構(gòu)相對應(yīng)(圖2左側(cè))。作為一種帶外機(jī)制,RPKI涉及的所有證書都存放至RPKI資料庫中供依賴方(relying party,RP,即幫助AS同步并驗證證書的實體)同步(圖2中間部分),RP同步并驗證RPKI證書和簽名對象,而后將驗證結(jié)果(IP地址前綴和ASN的綁定關(guān)系)下放至AS邊界路由器指導(dǎo)路由過濾(圖2右側(cè)部分)。
圖2 RPKI整體架構(gòu)及運行機(jī)制示意圖
RPKI利用X.509證書及其擴(kuò)展[29]實現(xiàn)了互聯(lián)網(wǎng)號碼資源使用授權(quán)[25]。如圖2所示,互聯(lián)網(wǎng)號碼分配機(jī)構(gòu)(如五大RIR)在給互聯(lián)網(wǎng)號碼資源持有者分配資源時,會用自己的私鑰簽發(fā)數(shù)字證書(certification authority,CA證書),證書中包括資源持有者的公鑰及相應(yīng)的互聯(lián)網(wǎng)號碼資源,表明該資源持有者得到了使用此部分號碼資源的合法授權(quán)[30-31]。證書生成后,上層分配機(jī)構(gòu)會將簽發(fā)的證書存放于自己的資料庫發(fā)布點(RPKI資料庫)供RP同步。當(dāng)資源擁有者希望授權(quán)某個AS宣告自己擁有的IP地址前綴時,會先用自己的私鑰簽發(fā)一個終端實體(end-entity,EE)證書,而后用EE證書的私鑰簽發(fā)ROA[32],完成IP地址前綴和此AS的綁定。為了減輕撤銷證書的負(fù)擔(dān),EE證書和ROA是一一對應(yīng)的,RPKI規(guī)定將EE證書作為ROA的一個字段進(jìn)行存儲[25,33],資源擁有者可通過撤銷EE證書來撤銷ROA。
擁有CA證書的實體稱為CA,每個CA都會維護(hù)一個資料庫發(fā)布點[34]供RP同步自己發(fā)布的證書和簽名對象,RPKI資料庫系統(tǒng)就是由所有CA的資料庫發(fā)布點共同組成的。RPKI使用CA證書的兩個擴(kuò)展項來鏈接整個RPKI分布式資料庫系統(tǒng):信息發(fā)布點(subject information authority,SIA)和權(quán)威發(fā)布點(authority information authority,AIA)。SIA記錄了該CA自身資料庫發(fā)布點的地址,可通過此字段查找到該CA簽發(fā)的所有證書和簽名對象;AIA記錄了該CA的父CA資料庫發(fā)布點的地址,可通過此字段查找到該CA的上層CA發(fā)布的所有證書和簽名對象。利用CA證書中的這兩個信息,理論上可以通過RPKI證書樹中的任意一個CA證書鏈接到整個RPKI證書樹。
傳統(tǒng)PKI在撤銷證書的時候,需要證書撤銷列表(certificate revocation list,CRL)記錄還未過期但是已被撤銷的證書[30]。RPKI在撤銷證書的時候沿用了此機(jī)制,每個CA的資料庫發(fā)布點中都會維護(hù)一個CRL用來記錄該資料庫發(fā)布點中還未過期但已被撤銷的證書的序列號及撤銷日期[31]。為了保證CRL不被篡改,CRL也需要對應(yīng)的CA用自己的私鑰進(jìn)行簽名。
為了方便RP檢查同步到的某個資料庫發(fā)布點中證書和簽名對象的正確性以及完整性,防止在傳輸?shù)倪^程中資料庫發(fā)布點中的內(nèi)容被惡意刪除或篡改,每個資料庫發(fā)布點還需要維護(hù)一個清單[35]。清單記錄了該資料庫發(fā)布點中所有合法(未過期也未被撤銷)的證書及簽名對象的名稱及哈希值。RP在同步完資料庫中的資料后,會根據(jù)清單的內(nèi)容進(jìn)行證書正確性和完整性驗證。同ROA一樣,清單作為RPKI的簽名對象,也需要與EE證書進(jìn)行綁定,在撤銷清單的時候只需要撤銷對應(yīng)的EE證書即可。
RP通過rsync[36]協(xié)議或RRDP(RPKI repository delta protocol,RPKI資料庫更新協(xié)議)[37]從所有RPKI資料庫發(fā)布點中同步證書和簽名對象,而后沿著證書鏈由上至下驗證ROA的有效性,并提取所有有效ROA中記錄的IP地址前綴和ASN的映射關(guān)系生成路由過濾表,通過RTR協(xié)議[38]將路由過濾表下發(fā)至各個邊界路由器,路由器利用該路由過濾表來驗證收到的BGP宣告的有效性。
ROA中除了IP地址前綴和ASN的對應(yīng)關(guān)系外,還有一個最長前綴長度(maxlength)字段。每個ROA中的有效條目都可以表示為三元組 路由器在收到RP下發(fā)的所有有效ROA條目集合后,就可以利用該集合對收到的BGP宣告進(jìn)行路由源驗證(route origin validation,ROV)[39],從而過濾掉驗證非法的BGP宣告。 一條BGP宣告的“源路由”定義如下:如果一條AS_path的最后一個元素是AS_sequence類型,那么源AS就是AS_path的最后一個元素;如果AS_path中的最后一個元素(或元素段)是AS_set類型,表明無法確定ASN的先后順序,也就無法確定源AS,此時不做判斷。 ROA與BGP宣告的有效性對應(yīng)關(guān)系見表1[39]。 表1 ROA與BGP宣告的有效性對應(yīng)關(guān)系 路由器利用RP下放的有效ROA條目進(jìn)行ROV的具體過程如下。 步驟1選取滿足IPBGP?IPROA(BGP宣告中IP地址前綴覆蓋的IP地址是ROA中IP地址前綴覆蓋的IP地址的子集)的ROA,構(gòu)成“候選ROA”的集合(即滿足表1中“與ROA中的IP地址前綴相匹配”或“比ROA中的IP地址前綴更具體”的所有ROA)。 步驟2如果“候選ROA”集合為空,那么判斷結(jié)束,返回“unknown”(未知)。 步驟3如果要判斷的BGP宣告的源AS可以確定(AS_path的最后一個元素是AS_sequence類型),且“候選ROA”集合中存在一個ROA的ASN字段與源AS相同(即滿足表1中“BGP宣告與ROA的ASN匹配”),且該BGP宣告的IP地址前綴長度不大于ROA中的maxlength值(即滿足表1中“與ROA中的IP地址前綴相匹配”),則判斷結(jié)束,返回“valid”(有效)。 步驟4否則返回“invalid”(無效)。 邊界路由器參考ROV的結(jié)果決定是否接受某條BGP宣告,IETF建議邊界路由器優(yōu)先考慮被判斷為valid的BGP宣告,盡量丟棄被判斷為invalid的BGP宣告[25,39]。 RPKI的資源授權(quán)是基于全局視角的,它使資源持有者可以對擁有的全局唯一的資源進(jìn)行可驗證的聲明。但是,網(wǎng)絡(luò)管理員也有需求在某些本地化的場景中聲明對某些資源的持有情況,比如在本地化場景中聲明對RFC1918[40]規(guī)定的某些保留地址的使用權(quán)?;蛘邍页鲇谀承┰蛐枰笇?dǎo)國家內(nèi)部的網(wǎng)絡(luò)按照國家權(quán)威機(jī)構(gòu)的指示配置域間路由過濾規(guī)則。這些本地化的策略,只在本地上下文中生效,不會對超出本地范圍內(nèi)的其他網(wǎng)絡(luò)的配置產(chǎn)生任何影響。 考慮到以上ISP本地化信息控制的需求,Ma等人[41]在RFC8416中提出了簡化本地互聯(lián)網(wǎng)資源管理(simplified local internet resource management,SLURM)。SLURM提供了一種簡單的使RP能夠?qū)PKI全局資料庫的驗證結(jié)果進(jìn)行“重寫”的機(jī)制。如圖3所示,RP在驗證本地緩存的RPKI資料庫證書后獲取“全局策略”,之后再通過SLURM機(jī)制添加“本地策略”(“本地策略”與“全局策略”產(chǎn)生沖突時,服從“本地策略”),而后將“綜合策略”下放至邊界路由器,指導(dǎo)其進(jìn)行BGP宣告過濾。 圖3 SLURM機(jī)制示意圖 SLURM采用單個JSON文件來導(dǎo)入本地策略。圖4是SLURM文件的格式展示:slurmVersion字段是SLURM的版本號;validationOutputFilters字段包含需要被過濾掉的與前綴相關(guān)條目(prefixFilters)及與BGPsec相關(guān)條目(bgpsecFilters),所有驗證通過的ROA條目只要被此字段包含,就必須從RP輸出給路由器的合法條目中剔除;locallyAdded Assertions字段表示需要添加的與前綴相關(guān)條目(prefixAssertions)及與BGPsec(bgpsecAssertions)相關(guān)的條目,所有驗證通過的ROA條目只要不包含此字段的內(nèi)容,RP輸出給路由器的合法條目中必須再額外將此條目的內(nèi)容添加進(jìn)來。SLURM文件的操作是“原子性”的,RP要么采用SLURM文件列出的全部內(nèi)容,要么完全不采用此SLURM文件的策略。當(dāng)存在多個SLURM文件時,RP需要檢查這些文件是否存在沖突,如果存在沖突,RP需將沖突內(nèi)容報告給SLURM文件的創(chuàng)建者,沖突解決后才能采用這些SLURM文件。 圖4 SLURM文件格式 SLURM給RP提供了自由配置自己本地BGP宣告過濾策略的機(jī)制,且該策略不會影響到除本地之外的其他網(wǎng)絡(luò),但是RP也需仔細(xì)考慮使用SLURM所帶來的安全隱患,尤其需要關(guān)注SLURM文件是否存在配置錯誤或此文件是否由第三方所提供。 自2012年RPKI被標(biāo)準(zhǔn)化以來,IANA和五大RIR就在不斷推動RPKI的部署,利用RIPE NCC維護(hù)的RPKI歷史資料庫[42],對RPKI的部署情況進(jìn)行了分析。 2.5.1 部署RPKI的AS數(shù)量及比例變化 圖5 五大RIR部署RPKI的AS增長趨勢 五大RIR部署RPKI的AS增長趨勢如圖5所示,圖5展示了自2015年至2020年,每年的11月1日,部署了RPKI的AS數(shù)量及比例的變化。圖5中的柱狀圖表示在五大RIR中,部署了RPKI的AS數(shù)量上的變化;折線圖表示部署了RPKI的AS占在本RIR注冊的所有AS在百分比上的變化。從圖5可以看出,從2015年開始,五大RIR的AS部署RPKI的數(shù)量和比例都呈上升趨勢。2015—2017年增長趨勢較為平緩,在2018年及以后,增長逐漸加快,其中RIPE NCC的變化趨勢最為明顯,且部署的數(shù)量和比例在5個RIR中都是最高的,到了2020年11月1日,部署RPKI的AS比例更是超過了30%。 2.5.2 被ROA覆蓋的BGP前綴比例變化 ROA覆蓋的BGP宣告中的IP地址前綴的比例也是衡量RPKI部署情況的一個重要指標(biāo)。使用了Routeviews[43]觀測點所維護(hù)的RIB表數(shù)據(jù),截至2020年11月1日,Routeviews共有26個觀測點,但是由于在2015—2020年時間段內(nèi),觀測點的數(shù)量有所變化,為了更加真實地反映被ROA覆蓋的BGP宣告中的IP地址前綴的變化趨勢,本文選取了Routeviews中一個較大的觀測點所維護(hù)的RIB表進(jìn)行分析。圖6是從2015—2020年,被ROA覆蓋的BGP宣告(IPv4前綴及IPv6前綴)的變化趨勢。從圖6可以看出,2015—2017年,BGP宣告中的前綴被ROA覆蓋的比例不到0.1,但2018年以后,BGP宣告中的前綴被ROA覆蓋的比例逐漸上升。這與圖5中2018年后部署RPKI的AS數(shù)量增長變快相符。但從圖6也可以發(fā)現(xiàn),截至2020年11月1日,在所有BGP宣告的IP地址前綴中,被ROA覆蓋的比例仍不到0.25,因此距離RPKI的全面部署仍有較大距離。 圖6 BGP宣告的前綴被ROA覆蓋的比例 作為一種帶外機(jī)制,RPKI不利用BGP傳輸證書內(nèi)容,而是建立“資料庫”來存儲證書,供RP下載使用。目前網(wǎng)絡(luò)中大約有65 000個活躍的AS,如果所有的AS都使用RPKI進(jìn)行路由源驗證,且假設(shè)一個RP服務(wù)一個AS,那么每一個RPKI資料庫發(fā)布點的服務(wù)器都需要滿足65 000個RP同時同步資料的需求。 RPKI設(shè)計之初采用的同步協(xié)議是rsync[36]。rsync使用了增量同步機(jī)制,有效地避免了大量數(shù)據(jù)的傳輸,但rsync要求資料庫發(fā)布點服務(wù)器為每一個有同步資料需求的RP計算其距上次同步需要增量同步的內(nèi)容,如果65 000個RP同時同步,RPKI資料庫服務(wù)器需要消耗大量的內(nèi)存和CPU資源,這對服務(wù)器提出了較高的要求。對于一些ISP來說,部署一個7×24 h在線,并且能同時支持65 000個RP頻繁地進(jìn)行同步的RPKI資料庫發(fā)布點,其開銷可能是無法承受的[44]。 為了解決這個問題,IETF提出了一個新的同步協(xié)議——RRDP[37],其實現(xiàn)了增量同步,且極大地降低了資料庫發(fā)布點服務(wù)器的開銷。RRDP讓資料庫發(fā)布點服務(wù)器維護(hù)一個更新文件,資料庫發(fā)布點中的所有的更新操作(如更新了清單和CRL、發(fā)布了新的證書或ROA等)及更新的時間戳都被記錄在此文件中,RP只需要同步更新文件,根據(jù)更新文件中的更新內(nèi)容及時間戳去增量同步指定的對象即可。RRDP同時結(jié)合了Web緩存機(jī)制,能夠極大地緩解rsync帶來的可擴(kuò)展性問題。但是目前RPKI并沒有實現(xiàn)完全部署,RRDP是否能夠完全滿足同步的性能要求還有待考證。 RPKI部署的早期,為了簡化CA的資料庫管理負(fù)擔(dān),推動部署,五大RIR為下屬的NIR/ISP提供了“托管模式”服務(wù)。NIR/ISP只需要在RIR提供的網(wǎng)頁上進(jìn)行注冊,就可以將自己的資料庫發(fā)布點完全托管給RIR。NIR/ISP不再維護(hù)自己的資料庫發(fā)布點,降低了自己的管理開銷,也更有動力去部署RPKI。但“托管模式”要求NIR/ISP將自己的密鑰和資料庫管理權(quán)都上交給RIR,這導(dǎo)致RIR可以隨意修改NIR/ISP資料庫發(fā)布點中的內(nèi)容,為RIR的主動惡意行為或被迫惡意行為提供了便利。目前,大多數(shù)部署了RPKI的機(jī)構(gòu)都選擇了“托管模式”,只有極少數(shù)的ISP選擇親自管理自身的資料庫發(fā)布點。 RP通過獲取并驗證RPKI資料庫所有的資源證書及簽名對象(統(tǒng)稱為資料庫對象)來生成路由源驗證條目,因此任何針對RPKI資料庫對象的誤操作或惡意操作都會影響驗證結(jié)果,從而影響B(tài)GP宣告過濾規(guī)則的準(zhǔn)確性。關(guān)于對象的惡意操作主要分為以下幾類[45]。 · 刪除:任何有權(quán)限操控資料庫發(fā)布點的實體惡意刪除資料庫發(fā)布點中的對象(CA證書、ROA、CRL、清單),使RP無法同步這部分證書。 · 抑制:任何有權(quán)限操控資料庫發(fā)布點的實體惡意抑制CA對其資料庫所進(jìn)行的更新,使RP無法同步到CA進(jìn)行的更新。 · 損壞:任何有權(quán)限操控資料庫發(fā)布點的實體損壞資料庫發(fā)布點中的對象(CA證書、ROA、CRL、清單),使證書內(nèi)容無法解析驗證。 · 篡改:掌握資料庫發(fā)布點對應(yīng)的CA證書私鑰的實體任意篡改資料庫發(fā)布點中的對象(CA證書、ROA、CRL、清單)。 · 撤銷:掌握資料庫發(fā)布點對應(yīng)的CA證書私鑰的實體惡意將CA證書、ROA和清單列入CRL列表,使其驗證失敗。 · 注入:掌握資料庫發(fā)布點對應(yīng)的CA證書私鑰的實體任意使用其私鑰發(fā)布沒有經(jīng)過此CA同意的證書或簽名對象。 上述6種惡意操作的前兩種,只要有資料庫發(fā)布點的操作權(quán)限即可進(jìn)行,后3種需要掌握資料庫發(fā)布點對應(yīng)的CA證書的私鑰。需要注意的是,上層CA可以通過刪除、篡改、撤銷自己給下層CA頒發(fā)的CA證書來影響下層CA資料庫中對象的有效性。目前,RPKI的資料庫主要采用的是托管模式(hosted model),CA將自己的資料庫和私鑰交給五大RIR統(tǒng)一管理,僅少數(shù)的ISP采用自主管理資料庫及私鑰的模式(delegated model)。本文將自身資料庫發(fā)布點中的證書或自身的CA證書受到破壞的CA稱為受害CA,對受害CA產(chǎn)生影響的兩個主要來源有受害CA的上層CA以及外界攻擊者。表2列出了在兩種資料庫發(fā)布點管理模式下,兩個威脅源分別可以對受害CA的CA證書及其資料庫發(fā)布點的對象進(jìn)行的惡意操作。 表2 在不同管理模式下可進(jìn)行的惡意操作 由于資料庫發(fā)布點中的對象有多種類型(CA證書、ROA、CRL、清單),對每種對象采取上述5種不同的操作產(chǎn)生的不良影響也是不一樣的。這里僅介紹幾種危害較為嚴(yán)重的惡意操作,更多關(guān)于證書的惡意操作可參考RFC 8211[45]。 上層CA惡意撤銷、刪除下層CA的CA證書:由于下層CA的CA證書存放在上層CA的資料庫發(fā)布點中,上層CA可直接刪除下層受害CA的CA證書(無須修改CRL列表)或撤銷下層受害CA的CA證書(需將下層CA的CA證書放至CRL列表)。兩者產(chǎn)生的效果是相似的,RP無法再同步到下層受害CA的CA證書,無法定位受害CA的資料庫發(fā)布點,進(jìn)而導(dǎo)致受害CA資料庫中的所有對象都不能被同步到。不同的是,刪除CA證書的情況下,RP還會繼續(xù)使用之前緩存的受害CA的CA證書及其資料庫發(fā)布點中的對象,直到CA證書和資料庫中的對象過期;而撤銷CA證書會導(dǎo)致所有受害CA簽發(fā)的對象都驗證失敗。 上層CA惡意篡改下層CA的CA證書:與撤銷、刪除下層受害CA的CA證書不同,篡改證書一般是更改原CA證書的資源授權(quán)情況,比如減少對下層CA授權(quán)的IP地址資源或ASN資源(一般不會增加對下層CA的授權(quán)資源),導(dǎo)致下層CA簽發(fā)的與減少的那部分資源相關(guān)的ROA驗證失敗,進(jìn)而影響相關(guān)AS的BGP宣告的有效性。 目前,防止上層CA單方撤銷下層CA的CA證書的方案有兩種,第一種是改進(jìn)RPKI機(jī)制,使其能夠平衡上下層CA的權(quán)利;第二種是設(shè)計全新的去中心化互聯(lián)網(wǎng)基礎(chǔ)設(shè)施方案。Heilman等[46]于2014年提出的RPKI證書透明機(jī)制屬于第一種。其核心思想是上層CA想要撤銷下層CA的CA證書,必須經(jīng)過所有可能受影響的下層機(jī)構(gòu)的“同意簽名”,但是在目前90%以上的CA資料庫都由RIR托管的模式下,此方案起不到限制作用。第二種方案的典型代表就是基于區(qū)塊鏈的去中心化互聯(lián)網(wǎng)基礎(chǔ)設(shè)施方案。 2016年Hari等[47]首次在文獻(xiàn)中提出了基于區(qū)塊鏈的去中心化互聯(lián)網(wǎng)基礎(chǔ)設(shè)置方案的基本框架,其核心思想是把IP地址的分配與IP地址和ASN的綁定關(guān)系抽象成交易發(fā)布到區(qū)塊鏈系統(tǒng)中,利用區(qū)塊鏈賬本的分布式和防篡改特性防止惡意操作,但是文獻(xiàn)并沒有提出一個完整的解決方案。隨后Alfonso等[48]提出的SBTM、Paillisse等[49]提出的IPchain、Xing等[50]提出的BGPcoin、Angieri等[51]提出的InBlock和DII[52]、Saad等[53]提出的RouteChain以及He等[54]提出的ROAchain和Chen等[55]提出的ISRchain都是基于此思想的去中心化方案。InBlock強(qiáng)調(diào)互聯(lián)網(wǎng)號碼資源在初始時不屬于任何一個機(jī)構(gòu),資源的分配依靠智能合約完成,從根本上避免了互聯(lián)網(wǎng)號碼資源在屬于某個實體時(比如RIR),此實體封鎖資源分配的情況;BGPcoin解決了基于區(qū)塊鏈的去中心化互聯(lián)網(wǎng)號碼資源方案與BGP兼容性問題,其對資源分配對應(yīng)交易的流程設(shè)計完整,且基于以太坊搭建了本地仿真網(wǎng)絡(luò);ROAchain指出了之前方案采用基于PoW或PoS共識機(jī)制的不合理性,并設(shè)計了一套理論上更加安全有效的共識機(jī)制,大大提高了交易速率;ISRchain將AS之間的鄰接關(guān)系數(shù)據(jù)和商業(yè)關(guān)系數(shù)據(jù)上傳至區(qū)塊鏈,使系統(tǒng)能同時解決域間路由的路徑篡改和路由泄露問題?;趨^(qū)塊鏈的方案有諸多優(yōu)勢,比如:能有效防止CA惡意撤銷證書、相比于RPKI能保證RP獲取資源分配數(shù)據(jù)的一致性、簡化證書管理的復(fù)雜度等。但是,由于區(qū)塊鏈技術(shù)尚未完全發(fā)展成熟,基于區(qū)塊鏈的方案也存在一定的問題,比如交易吞吐量低、智能合約的安全性問題等。但由于區(qū)塊鏈去中心化、防篡改、可追溯的特性使得采用區(qū)塊鏈技術(shù)解決互聯(lián)網(wǎng)號碼資源分配的去中心化問題成為未來的一大趨勢。 ROA中maxlength字段使得ROA能以單個IP地址前綴的形式授權(quán)一個AS宣告一組合法的子前綴,其優(yōu)勢主要有以下兩點:(1)減少ROA中IP地址前綴條目,書寫方便,且減少了RP下放給路由器的IP地址前綴條目數(shù)量;(2)可使網(wǎng)絡(luò)管理員更加靈活便捷地重新配置其網(wǎng)絡(luò),無須更改ROA即可靈活地宣告maxlength范圍內(nèi)的任意子前綴。但同時,maxlength也給域間路由引入了新的安全風(fēng)險。 定義一個ROA中授權(quán)給某一AS的所有IP地址前綴(包括maxlength內(nèi)的子前綴)都在此AS的BGP宣告中出現(xiàn),則稱此ROA為“minimal ROA(最小化ROA)”,否則稱其為“l(fā)oose ROA(松散ROA)”[56]。比如maxlength值設(shè)置為/24,但是只有/20的子前綴出現(xiàn)在了此AS的BGP宣告中,則此ROA為“l(fā)oose ROA”。參考文獻(xiàn)[56]顯示2017年RPKI資料庫中30%的ROA都屬于“l(fā)oose ROA”。其主要原因是網(wǎng)絡(luò)管理員在設(shè)置maxlength值時一般非常寬松,超過85%的“l(fā)oose ROA”的maxlength值為24(IPv4)或48(IPv6)。但是網(wǎng)絡(luò)管理員一般不會將maxlength包含的所有子前綴都宣告出去,這部分被ROA覆蓋但是并沒有宣告出去的IP地址前綴很容易受到偽造源子前綴劫持(forged origin subprefix hijack)。 偽造源子前綴劫持示意圖如圖7所示,AS A是IP地址前綴1.2.0.0/16的合法擁有者,其允許宣告的最長前綴長度是24,但是其僅向AS B宣告了/16位的前綴,顯然此ROA為“l(fā)oose ROA”。惡意攻擊者AS 666通過偽造與AS A的鄰接關(guān)系,向AS B宣告了通過路徑666-A能到達(dá)前綴1.2.0.0/24。由于AS 666并沒有偽造IP地址前綴和源AS的對應(yīng)關(guān)系,此宣告并不會被AS B判斷為非法(invalid)。通過借助AS A發(fā)布的“l(fā)oose ROA”以及篡改路徑,AS 666能夠吸引到AS A沒有宣告出去的所有IP子前綴的流量。這種攻擊手段即被稱為偽造源子前綴劫持。 圖7 偽造源子前綴劫持示意圖 IETF草案[57]建議網(wǎng)絡(luò)管理員盡量將maxlength值設(shè)置成IP地址前綴的原始長度,或盡量把maxlength包含的子前綴都宣告出去,從而避免“l(fā)oose ROA”帶來的危害。參考文獻(xiàn)[58]指出,棄用maxlength并不會導(dǎo)致ROA數(shù)量的增加(一個ROA可包含多個IP地址前綴),且在RPKI全面部署的情況下,也不會對路由器需要驗證的IP地址前綴條目數(shù)量造成太大影響。已被標(biāo)準(zhǔn)化但尚未被部署的BGP安全(BGP security,BGPsec)[59]是基于RPKI的防止路徑篡改的方案。BGPsec的大規(guī)模部署能夠解決偽造源子前綴劫持問題,但由于其開銷極大,推廣部署進(jìn)行得十分緩慢,第4節(jié)將對BGPsec方案進(jìn)行介紹。 RPKI通過上層機(jī)構(gòu)給下層機(jī)構(gòu)簽發(fā)CA證書來實現(xiàn)資源授權(quán),但是由于上層機(jī)構(gòu)的錯誤配置或惡意操作等原因,同一個資源可能會被上層機(jī)構(gòu)分配給多個下層機(jī)構(gòu),造成資源所有權(quán)沖突。 目前真實運行的RPKI架構(gòu)存在多個信任錨,包括IANA和五大RIR[25],它們都擁有一個包含所有IP地址資源的自簽名根證書,可為下層機(jī)構(gòu)簽發(fā)帶有任意IP地址資源的CA證書(正常情況下,一個RIR只能再分配自己擁有的那部分IP地址)。這就會導(dǎo)致潛在的一個IP地址前綴(一塊IP地址)被多個RIR同時分配給下層機(jī)構(gòu),資源的重復(fù)分配造成路由沖突。但多個信任錨也存在一定的優(yōu)勢,當(dāng)一個RIR受限于某個國家或者其他外界因素的壓力,被迫封鎖一塊IP地址資源時,其他RIR依然可以完成這塊IP地址的再分配。 除了擁有所有IP地址資源根證書的五大RIR可以造成資源重復(fù)分配之外,由于RPKI并沒有機(jī)制從技術(shù)上保證同一塊IP地址不能被分配多次,RPKI架構(gòu)中的任意資源持有者理論上都可以重復(fù)分配其資源。但除了合法的MOAS,任何IP地址資源都不應(yīng)該被同時分配給兩個機(jī)構(gòu)。因此,資源持有者也應(yīng)通過驗證證書的過程及時發(fā)現(xiàn)自己持有的資源是否被上層機(jī)構(gòu)重復(fù)分配。 由于RPKI的層級化資源授權(quán)架構(gòu),下層機(jī)構(gòu)簽發(fā)ROA需要上層機(jī)構(gòu)提前簽發(fā)CA證書(向上依賴),上層機(jī)構(gòu)簽發(fā)的ROA也可能會影響下層機(jī)構(gòu)的BGP宣告(向下影響)。機(jī)構(gòu)之間簽發(fā)證書的依賴和簽名對象相互影響會對路由源驗證造成一定的危害[56]。 向上依賴:RPKI體系中向上依賴示意圖如圖8(a)所示,ISP A從RIR處分得地址10.1.0.0/16,但是RIR并沒有給其簽發(fā)CA證書,因此ISP A不能通過簽發(fā)ROA對象來保護(hù)自己擁有的地址塊,同時ISP A也不能進(jìn)一步給下層機(jī)構(gòu)AS 1和AS 2簽發(fā)CA證書。由于下層機(jī)構(gòu)對上層機(jī)構(gòu)的依賴,導(dǎo)致下層機(jī)構(gòu)部署RPKI受到限制(需等上層機(jī)構(gòu)先部署),不利于RPKI部署率的增加。 圖8 RPKI體系上下層依賴示意圖 向下影響:RPKI體系中向下影響示意圖如圖8(b)所示,ISP A從RIR處分得地址10.1.0.0/16,并獲取相應(yīng)的CA證書,ISP A通過簽署ROA將此地址塊與AS1綁定。隨后ISP A將子前綴10.1.8.0/21分配給AS2,但是AS2 并沒有簽發(fā)ROA保護(hù)自己擁有的地址塊。由于路由源驗證的規(guī)則(前綴覆蓋、maxlength符合、ASN不匹配),AS2的BGP宣告會受ISP A簽發(fā)ROA的影響被誤判為前綴劫持,進(jìn)而導(dǎo)致BGP宣告被其他AS拒收。 因此建議下層機(jī)構(gòu)從上層機(jī)構(gòu)分得IP地址資源時,盡量要求上層機(jī)構(gòu)為其簽發(fā)CA證書,避免“向上依賴”;上層機(jī)構(gòu)在為擁有的大塊IP地址簽發(fā)ROA時,盡量幫助或者督促下層機(jī)構(gòu)(分得了子前綴)簽發(fā)ROA保護(hù)地址塊。參考文獻(xiàn)[56]提出了“wildcard ROA”方案緩解“向下影響”,核心思想是在ROA中增加一個剔除某些IP地址塊的字段,使得上層機(jī)構(gòu)在為擁有的IP地址塊簽署ROA時,能夠?qū)⒁呀?jīng)分配出去的子前綴剔除掉,從而避免影響下層機(jī)構(gòu)的BGP宣告。 BGPsec[59]是建立在RPKI基礎(chǔ)上的防止域間路由路徑篡改的方案。BGPsec要求前一個AS在向下一跳AS傳播BGP宣告時,附帶上自身的簽名保證路徑的真實性。與RPKI不同的是,其并非帶外路徑驗證機(jī)制,BGPsec對BGP進(jìn)行了修改,在BGP報文中增加了BGPsec_path字段來攜帶逐跳的路徑簽名信息。BGPsec逐跳加密示意圖如圖9所示,ASa向ASb發(fā)起原始路由宣告,ASa在BGP宣告的BGPsec_path字段加入前綴和路徑信息(ap1),并用自己的密鑰對ap1進(jìn)行簽名;ASb收到來自ASa的宣告后,提取BGPsec_path中的簽名(sign1)、自身的ASN及下一跳的ASN組合成ap2,并對其簽名生成sign2,而后將 圖9 BGPsec逐跳加密示意圖 BGPsec通過逐跳簽名的機(jī)制有效地防止了路徑篡改,但是其要求一條路徑上的所有AS都具備簽名和驗證的功能,在網(wǎng)絡(luò)中的AS部分部署B(yǎng)GPsec的情況下,效果有限(一條路徑上的一跳不可驗證,則這條路徑就無法驗證)。同時,BGPsec面臨著協(xié)議降級攻擊,有些惡意AS故意采用舊版本的BGP(不支持BGPsec),使得其惡意行為并不能被檢測[60]。BGPsec由于需要邊界路由器對每一個BGP宣告都驗證、簽名,無疑給路由器帶來了不小的開銷。 正在IETF標(biāo)準(zhǔn)化的草案AS供應(yīng)商授權(quán)(autonomous system provider authorization,ASPA)[61]旨在解決如何使RPKI支持路由泄露檢測的問題。草案建議在RPKI資料庫中新增一種簽名對象ASPA表示AS之間的客戶到提供商(customer to provider,C2P)關(guān)系(BGP宣告層面的C2P關(guān)系,非具體的商業(yè)關(guān)系)。ASPA是由扮演客戶角色的AS進(jìn)行簽名的簽名對象,對于選定的一組IP地址簇(address family identifier,AFI),該對象將一組供應(yīng)商ASN與此客戶ASN綁定。ASPA簽名對象可由三元組 RP可以利用同步到的ASPA簽名對象驗證一條AS-path是否存在路由泄露。一條AS-path是否存在路由泄露可以通過驗證這條AS-path上所有相鄰的AS是否存在路由泄露完成。輸入為 ASPA繼承了RPKI技術(shù)的思想,不改動BGP,避免給交換機(jī)增加額外的開銷,是一種帶外的驗證機(jī)制。其支持增量部署,不存在BGPsec的“降級攻擊”問題。但其不能驗證更復(fù)雜的傳輸關(guān)系,比如AS之間的互相傳輸關(guān)系(mutual transit)。同時,AS之間的傳輸關(guān)系一般由AS之間的商業(yè)關(guān)系確定,存在間接暴露AS之間的商業(yè)關(guān)系的風(fēng)險,而商業(yè)關(guān)系一般被AS視為機(jī)密,影響AS部署的積極性。 作為保障域間路由安全的重要互聯(lián)網(wǎng)基礎(chǔ)設(shè)施,RPKI技術(shù)及相關(guān)問題越來越受工業(yè)界和學(xué)術(shù)界重視。自2019年,RPKI的部署率得到了極大的改善。但是,RPKI同樣也存在著自身的缺陷,比如可擴(kuò)展性問題、maxlength帶來的安全風(fēng)險、潛在的資源重復(fù)分配以及上下層CA權(quán)利不均衡等問題。已有工作提出了諸多解決或緩解方案,但是目前這些方案自身也存在不足,有效性也有待驗證,距離被IETF采納尚有距離。且RPKI只能預(yù)防最簡單的前綴劫持或子前綴劫持,并不能預(yù)防帶有路徑篡改和路由泄露的更“高級”的劫持或惡意攻擊。因此,改進(jìn)RPKI以及對RPKI進(jìn)行功能擴(kuò)展是目前研究的焦點。下面對RPKI未來的研究重點和發(fā)展趨勢進(jìn)行探討。 (1)去中心化RPKI 如何平衡RPKI架構(gòu)中上層CA與下層CA的權(quán)利、如何避免資料庫中的對象被惡意破壞是研究人員關(guān)注的焦點。由于區(qū)塊鏈的去中心化、防篡改、可追溯的特性,使其有望解決RPKI存在的中心化、可篡改的問題。目前學(xué)術(shù)界也提出了多種基于區(qū)塊鏈的去中心化互聯(lián)網(wǎng)基礎(chǔ)設(shè)施方案(參考第3.2節(jié)),但區(qū)塊鏈本身的技術(shù)限制以及目前RPKI已初具部署規(guī)模的事實使得完全基于區(qū)塊鏈的方案離真正落地還有距離。將區(qū)塊鏈技術(shù)或其他防篡改賬本技術(shù)作為保障RPKI去中心化以及防篡改的帶外機(jī)制,在RPKI的基礎(chǔ)上設(shè)計與RPKI兼容的輕量級方案來限制CA或者RIR惡意頒發(fā)、破壞證書的機(jī)制有望解決目前完全基于區(qū)塊鏈去中心化方案面臨的困境。 (2)RPKI功能擴(kuò)展 RPKI目前僅支持簡單的前綴劫持和子前綴劫持預(yù)防,并不能預(yù)防路徑篡改和路由泄露。擴(kuò)展RPKI的功能,使其支持預(yù)防BGP面臨的其他安全問題也是研究關(guān)注的焦點。目前,基于RPKI的BGPsec方案面臨開銷較大、協(xié)議降級攻擊等問題;ASPA存在暴露AS之間商業(yè)關(guān)系的風(fēng)險。如何降低基于RPKI的功能擴(kuò)展方案的開銷、如何使其支持增量部署、如何保護(hù)AS隱私性是亟待解決的問題。目前,如SMPC(secure multi-party computation,安全多方計算)等基于隱私保護(hù)的計算模式有望使得AS在不泄露具體隱私信息的場景下,聯(lián)合完成某一計算任務(wù)(判斷一條AS-PATH是否存在路由泄露等),為AS之間協(xié)作檢測異常提供了可能性。 目前,RPKI的部署規(guī)模雖有較大的增長,但是距離全面部署仍存在距離,讓網(wǎng)絡(luò)管理員深入了解RPKI技術(shù)、解決RPKI存在的問題以及擴(kuò)展RPKI的功能是提高RPKI部署率的關(guān)鍵。2.4 本地化互聯(lián)網(wǎng)號碼資源管理策略
2.5 RPKI部署情況
3 RPKI存在的問題及研究進(jìn)展
3.1 RPKI可擴(kuò)展性問題
3.2 RPKI資料庫對象相關(guān)惡意操作
3.3 最長前綴長度
3.4 資源重復(fù)分配
3.5 上下層CA依賴
4 RPKI功能擴(kuò)展
4.1 BGPsec簽名機(jī)制
4.2 ASPA供應(yīng)商授權(quán)機(jī)制
5 結(jié)束語