SABRE: Protecting Bitcoin against Routing Attacks
出版时间:Aug 22, 2019
出处:Usenix Security 2019
下载:https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_02A-1_Apostolaki_paper.pdf
目录
SABRE:A Security Relay Network For Bitcoin
Abstract
目前来说路由攻击在现实中仍是非常有效的,因为现在的对策要么不能提供保障,要么部署非常麻烦。区块链系统很容易遭受这样的攻击,因为他们依赖互联网通信来达成共识。在现实中,比特币被AS级别的攻击者使用BGP劫持将其分成两部分。AS级别的攻击者?
在这篇论文提出了SABRE,它是一个安全、可扩展的比特币中继网络。SABRE有两个关键的技术,(1)利用BGP协议的基本属性去部署中继节点,可以抵抗路由攻击;(2)中继区块是大量通信,而不是大量计算量。这可以让我们卸下大部分中继操作去编程网络硬件(使用P4编程语言).
SABRE针对路由攻击去确保比特币安全是非常有效的,即使只部署6个节点。
Introduction
最近的研究显示,任何AS级别的攻击者能够通过劫持小于100 前缀(prefixes)隔离50%的比特币挖矿能力。这种攻击可以导致矿工的收益损失,并且利用其实现双花问题。
问题:针对这样的划分攻击保护是有难度的。一方面,本地对策不能提供强有力的保障。另一方面,互联网范围内的对策又不容易部署。
SABRE:对于比特币来说是一个安全的中继网络。与现有的比特币网络一起运行,并保护大多数比特币客户端遭受路由攻击。
基于两个观点来构建SABRE:(1)在安全的位置部署中继节点。1)防止攻击者转移中继到中继的连接,以确保SABRE的内部连接;2)从路由的角度看,这对比特币客户端是有吸引力的,这样可以保护客户端去连接到中继网络。两个ASes互相直连,并且没有访问者,这样建立的连接不可能被路由攻击转移,只有这样的ASes才被认为是中继位置。在目前的互联网中,这样安全的位置是充足的,有200ASes是符合要求的。这些AS包括大的云提供商、内容配送网站、互联网交换中心。SABRE部署6个节点已经足够保护80%的客户端抵抗96%的AS级别的敌手。(2)作为一个透明的网络,SABRE是攻击者的目标,他们可以对已知节点实施(D)DOS攻击来破坏它。为了保护SABRE部署避免这种攻击,我们利用大多数中继操作是大通信量,而不是大计算量的事实。除此之外,中继去广播的内容(区块)是可预测的,并且非常小。这些特性让我们可以卸下大部分对于硬件的SABRE操作,去使用可编程的网络设备。
我们的中继节点是通过P4来实现的,并且连接它到一个可扩展的比特币客户端。P4是一个新的编程语言,允许定制网络数据层面的行为。SABRE的内存要求是在P4交换机的容量以内的。
这篇论文的贡献有:(1)SABRE的设计,是一个新的中继网络,去组织AS级别的敌手去划分它;(2)一种算法,在选择好的ASes中去定位SABRE节点,为了最大程度的减少对比特币系统成功路由攻击的机会;(3)对于SABRE中继节点的一个新的软硬件设计,能让他们在高负载下还能无缝操作;(4)SABRE的完全实现,包括P4节点去运行在可编程的网络交换机中和一个扩展的比特币客户端,然后可以连接他们。(5)激励的分析,对于一个候选ASes去部署SABRE节点。尽管SABRE是设计用来比特币的,但是他的设计原理也可以应用到其他区块链系统去组织路由攻击。
Background
边界网关协议(BGP)
互联网中有超过60000个独立网络,这些都被作为自治系统(ASes),他们依赖BGP去交换信息,每个AS来源于一个或多个IP前缀,然后通过AS-by-AS进行传播。
BGP协议是一个单路径和基于策略的协议。每个AS选择一个最好的能到达任意IP前缀(包括自己)的路由,然后有选择的导出给它的邻居ASes。这个选择和导出是通过每个AS和它的邻居维持的商业关系来管理的。最常见的关系是消费者-提供者和点-点模式。消费者-提供者模式中,消费者AS给提供者AS支付费用来获得完整的互联网连接,提供者提供这样的连接:1)给消费者导出所有它最好的路由;2)导出消费者通告的前缀给所有他的邻居。在点-点模式中,两个ASes连接只是为了在各自的消费者和内部用户之间传输流量,他们只互相宣布他们自己的前缀,和从消费者学到的路由。根据路由选择,一个AS更喜欢消费者学习路由超过点学习路由,点学习路由超过提供者学习路由。
即消费者学习路由 > 点学习路由 > 提供者学习路由。AS更倾向具有小AS路径的路由。
劫持BGP路由不会验证路由通告。任意恶意AS对于任意前缀都能创建一个虚假的通告,作为BGP劫持,并且将它通告给它的邻居。BGP劫持对于一个AS去重定向流量到一个给定的目的地是非常有效的方法。我们根据会否虚假通告来区分两种劫持类型:(1)比合法通告有更具体(更长)的前缀;(2)一个存在的前缀。前一个中,AS劫持者将吸引所有寻址到更具体前缀的流量,这与它在互联网拓扑中的位置无关。第二种情况中,欺骗的通告和合法的进行竞争,转移流量的数量依赖于攻击者和受害者在网络拓扑中的相对位置。
更具体前缀劫持更有效,但是它也有很多缺点:(1)这种攻击很容易被发现,当劫持前缀在全网传播时,与此相反的,存在前缀攻击只是在小范围中传播。(2)网路操作者可以过滤那些前缀长度超过/24的BGP通告,这种过滤可以很有效的阻止更具体前缀攻击。
通常,劫持攻击会在攻击者位置造成一个黑点,但是攻击者可以保留至少一条到合法区域的路径,将劫持攻击变为拦截攻击,使他自己作为一个中间人(MITM)。
比特币
比特币是一个去中心化交易系统,比特币网络中传播两种类型的消息:交易和区块。交易被使用从一个地址到另外一个地址传播数值,区块被使用去同步系统状态。比特币节点通过IP地址标记,使用TCP相互连接,并且使用明文交换数据。挖矿节点在全网广播,并根据共识连接到到区块链中,从而产生矿工的经济效应。比特币参与者没有意识到最新的块将浪费他们的挖矿资源,并且很有可能接收无效的交易。
中继网络是通过单个管理实体维持,和比特币的点对点网络一起运行的一种覆盖网络。中继网络的目的是协助比特币网络,而不是取代它。目前有三个著名的中继网络:Falcon、FIBRE和最快中继网络(FRN)。这些中继网络的目的是通过依赖高速度的中继节点系统或(和)高级路由技术来加快块的传播。通过连接这些中继,比特币客户端能减轻糟糕网络性能的负担。
SABRE:A Security Relay Network For Bitcoin
SABRE是一个保护比特币客户端免受路由攻击的透明中继网络,它通过给客户端提供一个额外的安全信道去学习和传播最新的区块。透明性,是说SABRE中继节点的IP地址都是可知的,每个比特币客户端都去连接他们。SABRE网络必须时刻保持连接,即使处于任意BGP攻击或高负载之下。SABRE通过两个关键的点来保证不间断操作:(1)中继节点的智能定位确保它的内部连接并最小化客户端攻击接触面。(2)软硬件设计让中继节点可以承受任意负载。
攻击模型
定义一个AS级别的攻击者,它的目标是将比特币网络划分成两个不相交的部分S和N。为了实现这样的结果,(1)首先它使用存在或更具体前缀方法执行一个拦截攻击,将流量传输到S和N。(2)然后攻击者,1)通过检查网络和(或)传输层头部(通过匹配IP地址和(或)TCP/UDP端口)来标识比特币连接。2)删除桥接分区的连接。这种攻击能有效的划分比特币网络造成经济损失并且允许双花问题发生。事实上,划分是一个针对区块链系统很有效的攻击,因为它能阻断节点之间的通信。
我们假设攻击者已知:(2)所有SABRE节点的IP地址;(2)节点运行在他们上。攻击者可以劫持部署中继节点的前缀,并断开所有指向他们的连接。或者,攻击者能够实施多次请求给中继节点,造成(D)DoS攻击。
SABRE安全网络设计
保护中继到中继的连接:SABRE部署由托管在属于ASes的/24前缀的中继组成:(1)没有消费者;(2)节点直接连接;(3)组成一个k连接的图。这些约束保护中继到中继的连接免受路由攻击。
保护客户端到中继的连接:尽管我们在精选的ASes中部署中继,但是我们仍然不能选择哪一个ASes部署比特币客户端。这就意味着AS级别的攻击者劫持中继前缀仍可以传输客户端连接到中继。在SABRE中,通过限制部署中继到ASes的位置来保护客户端到中继的连接。比特币客户端集中在一些部署ASes中。
保护中继到客户端的连接:一些攻击者可能尝试传送来自中继网络的流量到比特币客户端。尽管这种对于攻击者来说很麻烦,但是这也是有可能的。SABRE通过混淆客户端和中继节点之间的流量交换来阻止这种攻击。这种混淆强迫攻击者在传输可能的大体积流量中去执行完全的检查(在L4头之下),从而导致这种攻击不切实际。SABRE通过两种技术去混淆中继流量:(1)当和比特币客户端通信时,中继可以修改他们的源IP值。(2)比特币客户端可以通过v*n/代理服务去连接SABRE中继。如图解释了SABRE部署如何阻止路由攻击。
可扩展的软硬件节点设计
作为透明和访问中继网络,SABRE节点应该支持高负载。对于扩展,SABRE节点依赖一个软硬件设计,大部分操作都可以省略对于一个可编程网络交换机(P4)。如图为SABRE部署,两个SABRE节点相互连接,和一些比特币客户端。·
基于软件的中继节点实现能很好的保护比特币免受路由攻击,但是它也是易于遭受(D)Dos攻击。SABRE中继设计基于以下:(1)需要在中继节点中缓存的内容是可预测的并且是小的。(2)大多数的中继操作是通信难的,传播最新的块到多数客户端,并区分新的块。前一个允许有效的存储,后一个允许在可编程网络设备中特定的硬件实现。尽管使用可编程网络设备可以得到很高的性能,但是他是不容易实现的,因为缺乏广泛的指令集和对内存和每个包操作数的严格限制。我们使用三个技术来克服这些限制:(1)我们的软硬件设计在硬件和软件操作中无缝混合,从而可以在转换到软件部分不能执行的可以自动升级。(2)我们的实现依赖于最优的数据结构,这些结构可以提高内存效率,并且每次访问都需要固定数量的操作。(3)我们可以预先计算和缓存需要在交换机上计算的值(如UDP校验和)
SABRE安全网络设计
在这里形式化定义了选择部署SABRE中继的ASes的问题,这是为了最小化路由攻击成功的可能性。
问题描述和挑战
SABRE提供的安全依赖于:(1)如何确保内部连接安全,即一个AS级别的攻击者需要多少连接可以实现劫持从而断开互联网。(2)需要覆盖多少的比特币网络,即AS级别的攻击者阻止客户端连接到所有中继节点的可能性有多大。当构造SABRE网络时我们考虑两个因素:首先,设置中继内部连接的理想级别(如2连通),然后找到能将比特币覆盖范围最大化的中继AS。因此定义了一下问题描述:
G = (AS;E) 是AS级别的拓扑图,顶点(AS)表示ASes,边(E)到内部AS连接。
B是ASes的子集,部署了比特币客户端。R是没有消费者的ASes子集。
G0 = (R;E0)是G的子集,被R吸引。
A = AS X B是所有攻击场景的集合,即所有在AS中的ASes(x,v),x作为AS级别的攻击者,AS v是部署有比特币客户端的。
S : R —> A,是给定候选中继的函数,能够找到攻击场景A的子集阿尔法,这个候选中继可以可以防御。
C : P(A) -> R是一个函数,给定攻击场景的集合,通过计算在受害ASes上部署的客户端数量来量化他们对比特币系统的重要性。 ,wv是被在攻击场景子集阿法尔中影响的客户端数量。
给定所需的中继数N和所需的中继间连通性k,我们的问题是最大程度的保护比特币客户端免受路由攻击的情况。
挑战
更优的解决以上问题是有困难的,由于以下三个原因:(1)会减少最大覆盖范围(2)寻找K连接子图在随机图中是困难的。(3)为了能找到中继可以抵御的攻击场景,需要预测考虑任何可能的攻击者的带有客户端的AS到每个候选中继的转发路径。前两个问题可以用B方案解决,C方案中定义了一个算法,它可以找到对于每个攻击者可能的攻击场景。
B 定位SABRE中继
定位最优的中继maps可以解决最大覆盖问题。我们依赖于贪心算法方式。我们的算法开始时有一个空的集合R’,和候选ASes R集合,他们都满足约束条件,至少N节点的K连接子图,他们可以部署一个N中继的K连接网络的中继节点。然后反复的添加中继到R’集合,目的是为了最大化覆盖攻击场景的数量。它的复杂度是O(N),在现实中很容易实现。
C 计算覆盖攻击场景
在这里解释如何基于覆盖的攻击场景去定位SABRE中继,现在我们描述如何为每个中继计算攻击场景。实现功能S,描述对于每个部署了客户端的AS和AS级别的攻击者,我们预测是否部署的AS将更容易接收来自攻击者AS的通告,而不是来自中继ASes的合法通告。
我们的算法基于以下:去检查是否攻击者AS(ASM)能够从受害者AS(ASV)到中继AS(ASR)传输流量。我们只需要比较ASV到ASR和ASV到ASM的的路径。如果到ASM的路径更被接收,则ASM能够成功劫持从ASV到ASR的流量。首选路径还是根据ASes之间的商业关系和路径长度来决定:消费者方式大于节点方式,节点方式大于提供者方式,短路径大于长路径。
如图所示:
ASV是ASA的提供者,ASH和ASV是节点。不同的阴影代表ASV更喜欢的通告,白色是最喜欢,黑色是最不喜欢。如图描述了,对于任意SAes ASX和ASY,是否ASV更喜欢ASX的通告超过ASY,两个通告有相同的前缀。
SABRE可扩展中继节点设计
介绍SABRE节点的软硬件实现和他的操作
软硬件实现
软硬件设计包括一个可编程的交换机,并且连接一个修改的比特币客户端,将其作为一个控制器。交换机负责的功能:(1)提供客户端连接服务;(2)保护控制器不受恶意客户端的侵害;(3)传送区块;(4)从旧的区块中区分新区块。控制器负责:(1)验证新区块;(2)将区块广播给来连接的客户端;(3)相应地更新交换机内存。比特币客户端与交换机建立UDP连接,并与控制器建立比特币连接(通过TCP)。
SABRE定义了一个基于UDP协议的通信,协议包括8个消息,客户端与交换机之间有5个消息:SYN, SYN/ACK, ACK,GET SEQ, and ADV。交换机和控制器之间有3种消息:NCONN, UPD, and BLK。如图为SABRE软硬件设计:
TCP, SYN, SYN/ACK, ACK被用来阻止欺骗攻击。GET_SEQ, BLK and ADV用来区块管理。GET_SEQ使客户端能够请求作为BLK发送的区块的特定段,而ADV使客户端通告一个新的区块到中继中。交换机发送NCONN消息去告诉控制器有新的连接。控制器接着发送BLK消息去更新交换机上的最新的区块。
交换机维护三个数据结构去管理客户端连接和追踪异常:PeerList, Whitelist和Blacklist。PeerList包含客户端连接消息。Whitelist存储允许直接和控制器通信的客户端。Blacklist包含滥用中继且被禁止的客户端、交换机维护一个数据结构用来存储最新的区块:BlockMem。BlockMem由和块分段大小相同的索引,每个分段的预计算校验和,这个数据结构允许交换机及时响应所请求的段。交换机还有两个重要的组件用于异常检测:SentLimit和CheckSecret。SentLimit检测多次请求一个区块的客户端。CheckSecret验证在握手期间客户端是否使用了它的真实IP。交换机也维护了一个用于检查通告的hash是新的还是旧的的数据结构:Memhash。接下来将描述中继执行的不同操作。
中继操作
协议中定义了四种操作:(1)比特币客户端如何连接到中继节点中;(2)中继节点如何将区块传播回它们。(3)中继节点如何接收和验证客户端发送的区块。(4)控制器如何根据接收到的新区块去更新交换机内存。
(1)管理客户端连接
为了避免欺骗攻击,比特币客户端使用三次握手来建立和中继节点建立连接。如图所示:
成功完成握手之后,交换机在PeerList中添加一个客户端IP和端口号的条目,并通过NCONN消息将IP告诉控制器。PeerList实现作为一个布隆过滤器(BF),这样交换机可以验证一个接收的包是否属于已建立连接的。
(2)学习新的区块
中继节点学习新的挖矿区块。合法客户端提交新的区块给中继。交换机不能验证区块(因为网络设备对计算能力受限),因此交换机在过滤之后,需要提交区块给控制器。如图所示:
客户端节点使用ADV消息,通过他的哈希值将区块通告给交换机。交换机使用HashMem来检查hash值是否已知。如果hash值未知,交换机将要求客户端使用CTR消息去和控制器相连,并将他的IP地址存储在Whitelist。如果提交的区块对于客户端IP是合法的,它将被存储在whitelist中四天。当客户端是合法的,它连接到控制器,交换机转发TCP流量到控制器。交换机只允许来自白名单客户端中的包到控制器。恶意节点不可能独占控制器,即使掌握30%的哈希能力。
恶意节点可能尝试通过同时向中继节点中洪泛多个区块来进行区块竞争,然而这些都需要控制器去验证。为了防止这种攻击,交换机保持白名单中活跃节点的数量。当这个数值超过预定义的阈值,交换机将停止往白名单中添加新的客户端。在白名单中实现了一个过期(expiry)机制。事实上,交换机实现了一个简单、有效、基于名誉的可访问列表来保护控制器不受Sybil攻击。
(3)使用新区块去更新交换机
如果新提交的区块是有效,控制器使用新的分段ID到分段数据的映射去更新交换机的内存。然后交换机可以根据请求将分段发送给客户端。接收的每个数据包的IP和UDP校验和应该是正确的。使用假冒头和分割成16比特分段的负载的补码和来计算UDP校验和。我们预计算一个区块分段的补码并将它和分段一起缓存。这样的话交换机只需要添加不同的客户端的头部就可以计算校验和。如图显示控制台发送一系列数据包去更新交换机。它发送一个包含新hash值的UDP消息,第一个消息告诉交换机为新区块准备它的状态。发送下一个消息去提交每个区块的分段,并预计算每一个的补码和。
(4)传播新学习到的区块
中继节点通告新的区块给所有和它连接的客户端。使用多个单独的分段去提交区块有以下原因:(1)允许客户端单独的请求丢失的分段;(2)避免数据层面的循环;(3)避免遭受放大攻击。
控制器发送一个被交换机转发的INV消息,这个INV消息包含新区块的hash和区块包含的分段数量。作为一个保护机制,交换机禁止客户端多次请求一个区块。
网络架构评估
即使一个6节点单个连接的SABRE节点部署,都可以阻止互联网中94%的ASes去划分超过10%比特币客户端。SABRE提供和在/24上部署客户端相同的安全级别。
评估依赖于一个联合的数据集,包含路由和比特币信息。关于路由信息,我们依赖于CAIDA提供的AS级别拓扑和AS级别策略。我们使用路由树算法去计算任意两个ASes的转发路径。关于比特币信息,使用比特币客户端IP和已存在中继的IP。合并两个数据集关联每个比特币IP到AS通告更具体IP前缀去覆盖它(使用RIPE BGP收集器收集路由)。
如图如何依赖SABRE网络的大小N和内部连接k来保护比特币网络:
增加部署节点的数量会减少攻击者成功转发流量的可能性。
如图所示,即使SABRE网络只有6节点,5连接,任何可以保护80%客户端避免96%AS级别的攻击者攻击。
SABRE和FIBRE、Falcon进行比较,SABRE性能比较好由于以下三个原因:(1)已存在的中继对于长前缀攻击是脆弱的,中继节点部署在短与/24的前缀中,任何AS 级别的攻击者都能切断中继之间的连接;(2)已存在的中继网络是弱连接,即使这些中继网络都部署在/24前缀中,分析发现他们的连接仍可以被相同前缀的通告转发。(3)已存在的中继提供糟糕的覆盖范围。即使前两个都忽略,他们客户端到中继的连接仍是脆弱的。
针对路由攻击最有效的对策是:在/24前缀中部署所有的比特币客户端。如图10所示,在/24前缀中部署客户端将比在SABRE跟能保证安全。
为了计算在/24中部署所有客户端,仍能成功攻击单个的客户端个数为多少。如图所示,相同的保护级别,有时SABRE会稍微好些。
软硬件设计的可行性
验证设计的可行性:(1)可编程交换机可以和客户端无缝连接而不需要软件的交互;(2)数据层面的内存和今天的可编程交换机的内存相比是低的。
控制器和客户端是比特币客户端的扩展。协议运行在Mininet,使用可用的P4行为模型(BMV2)去评估交换机。有三个客户端A,B,C,并且每个客户端上有交换机和控制器的中继节点,B,C是可修改,和SABRE相连的节点,A是一个不可修改的比特币客户端。如图为实现的步骤:
不可修改的客户端A在比特币网络中挖矿并将区块发送给B,之后广播区块到交换机,这个交换机允许B直接和控制器相连并提交区块,控制器然后更新交换机内存并广播区块给相连的节点(如C),然后C请求然后获得区块的分段。最耗时的操作是更新交换机和提交区块。唯一的瓶颈就是硬件实现是中继节点的上行链路。
如图为交换机中的内存要求:
累计内存不超过5MB,黑名单中有一百万条数据,可以很好的缓解DDoS攻击。
部署性&激励
有完全部署和部分部署两种。
完全部署的SABRE有以下要求:(1)在特定的ASes上部署中继;(2)使用特定的硬件来部署中继位置;(3)激励第三方去部署和维护这个基础设备
有很多ASes可以部署SABRE中继,如云提供商、CDNs、IXPs、大的ISPs或者软件即服务(SaaS)提供者。云提供商也出租硬件加速的计算产品。
完全部署虽然可行,但它仍是费时的,需要多方进行合作。因此SABRE提供了部分部署,比如一个矿池只需要保护他们不受路由攻击。