本站点使用Cookies,继续浏览表示您同意我们使用Cookies。 Cookies和隐私政策>

首页 信息速查 产品智能选型 IP知识百科

什么是RPKI?

RPKI(Resource Public Key Infrastructure,资源公钥基础设施)是一种基于PKI(Public Key Infrastructure,公钥基础设施)的技术,专门用于验证BGP发布的路由信息的真实性和合法性,防止路由劫持等网络安全问题。
PKI是一种用于管理和验证数字证书的技术,它主要用来保障数据交换的安全性和完整性。RPKI可以说是PKI的一种应用,专门用于保障BGP路由的安全性。

为什么需要RPKI?

早期互联网是由几个主要的核心AS(Autonomous System,自治系统)和一些边缘AS构成,各个AS之间通过一种域间路由协议,也就是BGP来交互路由信息,保障互联网的路由可达。这一时期互联网的主要目标是完成数据传输任务,各个AS之间相互可信,因此BGP设计之初并未考虑路由信息的真实可信问题。然而随着互联网从一个简单的信息共享平台发展到一个商业平台,互联网上已经有成千上万个遍布全世界的可路由AS,很难保证每个AS通告的路由信息都是完整的、真实的或可信的,在无任何安全机制的情况下,当邻居通告的是虚假路由信息时,域间路由系统面临严峻的安全威胁。

BGP是目前广泛使用的域间路由协议,是实现全球网络自治系统互联互通的基础保障,但是由于BGP缺乏对路由通告内容真实性的保障,无论是攻击者的蓄意攻击,或是网络管理员的错误配置都可能导致路由劫持问题的发生。路由劫持对互联网的正常运行影响极大,一些大规模的劫持事件甚至可能导致大面积的网络瘫痪。目前BGP最严重的一个安全威胁是BGP前缀劫持,BGP前缀劫持可以分为前缀劫持和子前缀劫持,如图1(b)和图1(c)所示。BGP正常发布场景如图1(a)所示,自治网络AS1是IP地址10.1.0.0/16的合法持有者,它通过BGP消息向外通告包含该前缀的AS_PATH为1的路由信息,该路由通告被AS2接收到,AS2一方面将目的地址包含在10.1.0.0/16地址块中的IP数据包经该路径发送给AS1,另一方面把自己的AS号加到该AS_Path的最前端,并继续向外通告该路由,即向外通告IP前缀为10.1.0.0/16,AS_PATH为<2 1>的路由。AS3、AS4和AS2类似,这里不再赘述。

而当前缀劫持发生后,恶意攻击者往往通过伪造BGP消息中的起源AS号来实施路由劫持,如图1(b)所示,在AS1向外通告10.1.0.0/16的基础上,AS4恶意伪造路由通告,即向外谎称自己是10.1.0.0/16的起源AS。AS3收到的10.1.0.0/16的真实路由的AS_PATH长度为2,虚假路由的AS_PATH长度是1,根据BGP最短AS_Path优先原则,AS3将选取该虚假路由,因此原本流向AS1的全部流量被劫持到AS4,这就是前缀劫持。

子前缀劫持是恶意攻击者通过构造更为详细的BGP路由消息来实施路由劫持,如图1(c)所示,在AS1向外通告10.1.0.0/16的基础上,AS4恶意构造更为详细的路由通告,即向外发出比10.1.0.0/16更加具体的通告,即10.1.0.0/24,根据BGP最长前缀匹配原则,AS2和AS3到达10.1.0.0/24的流量将会发往AS4,这就是子前缀劫持。

BGP前缀劫持场景
BGP前缀劫持场景

因此,互联网运营者期望有一种技术可以让某个IP地址的真正持有者能以明确、可验证的方式授权一个或者多个AS作为其地址的初始路由广播者,并且每个AS都可以获得该授权信息并进行验证,从而避免类似路由劫持这样的网络安全事故发生。为此,IETF安全域间路由(Secure Inter-Domain Routing,SIDR)工作组提出了RPKI协议并将其进行标准化。在图1(b)所示的例子中,部署RPKI以后,接收到虚假路由通告的AS3就可以明确判断AS1才是IP地址10.1.0.0/16合法的广播者,而AS4是假冒的,那么路由劫持现象就可以避免了。

