基于区块链的RPKI中CA资源异常分配检测技术
2019-03-18彭素芳刘亚萍
彭素芳 刘亚萍
摘 要: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中生成的颁发证书及父证书的哈希值发送给“验证合约”。“验证合约”除了验证证书签发的有效性,即验证父证书是不是颁发证书的签名证书,还将进行未经授权资源分配、资源重复分配及资源重叠分配的检测。未经授权资源分配检测过程:从颁发证书获取证书中的资源,根据父证书的哈希值从区块链中获取父证书的资源,遍历颁发证书的资源组,验证颁发证书的资源是否都包含在父证书的资源中。资源重复分配及资源重叠分配检测过程:根据父证书的哈希值从区块链上获取子证书的哈希值数组,根据子证书的哈希值从区块链上获取子证书的资源,遍历各个子证书的资源组,验证颁发证书中是否有和子证书中的资源重复或重叠的资源。“验证合约”验证通过的证书存储到区块链,区块链上添加了一条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.