2021-4-10 | 互联网
1IP地址分配与域间路由安全传统的域间路由协议BGP[4](bordergatewayprotocol,边界网关协议)存在很多安全隐患[5],对路由通告内容不加以验证,错误甚至蓄意伪造的路由可达信息可以随意在互联网上传播。具体表现为两种形式:IP地址前缀劫持和自治域路径信息窜改。前者是指某个自治域发出一个非本自治域内的IP地址前缀路由可达通告,导致网络中以该IP地址前缀为路由目的的全部或者部分流量被路由至该自治域;后者是指蓄意修改BGP报文的自治域路径信息以传播虚假的网络拓扑信息,为后续网络攻击行为作铺垫。
有众多研究针对BGP的安全缺陷提出了解决方案:a)以S-BGP[6]、SoBGP[7]等为代表,旨在协议层面弥补BGP的安全缺陷,以抵御IP地址前缀劫持和自治域路径信息窜改两种形式的攻击;b)以DoAV[8]、IPa+[9]以及RPKI[10]为代表,从完善IP地址分配机制的角度来避免IP地址前缀劫持。前者涉及BGP的协议改进,与IP地址管理无直接联系,本文不作讨论;后者从IP地址管理的角度出发来保障互联网域间路由安全,是本文要探研讨的重点。
IP地址前缀和路由源的自治域号(AS号)的正确映射关系是抵御IP地址前缀劫持的关键。互联网注册机构(如亚太互联网络信息中心)天然地拥有AS号和IP地址的分配信息以及两者的映射关系,但这些信息缺乏统一的数据格式,数据的完整性和一致性也缺乏保障。此外,提供这些信息的查询工具WHOIS[11]协议没有验证机制,很容易遭受各种类型的攻击。因此,有效地组织IP地址分配信息并构建授权信息的验证体系,成为在IP地址管理层面抵御IP地址前缀劫持的技术路线。
1.1基于DNS资源记录的路由源信息发布
基于DNS的公共目录服务性质和DNSSEC[12]安全扩展机制,以DoAV和IPa+为代表的技术方案通过对DNS相关资源记录进行修改,实现了IP地址前缀和其路由源映射关系的发布。使用DNS反向解析树来反映IP地址分配以及授权信息,是这类技术方案的核心思想。DoAV建议在DNS反向解析树中新增一条子树bgp.in-ad-dr.arp来实现特定IP地址前缀到其路由源AS号的映射。
DoAV设计了一种新的DNS资源记录类型“AS记录”来完成信息的发布。假定IP地址前缀205.1.1/24授权AS号为2914的自治域为其通告路由可达信息,那么该IP地址前缀信息的持有机构,在其维护的DNS区文件中添加的资源记录为1.1.205.bgp.in-addr.arpa.AS291424。基于DoAV的设计,边界路由器在使用BGP交换路由可达信息时,在DNS反向解析树中查询相关IP地址前缀的AS记录,以验证BGP消息中IP地址前缀的路由可达信息是否属实。而DNS查询数据本身的可信问题交由DNSSEC去解决。考虑到新设计的AS记录在短期内无法部署,DoAV建议将相关的路由源信息数据放在TXT记录中,但并未给出详细的TXT文本表示语法。
作为域间路由安全领域的典型解决方案,S-BGP尽管设计周密,但需要重新构建一个全球范围的PKI[13]是其部署的最大障碍。2009年底,ICANN(theInternetCorporationforAs-signedNamesandNumbers,互联网名称与数字地址分配机构)对DNSSEC实施“根签”,构建了一个基于DNS树的全球信任体系。为解决S-BGP在部署方面的困难,IPa+将DNSSEC资源记录作为一种轻量级的证书,以完成IP地址前缀与其持有实体公钥的关联。与DoAV类似,IPa+也利用了DNS中的IP地址反向解析树来完成资源的发布,并通过DNSSEC中新增的DS记录来证明IP地址的授权分配关系。例如,ARIN(北美互联网注册机构)持有IP地址块165.0.0.0/8,将其子空间165.72.0.0/16分配给AT&T(美国电话电报公司)。按照IPa+的设计,ARIN通过DNSSEC的DS资源记录72.165.in-addr.arpaDSHash(KEYAT&T)来证明AT&T公钥的真实性,以支撑S-BGP所设计的路由可达信息签名机制。考虑到IP地址前缀的路由源信息不会太过频繁,为提高验证效率,IPa+采用了周期查询并将查询结果进行缓存的验证机制。
1.2基于RPKI的路由源声明正如IPa+提到的那样,构建一个覆盖全球范围的PKI是S-BGP的最大部署障碍。然而,RPKI(resourcePKI)[10]的出现,不仅为S-BGP提供了实施基础,更为IP地址资源管理提供了一个可信的基础平台。
以X.509证书基本格式为基础,RPKI通过使用资源证书扩展[14]延伸了PKI的功能。资源证书扩展添加了新的X.509值域,用于携带证书持有者所拥有的IP地址资源或AS号。参照现有的IP地址分配体系,上游节点既是其邻接下游节点的资源分配者,也是其邻接下游节点所持有资源证书的颁发者。
由于层次化的IP地址分配体系,RPKI为树型信任结构,并采用分布式的RPKI资料库存储IP地址分配信息。每当有IP地址分配信息更新时,RPKI中的IP地址分配者就将新签发的资源证书发布到其管理的RPKI资料库中。
基于RPKI,IP地址前缀的路由源信息经由一种称为路由源声明的签名项发布,用于说明某个IP地址前缀授权给某个AS号进行路由可达通告。当需要授权某个AS号为特定的IP地址前缀通告路由可达信息时,该IP地址前缀的持有者使用其资源证书对应的私钥签发一个EE(endpointentity)证书,然后再用EE证书对应的私钥产生路由源声明签名项。EE证书中的IP地址前缀与路由源声明所表征的IP地址前缀一致。
完成授权后,IP地址前缀持有者将相应的路由源声明连同产生该签名项的EE证书发布到其管理的RPKI资料库中。
依托RPKI所提供的可信IP地址分配信息以及授权信息,验证者和RPKI服务器负责将这些信息推送给边界路由器,供其验证BGP消息所携带的IP地址前缀路由源信息。验证者(relyingparty)在全球范围内周期性地下载各个RPKI资料库的数据,并通过构造证书路径完成对路由源声明的验证。验证通过后,路由源声明中携带的授权信息被推送到全球各个角落的本地缓存中。一旦收到关于某个IP地址前缀的路由可达通告,边界路由器通过RPKI/router协议[15]向RPKI服务器发起查询,获得本地缓存的关于该IP地址前缀的授权信息,同路由可达通告中携带的路由源信息比较是否一致,并结合本地策略选择是否信任该路由可达通告。