RPKI的思想来源于1997年BBN公司提出的用以解决BGP前缀劫持问题的安全边界网关协议(Secure BGP,S-BGP)解决方案,S-BGP通过在BGP通告中附加AS的签名来验证IP地址前缀和AS的绑定关系,但是由于S-BGP存在密钥管理复杂、计算开销大等缺陷,并没有得以部署。RPKI正是沿用了S-BGP通过签名将IP地址前缀和AS号绑定的思想,但为了不修改BGP以及尽可能地降低边界路由器的开销,RPKI并没有在BGP通告中附加签名,而是将签名以一种带外的方式独立存储于RPKI资料库中,由专门的服务器获取并验证签名证书,路由器获取验证后的结果指导路由选择。因此与BGP兼容、带外的设计理念是RPKI得以部署的重要原因。

在网络中部署RPKI具有以下几方面的优势:

  • 保证网络安全:RPKI通过验证AS的授权关系,防止网络攻击者伪造路由来劫持网络数据流,从而保障网络安全。
  • 提高网络可靠性:RPKI可以提高路由的可信度和稳定性,减少路由泄露,从而提高网络的可靠性。
  • 保护用户商业利益:RPKI可以保护用户的商业利益,防止网络攻击者通过伪造路由来窃取用户的敏感信息,避免经济损失等问题。
  • 促进互联网健康发展:RPKI可以保障路由安全,从而促进互联网的健康发展。

RPKI是如何工作的?

重要概念

  1. 互联网号码资源分配架构

    如下图所示,互联网号码资源分配机构是一个负责管理全球互联网号码资源的组织,包括IP地址、AS号、域名等。它的主要职责是制定全球互联网号码资源的分配规则和标准,确保互联网的稳定和安全。

    互联网号码资源分配架构
    互联网号码资源分配架构
  2. 资源公钥基础设施

    RPKI是一种数字证书系统,它的基本功能就是对这些资源(IP地址、AS号)提供密码学上可验证的担保。

  3. 证书

    任何有权利进行资源再分配的资源持有者都必须能够为再分配资源签发证书。

    RPKI中的两大证书包括CA(Certificate Authority,证书颁发机构证书)证书和EE证书(End Entity Certificate,终端实体证书),CA证书用来担保IP地址和AS号的分配,因此CA证书将IANA和每个区域互联网注册管理机构(Regional Internet Registry,RIR)、国家互联网注册机构(National Internet Registry,NIR)以及互联网服务提供商(Internet Service Provider,ISP)关联起来;EE证书用来验证路由源授权(Route Origin Authorizations,ROA)。

    拥有CA证书的实体称为CA,每个CA都会维护一个自己的资料库供RP同步自己的证书和签名对象,RPKI资料库就是由所有CA的资料库共同组成的,这正是RPKI架构中的重要组成部分,证书存储系统。

  4. ROA

    ROA是指某个IP地址的所有者已经将其持有的IP地址授权给某个AS。

  5. RPKI资料库

    RPKI资料库是用来存储证书和签名的数据库。

  6. RPKI依赖方(Relying Party,RP)

    RPKI依赖方是连接RPKI体系和互联网域间路由系统之间的桥梁。RP负责从RPKI资料库中周期性地同步下载证书和签名(ROA),并进行验证,从而获得IP地址前缀与AS号的真实绑定关系。RP会将这一结果下发给路由器,路由器获得这些数据后用于判断BGP路由消息的真实性。

RPKI整体架构

如前文所述,RPKI是由IETF安全域间路由工作组制定的一个专用PKI框架,由近30篇RFC组成。这些技术规范中包括了保证RPKI系统正常运行的RPKI架构,如下图所示,RPKI整体架构包含:证书签发体系、证书存储系统以及证书同步验证机制。

RPKI整体架构
RPKI整体架构

下面分别介绍RPKI架构的各个组成部分:

  • 证书签发体系:由分布全球的RPKI认证中心组成,用于RPKI资源证书签发。
  • 证书存储系统:RPKI涉及的所有证书都存放在RPKI资料库中,RPKI资料库是一个采用分布式存储结构,由很多数据库组成。
  • 证书同步验证机制:RPKI资料库可以供依赖方同步,RP同步并验证RPKI证书和签名对象。RP同步并验证后将验证结果(IP地址前缀和ASN的绑定关系)提供给互联网域间路由系统中的边界路由器指导路由过滤,该系统是由部署在不同网络自治域的BGP路由器组成。

路由起源认证过程

RPKI的证书签发体系与互联网号码资源分配架构相对应,如下图所示。证书签发体系通过由上至下逐级颁发资源证书来进行资源授权,证书的内容包含IP地址前缀/AS号与接收机构的绑定关系,表明该资源持有者得到了使用此部分号码资源的合法授权。

