彭素芳 劉亞萍



摘 ? 要:RPKI用于保障互聯網基礎號碼資源的可信分配和安全使用。隨著RPKI技術的發展,由于RPKI的安全性依賴于CA機構,所以RPKI中與CA機構相關的安全性問題逐漸突出。文章針對由于CA機構的惡意操作或者誤操作在資源分配過程中出現的資源異常分配的風險,提出了基于區塊鏈CA資源異常分配的檢測技術。這項技術可以有效地解決RPKI資源分配過程中的資源未經授權分配、資源再次分配的問題,同時可以避免單點故障的風險,最后通過實驗驗證了這種機制的有效性和可行性。
關鍵詞:資源公鑰基礎設施;資源未經授權分配;資源再次分配;區塊鏈
中圖分類號:TP309 ? ? ? ? ?文獻標識碼:A
Abstract: RPKI is used to guarantee the trusted distribution and secure the use of internet basic number resources. With the development of RPKI, since the security of RPKI depends on the certificate authority, the security issues related to the certificate authority in RPKI are becoming more prominent. Due to the malicious operation or misoperation of the certificate authority, resource allocation risks by CAs in RPKI occur. In order to solve the problem, this paper proposes a detection technology of CA resource abnormal allocation in RPKI based on Blockchain. This technology can effectively avoid the risk of unauthorized resource assignment and resource reassignment in RPKI, and it can avoid the risk of single points of failure. The effectiveness and feasibility of this technology are verified by experiment.
Key words: RPKI; unauthorized resource assignment; resource reassignment;blockchain
1 引言
資源公鑰基礎設施(Resource Public Key Infrastructure,RPKI)[1]是一種用于保障互聯網基礎號碼資源(包括AS號和IP資源)[2]安全使用的公鑰基礎設施。通過對X.509公鑰證書[3]進行擴展,RPKI中的證書權威機構(Certificate Authority,CA)在分配資源時會生成相應的資源證書,依托資源證書實現了對互聯網基礎號碼資源使用授權的認證,并以路由源聲明(Route Origin Attestation,ROA)[4]的形式幫助域間路由系統,驗證某個AS針對特定IP地址前綴的路由通告是否合法。
然而,RPKI中CA機構的誤操作或者惡意操作,可能會造成資源的異常分配,最終導致資源不可用或者資源沖突的問題[5,6]。雖然,目前有相關的研究提出了通過增強CA的“事前控制”機制和增強RP的“滯后”操作來克服該問題,但是只能解決部分資源異常分配的問題,同時存在單點故障的風險。
區塊鏈技術屬于一種去中心化的記錄技術,網絡中不存在中心節點,各節點地位平等。區塊鏈技術具有防篡改、自治性的特性。區塊鏈的防篡改特點是通過數據加密和共識算法來保證的。自治性是指通過共識算法和智能合約來實現節點自主運行,系統無需信任的第三方也可以自動地正確執行[7,8]。本文提出了一種基于區塊鏈的RPKI中CA資源異常分配的檢測技術,用于檢測RPKI中CA資源的異常分配。區塊鏈的共識機制使得多個節點執行資源分配檢測過程,避免了該機制中的單點故障風險。由于區塊鏈自主性特點,節點自動執行CA資源分配的檢測機制,可以避免節點惡意繞過CA資源分配檢測。機構的證書頒發操作記錄在區塊鏈上,區塊鏈的防篡改特性避免了機構惡意篡改證書頒發記錄,便于出錯后的查證工作。本文提出的機制,解決了RPKI中的CA資源分配的異常問題,增強了RPKI中CA資源分配的安全性。最后,實驗表明該機制不但有效地解決了資源未經授分配、資源再次分配的資源分配異常問題,而且還避免了單點故障的風險。
2 RPKI中CA資源分配及異常問題
RPKI中資源的分配屬于層次化分配體系[9],如圖1所示,層次的頂端是互聯網數字分配機構(The Internet Assigned Numbers Authority,IANA),其下是五大區域互聯網注冊機構(Regional Internet Registry,RIR),RIR負責管理自己地域內的IP地址和AS號碼資源。在一些地區,如亞太互聯網絡信息中心(Asia Pacific Network Information Center,APNIC),分配體系的第三層是國家互聯網注冊機構(National Internet Registry,NIR)和本地互聯網注冊機構(Local Internet Registry,LIR)及獨立分配的IP地址持有者。在其他地區,第三級只由互聯網服務提供商(Internet Service Provider,ISP)/LIR和獨立資源持有者構成。
通常,IP地址塊的持有者會分配其地址塊的一部分給自己的部門或者與其有注冊關系的機構?;谶@種架構,IP地址的分配關系可以被層次化的PKI[10]描述―每個證書都描述一次IP地址分配。這種描述同樣適用于AS號碼的分配,但是AS號碼不能由除RIR和NIR之外的機構再次分配。IP地址和AS號碼由同一套RPKI維護。
RPKI中有兩種證書[11]:一種為CA證書,用于表明某個實體對AS號和IP地址的所有權;另一種為EE證書,用于對ROA進行簽名驗證。CA機構將發布的證書以及相關數據發送到Repository[12]中,依賴方(Relying Party,RP)用于同步Repository中的簽名數據,并進行ROA的驗證。邊界路由器收到路由通告的時候,向RPKI服務器查詢關于某IP地址前綴的授權信息,再與路由通告中的路由源消息比較是否一致,從而進行路由決策[13],RPKI運行機制如圖2所示。
針對RPKI中資源分配過程中出現的資源異常分配問題,Fu Y、Wang C等人[5]將資源異常分配情況分為未經授權資源分配、資源再次分配和資源轉移三種情況。資源轉移是兩個互聯網注冊機構之間的私下約定,本文考慮了未經授權資源分配和資源再次分配的這兩種問題,暫不考慮資源轉移的問題。
未經授權資源分配是指CA節點將不屬于自己的AS資源或IP資源分配給下級節點。未經授權資源分配分為完全未經授權資源分配和部分未經授權資源分配。完全未經授權資源分配指CA節點分配給下級節點的所有資源都不屬于該CA節點的合法資源。部分未經授權資源分配指CA節點分配給下級節點的部分資源不屬于該CA節點的合法資源。如圖3所示,APNIC頒發證書給JPNIC,此過程為正常分配,但是APNIC頒發證書給TWNIC和APNIC分配給TWNIC的資源都不屬于APNIC的合法資源,此過程為完全未經授權資源分配,APNIC頒發證書給CNNIC,APNIC分配給CNNIC的資源中,ASN 666不屬于APNIC的合法資源,此過程為部分未經授權資源分配。
資源再次分配是指CA節點將已經分配給某個下級節點的資源再次分配給其他下級節點。資源再次分配可分為三種類型:Matching、Subset和Intersection。
Matching指CA節點分配給某下級節點的資源和已經分配給另一個下級節點的資源相同。如圖4所示,APNIC先頒發證書給JPNIC,此過程為正常分配,之后APNIC頒發證書給CNNIC,APNIC給CNNIC分配的資源和APNIC分配給JPNIC的資源相同,此過程為Matching類型的資源再次分配。
Subset是指CA節點分配給某下級節點的資源包含已經分配給另一個下級節點的資源。如圖5所示,APNIC先頒發證書給JPNIC,此過程為正常分配,之后APNIC頒發證書給CNNIC,APNIC給CNNIC分配的資源包含APNIC已經分配給JPNIC的資源,此過程為Subset類型的資源再次分配。本文的“資源重復分配”包括Matching和Subset這兩種類型。
Intersection是指CA節點分配給某下級節點的資源和已經分配給另一個節點的資源有重疊,以下稱Intersection類型為資源重疊分配。如圖6所示,APNIC先頒發證書給JPNIC,此過程為正常分配,APNIC再頒發證書給CNNIC,APNIC給CNNIC分配的資源和APNIC分配給JPNIC的資源有重疊,此過程為Intersection類型的資源再次分配。
RPKI中沒有針對CA資源分配的檢測機制。目前,提出通過增強CA或者RP的功能來避免RPKI中CA資源異常分配的風險,風險的研究仍然處于RFC草案階段。
3 基于區塊鏈的RPKI中CA資源異常分配檢測技術
Fu Y、Wang C等人[5]認為,可以通過增強CA或者RP功能來避免資源異常分配的風險。RPKI中的RP用于對RPKI中產生的證書和ROA等數字簽名對象進行驗證,但是RP只驗證資源證書鏈的簽發,不檢測資源分配過程中出現的異常情況。通過完善和改進現有RP的功能來解決資源異常問題的機制屬于一種“滯后”操作,在CA產生了錯誤操作之后,利用改進后的RP對資料庫中的數字簽名對象進行驗證,如果驗證不通過,則需要對CA進行通知,以便CA可以及時糾正錯誤,此機制需要一個故障恢復等待的時間,此時間為RP發現錯誤后通知CA,CA重新頒發正確的證書到RP所需的時間[14]。
為了減少由于CA機構的錯誤操作所導致的故障恢復等待時間,文獻[6]提出一種“事前控制”機制來解決資源未經授權分配和資源重復分配的問題,并用實驗驗證了“事前控制”機制的可行性。通過修改rpki.net提供的RPKI-CA[15]工具,在進行證書頒發之前對頒發的資源進行驗證,如果屬于資源未經授權分配或資源重復分配,那么頒發證書的操作將不被允許。這種機制需要資源持有者本地執行資源分配之前的驗證,如果資源持有者被攻擊成為惡意節點,不執行頒發證書前的本地驗證機制,依然可以執行資源重復分配及資源未經授權分配操作,因此存在單點故障的風險。另外,該機制存在只考慮了資源未經授權分配及資源重復分配的問題,沒有考慮資源重疊分配問題的缺陷。
本文提出的基于區塊鏈的事前控制機制(Pre-Control Mechanism Based on Blockchain,簡稱BPCM技術)結合區塊鏈對頒發的證書進行驗證,驗證通過的證書才是有效地證書,此技術采用了“事前控制”的原理。其主要思想:(1)增加資源重疊分配檢測機制,覆蓋更多的資源異常分配問題;(2)利用區塊鏈提出的“合約”的概念,合約是一段在區塊鏈上自動執行的程序。一旦將合約發布到區塊鏈上,合約將不可更改,節點調用合約即可自動執行程序[16],通過在區塊鏈上部署的CA資源異常分配驗證合約(簡稱“驗證合約”),通過多個第三方驗證,保證資源分配的無沖突性;(3)在區塊鏈上驗證RPKI中CA資源證書頒發過程,記錄機構的證書頒發操作,可有效地避免機構的惡意操作,便于出錯后的查證工作;(4)在區塊鏈使用PBFT等共識算法下,可以使得所提出的BPCM技術滿足一定的容錯性,有效地解決RPKI中存在的單點故障問題。
在RPKI中,CA機構頒發證書后,證書存放在Repository中,RP機構周期性的同步證書,并對資源證書鏈進行證書簽發有效性驗證。
在BPCM技術中,將CA機構作為區塊鏈的節點加入區塊鏈中,CA機構頒發的證書需要發送給“驗證合約”驗證,驗證通過后才能存放到區塊鏈上,區塊鏈代替了RPKI中的Repository的功能。區塊鏈上存儲的數據是“Key-Value”形式,Key值為證書的哈希值,Value字段存有證書字節、證書的資源、證書頒發的子證書哈希值數組(如果證書沒有子證書,數組為空)。子證書的哈希值也是區塊鏈上的Key值,對應的Value字段有證書字節、證書的資源以及該證書頒發的子證書的哈希值,如圖7所示。
在BPCM技術中,CA節點加入區塊鏈后,將RPKI中生成的頒發證書及父證書的哈希值發送給“驗證合約”?!膀炞C合約”除了驗證證書簽發的有效性,即驗證父證書是不是頒發證書的簽名證書,還將進行未經授權資源分配、資源重復分配及資源重疊分配的檢測。未經授權資源分配檢測過程:從頒發證書獲取證書中的資源,根據父證書的哈希值從區塊鏈中獲取父證書的資源,遍歷頒發證書的資源組,驗證頒發證書的資源是否都包含在父證書的資源中。資源重復分配及資源重疊分配檢測過程:根據父證書的哈希值從區塊鏈上獲取子證書的哈希值數組,根據子證書的哈希值從區塊鏈上獲取子證書的資源,遍歷各個子證書的資源組,驗證頒發證書中是否有和子證書中的資源重復或重疊的資源?!膀炞C合約”驗證通過的證書存儲到區塊鏈,區塊鏈上添加了一條Key值為頒發證書的哈希值,Value值為頒發證書字節、頒發證書的資源、子證書哈希值數組(此時數組為空)字段的記錄,同時需要將證書的哈希值添加到父證書的Value中的子證書哈希值數組字段中。當節點收到一個資源證書時,只需要去區塊鏈上查詢這個資源證書是否存在,如果存在,代表這個證書是受“驗證合約”驗證通過的合法資源證書。
頒發證書過程如圖8所示。
4 實驗
實驗在Ubuntu 14.04系統下進行,節點在Docker容器內運行,實驗分為功能實驗和安全實驗。功能實驗分別在RPKI實驗、文獻[6]提出的技術、本文提出的BPCM技術下進行。RPKI使用由rpki.net提供的RPKI-CA和 RPKI-RP[17]工具,按照相應的CA節點配置,配置節點的資源以及節點間的父子關系,完成實驗環境的搭建。文獻[6]提出的技術中,使用修改后的RPKI-CA工具進行實驗。本文中,實驗在Hyperledger Fabric[18,19]系統部署完“驗證合約”的環境中進行,Fabric系統采用的共識算法為RAFT算法。功能實驗按照未經授權資源分配、資源重復分配、資源重疊分配三種場景下進行實驗驗證。安全實驗在文獻[6]提出的技術和本文提出的BPCM技術下進行。
4.1 功能實驗
4.1.1 未經授權資源分配實驗
實驗按照圖3的CA節點層次關系進行實驗,APNIC給TWNIC分配資源{ASNs:627;IP Prefixes: 172.6.27.0/25},其中資源{ASNs:627;IP Prefixes:172.6.27.0/25}不屬于APNIC所擁有的合法資源。
由于資源未經授權分配,理論上該證書頒發應該不通過。在RPKI實驗中,由于不檢測資源分配情況,證書頒發通過。文獻[6]中,未通過APNIC節點的本地資源未經授權分配檢測,證書頒發未通過。BPCM技術中,“驗證合約”的資源未經授權分配檢測未通過,證書頒發未通過,實驗結果如表1所示。
4.1.2 資源重復分配實驗
資源重復分配實驗包括Matching類型實驗和Subset類型實驗。Matching類型實驗按照圖4的CA節點層次關系進行實驗配置,APNIC已經給JPNIC分配了資源{ASNs:75540-75544;IP Prefixes: 201.0.
113.0/25},現APNIC給CNNIC分配資源{ASNs:75540-75544;IP Prefixes:201.0.113.0/25}。APNIC往CNNIC節點分配的資源和 APNIC節點分配給JPNIC節點的資源重復。
Subset類型實驗按照圖5的CA節點層次關系進行實驗配置。APNIC已經給JPNIC分配了資源{ASNs:75540-75544;IP Prefixes:201.0.113.0/25},現APNIC給CNNIC分配資源{ASNs:75550、75540-75544; IP Prefixes:200.0.2.0/25、201.0.113.0/25}。
APNIC往CNNIC節點分配的資源中,包含 APNIC節點分配給JPNIC節點的資源。
由于資源重復分配,理論上本文的兩個實驗中頒發的證書均不通過。在RPKI實驗中,由于不進行資源分配檢測,兩個實驗中頒發的證書均通過。文獻[6]中,未通過APNIC本地的資源重復分配檢測,證書頒發未通過。在BPCM技術中,“驗證合約”的資源重復分配檢測未通過,兩個實驗中頒發的證書均未通過,實驗結果如表1所示。
4.1.3 資源重疊分配實驗驗證
通過實驗按照圖6的CA節點層次關系進行實驗配置,APNIC已經給JPNIC分配了資源{ ASNs:75540-
75544;IP Prefixes:201.0.113.0/25},現假設APNIC節點要給CNNIC節點分配資源{ASNs:75542-75550;IP Prefixes: 201.0.113.0/25}。APNIC給CNNIC節點分配的資源和APNIC已分配給JPNIC節點的資源有重疊。
由于資源重疊分配,理論上該證書頒發應該不通過。RPKI實驗,由于不進行資源分配檢測,證書頒發通過。文獻[6]中,未考慮資源重疊分配檢測,證書頒發通過。在BPCM技術中,“驗證合約”的資源重疊分配檢測未通過,證書頒發未通過,實驗結果如表1所示。
4.2 安全實驗
安全實驗在文獻[6]、BPCM技術中進行。安全實驗按照圖3的資源未經授權分配、圖4的Matching類型資源重復分配及圖5的Subset類型的資源重復分配的場景進行實驗驗證。假設APNIC節點被攻擊,頒發前不進行本地的資源分配檢測工作。
文獻[6]中,由于APNIC被攻擊,繞過了本地的資源分配檢測工作,實驗中頒發證書均成功生成。在BPCM技術中,APNIC節點不進行本地的資源分配檢測,生成錯誤的資源證書,由于資源證書需要區塊鏈的其他背書節點來運行“驗證合約”來檢測,“驗證合約”依然可以檢測出資源證書的錯誤,資源證書不可能通過“驗證合約”的檢測。實驗結果如表2所示,結果表明了BPCM技術在節點被攻擊后,仍可正常進行資源異常分配的檢測,不存在單點故障問題。
5 結束語
針對RPKI中CA資源分配中出現的資源未經授權分配、資源重復分配及資源重疊分配的資源分配異常問題,本文結合區塊鏈技術,采用了“事前控制”的思想,提出了基于區塊鏈的RPKI的CA資源異常分配的檢測技術—BPCM技術,并通過實驗驗證了該機制的可行性及安全性。
本文提出的BPCM技術,避免了RPKI中CA資源分配中出現的資源未經授權分配、資源重復分配及資源重疊分配的風險。結合區塊鏈技術,通過多個第三方的驗證,解決了單點故障的問題。在區塊鏈實現了“驗證合約”,在“驗證合約”上驗證RPKI中CA資源證書頒發過程,記錄了機構的資源分配過程,避免了機構惡意進行資源分配,增強了RPKI中CA資源分配的安全性,為RPKI提供正確的路由驗證功能提供了重要保障。
基金項目:
1.國家重點研發項目(項目編號:2018YFB1003602);
2.廣東省重點領域研發計劃項目(項目編號:2019B010137005)。
參考文獻
[1] 馬迪.RPKI 概覽[J].電信網技術,2012(9):30-33.
[2] C. Lynn, S. Kent, K. Seo. X.509 Extensions for IP ?Addresses and AS Identifiers[J]. IETF RFC 3779, June 2004.
[3] Housley R, Ford W, Polk W. Internet X.509 Public Key Infrastructure Certificate and CRL Profile[J]. IETF RFC 2459, April 2002.
[4] Lepinski M, Kent S, Kong D.A profile for route origin authorizations(ROAs)[J]. IETF RFC 6482, February 2012.
[5] Fu Y, Wang C, Yan Z, etal. Scenarios of unexpected ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? resource assignment in RPKI [EB/OL]. https://tools.ietf. ? ?org/html/draft-fu-sidr-unexpected-scenarios-02,2019.
[6] 劉曉偉,延志偉,耿光剛,李曉東.RPKI中CA資源分配風險及防護技術[J].計算機系統應用,2016,25(08):16-22.
[7] Nakamoto S. Bitcoin:A peer-to-peer electronic cash system[EB/OL]. https://bitcoin.org/bitcoin.pdf,2019.
[8] 王棟,石欣,陳智雨,呂梓童.區塊鏈智能合約技術在供應鏈中的應用研究[J].網絡空間安全,2018,9(08):8-17.
[9] Huston G, Michaelson G. Validation of route origination ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? using the resource certificate public key infrastructure (PKI) and route origin authorizations (ROAs) [J]. IETF RFC 6483, February 2012.
[10] Adams C, Farrell S, Kause T, et al. Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)[J]. Ietf Rfc Sri Network Information, 2005, 11(3):82-89.
[11] Lepinski M, Kent S. An infrastructure to support secure ? ? ? ? ? ? ? ? ? ? ? ? internet routing[J]. IETF RFC 6480, February 2012.
[12] Huston G, Loomans R, Michaelson G. A profile for ? resource certificate repository structure[J]. IETF RFC 6481, February 2012.
[13] Bush R. Origin validation operation based on the resource public key infrastructure (RPKI) [J]. IETF RFC 7115, January 2014.
[14] Kent S, Ma D. Adverse Actions by a Certification ?Authority(CA) or Repository Manager in the Resource Public Key Infrastructure(RPKI)[EB/OL].https://www.rfc-editor.org/rfc/ rfc8211.html, 2019.
[15] Dragon Research Labs.RPKI CA Tools [EB/OL]. http://rpki.net/wiki/doc/RPKI/CA,2019.
[16] Ethereum Project[EB/OL].https://www.ethereum.org/,2019.
[17] Dragon Research Labs. RPKI Relying Party Tools[EB/OL]. http://trac.rpki.net/wiki/doc/RPKI/RP, 2019.
[18] Hyperledger Fabric[EB/OL].https://www.hyperledger.org/projects/fabric, 2019.
[19] 周博軒,滿毅,劉寧寧,張奕欣,張翀.基于Hyperledger Fabric的生物數據安全管理[J].網絡空間安全,2019,10(04):55-60.