RPKI证书签发体系
RPKI证书签发体系

以上图为例,由上而下逐级颁发资源证书的过程如下:

为了方便读者理解,本文中资源证书颁发过程是一个简单案例,证书格式也只是简化版证书格式,非实际证书格式。

  1. APNIC签发自签名的根证书①:{签发者:APNIC,接收者:APNIC,号码资源:10.1.0.0/16,10.2.0.0/16,AS1-AS99 },证书生成后,APNIC会将根证书存储在自己的资料库中;
  2. APNIC使用根证书①为ISP1签发资源证书②:{签发者:APNIC,接收者:ISP1,号码资源:10.1.0.0/18,10.2.0.0/20,AS1-AS9},证书生成后,ISP1也会将签发的证书存储在自己的资料库中;
  3. ISP1使用自己的证书②签发ROA③:{签发者:ISP1,绑定关系:10.1.1.0/24 & AS1},通过签发ROA签名来授权某个自治网络对某个IP地址前缀发起路由起源通告。ROA将该自治网络的AS号与该IP前缀绑定在一起。

在下图中,AS 200收到的10.1.1.0/24前缀的两个路由起源通告,原本它无从判断两个起源AS孰真孰假。如果它部署了RPKI依赖方,Device B就可以从RPKI资料库中下载到ROA数据库,并验证<10.1.1.0/24 AS100>的绑定关系是真实的。当AS 200分别从AS 100和AS 300接收到10.1.1.0/24前缀路由时,比较源AS与ROA数据库是否一致,如果一致,则ROA校验结果为有效路由,如果不一致,则为无效路由。所以10.1.1.0/24 AS100与ROA数据库一致,为有效路由,进而判断起源于AS 100的路由通告是合法的,而10.1.1.0/24 AS 300与ROA数据库不一致,为无效路由,进而判断起源于AS300的路由通告是非法的。

另外华为还提供了一种在没有RPKI依赖方的情况下,Device B通过配置静态ROA数据库的方式来实现ROA校验,在一定程度上也能实现路由防劫持。

ROA校验
ROA校验

RPKI功能扩展

RPKI区域验证是RPKI的一种验证机制,通过验证从外域EBGP对等体收到的路由是否属于本区域路由来控制选路结果,防止域内的路由被域外攻击者劫持,从而确保域内的主机能够安全地访问内部服务。

区域验证有两种典型应用场景,分别是区域验证场景和区域联盟场景:

区域验证场景

如下图所示,AS1、AS2、AS3同属于某个运营商的网络,AS3与其他运营商网络AS100连接。用户在AS1接入,访问位于AS2的地址是10.1.0.0/16的服务器。正常情况下用户通过AS1-AS3-AS2路径访问服务器。如果AS100存在攻击者伪造路由10.1.0.0/24,由于攻击者发布的路由更详细,用户访问服务器的流量将被攻击者窃取。为解决以上问题,可以在AS3的边界路由器上部署区域验证功能,将AS1、AS2、AS3划分为区域1。AS3从AS100收到的攻击路由,路由源是AS2,属于本区域,但是由于是从区域1之外的BGP对等体接收到,因此区域校验不合法,路由无效或降低优先级处理。

区域验证场景
区域验证场景

区域联盟验证场景

如下图所示,AS1、AS2、AS3同属于某个运营商的网络,AS4、AS5属于合作运营商的网络,AS3、AS4同时与其他运营商的AS100连接。用户在AS1接入,访问位于AS5的地址是10.1.0.0/16的服务器。正常情况下用户通过AS1-AS3-AS4-AS5路径访问服务器。如果AS100存在攻击者伪造路由10.1.1.0/24,由于攻击者发布的路由更详细,用户访问服务器的流量将被攻击者窃取。为解决以上问题,可以在AS3的边界路由器上部署区域验证功能,将AS1、AS2、AS3划分为区域1,AS4、AS5划分为区域2,区域1和2共同组成区域联盟1。AS3从AS100收到的攻击路由,路由源是AS5,属于本区域联盟,但是由于是从区域联盟外的BGP对等体接收到,因此区域校验不合法,路由无效或降低优先级处理。

区域联盟验证场景
区域联盟验证场景
词条统计
  • 作者: 刘妍
  • 最近更新: 2023-11-17
  • 浏览次数: 5812
  • 平均得分:
分享链接到: