文章目录
- 摘要
- 一、引言
- 二、背景
- 三、 SABRE:比特币的安全中继网络
- 四、SABRE SECURE NETWORK DESIGN
- 五、SABER弹性中继节点设计
- 六、NETWORK ARCHITECTURE EVALUATION
- 七、软件/硬件协同设计的可行性
- 八、可部署性和激励措施
- 九、讨论
- 十、相关工作
- 十一、结论
- 论文标题:SABRE:保护比特币免受路由攻击
- 偷懒阅读法,先用软件整体翻译,在抽空对照原文看,这样就不用找翻译了。
摘要
路由攻击在当今的互联网中仍然非常有效,因为现有的对策要么无法提供保护保证,要么不易部署。区块链系统特别容易受到此类攻击,因为它们依赖有效的互联网范围内的通信来达成共识。特别是,比特币——最广泛使用的加密货币——可以被任何使用 BGP 劫持的 AS 级对手一分为二。
在本文中,我们介绍了 SABRE,这是一个安全且可扩展的比特币中继网络,它通过一组可抵御路由攻击的连接在全球范围内中继区块。 SABRE 与现有的点对点网络一起运行,并且易于部署。作为一个关键系统,SABER 设计具有很强的弹性,可以有效地处理高带宽负载,包括拒绝服务攻击。
我们围绕两个关键技术见解构建了 SABRE。首先,我们利用域间路由(BGP)策略的基本属性来托管中继节点:(i)在固有地受到路由攻击保护的位置; ii) 在大多数比特币客户经济上偏好的路径上。这些属性是通用的,可用于保护其他基于区块链的系统。其次,我们利用了中继块是通信量大的事实,而不是计算量大的事实。这使我们能够将大部分继电器操作卸载到可编程网络硬件(使用 P4 编程语言)。由于这种硬件/软件协同设计,SABER 节点可以在高负载下无缝运行,同时减轻恶意客户端的影响。
我们介绍了 SABRE 的完整实施以及广泛的评估。我们的结果表明,即使部署只有 6 个节点,SABER 也能有效保护比特币免受路由攻击。
一、引言
加密货币,尤其是比特币,容易受到路由攻击,其中网络级攻击者(即恶意自治系统或 AS)操纵路由(BGP)广告以转移其连接。一旦在路径上,AS 级攻击者可以通过划分对等网络来破坏共识算法。最近的研究 [15] 表明,这些攻击是实用的,并且可以显着破坏加密货币。具体来说,任何 AS 级别的攻击者都可以通过劫持少于 100 个前缀 [15] 来隔离 50% 的比特币挖矿能力。这种攻击可能会导致矿工的巨大收入损失,并导致双重支出等漏洞。
问题 防止此类分区攻击具有挑战性。一方面,局部(和简单)对策[15]未能提供强有力的保护保证。这些包括对策,例如让比特币客户端监控他们的连接(例如,增加或异常延迟)或让他们根据路由信息选择他们的对等点。另一方面,全球反制措施极难部署。例如,在 /24 前缀中系统地托管比特币客户端(以防止更具体的前缀攻击)需要所有托管比特币客户端的互联网服务提供商的合作(这极不可能),并且会增加路由表的大小。即使是对所有比特币流量进行加密等重大协议修改也不足以保证系统免受路由攻击,因为攻击者仍然可以将流量与标头区分开来并创建分区。
我们的工作 在本文中,我们解决了现有反措施的根本缺陷。具体来说,我们的目标是开发可以保护像比特币这样的系统免受路由攻击的技术,其方式是:(i)提供强大的安全保证; ii) 可部分部署,即应尽量减少第三方的参与; iii) 在部署早期提供安全优势。
SABRE:比特币的安全中继网络 我们展示 SABRE,一个安全的中继网络,与现有的比特币网络一起运行,可以保护绝大多数比特币客户端免受路由攻击。 SABRE 是部分可部署的,并且只需两个中继节点即可开始使用。 SABRE 通过以下方式为任何已连接的客户端提供强大的安全保证,而不会增加其负载:i) 学习最新挖掘的区块; ii) 在网络范围内传播区块,这对矿工来说是必不可少的。我们基于两个关键见解构建了 SABRE:
**见解1:**在固有的安全位置托管中继站 第一个洞察力是在以下位置托管SABRE中继节点:i)防止攻击者转移中继到中继的连接,保证SABRE网络的完整性;ii)从路由的角度来看,这些路径对许多比特币客户有吸引力,从而减少攻击者能够拦截中继网络连接的可能性。为此,我们利用了BGP政策的一个基本特征,即两个AS之间建立的连接,如果彼此直接对等且没有客户,则不能被转移。只有这样的AS被考虑为中继位置。其中一些候选者也有很好的连接,使其广告具有吸引力。通过彻底的测量研究(使用真实的路由数据),我们表明这样的安全位置在目前的互联网中是很多的,有2000个ASes符合条件。这些ASes包括大型云供应商、内容交付网络和互联网交换点,它们今天已经提供了托管服务,因此有动力托管SABRE节点,例如,收费的。我们还表明,6个SABRE节点足以保护80%的客户免受96%的AS级对手的攻击(假设SABRE的最坏情况)。
**见解2:**通过软/硬件共同设计的弹性 作为一个面向公众的透明网络,旨在保护比特币,SABRE是一个明显的目标,攻击者可以,除其他外,对其公开的节点进行(D)DoS攻击以破坏它。SABRE背后的第二个洞察力是利用以下事实。i)中继在任何给定时间需要传播的内容(块)是可预测的,而且大小较小;ii)大多数中继操作是重度通信(四处传播信息),而不是重度计算。这两个事实使我们能够使用缓存并将大多数操作卸载到硬件上,特别是可编程的网络设备。这种软件/硬件的共同设计使SABRE中继节点能够维持Tbps的负载,即使是由恶意行为者(DDoS攻击者)发起的。
我们通过使用 P4 编程语言 [17]、[13](用于编程网络数据平面的默认语言)以及(基于 UDP 的)客户端协议来证明我们的中继节点设计是实用的。我们的实验表明,P4 足够通用以支持 SABRE,并且内存要求在当今交换机的能力范围内。
贡献
我们的主要贡献是: • SABRE 的设计,一种新颖的中继网络,可防止 AS 级别的对手对其进行分区(第 III 节)。
• 一种将SABER 节点定位在精心挑选的AS 中的算法,以优化它们向旨在保护的系统(在我们的例子中为比特币)提供的安全保证(第IV 节)。
• SABRE 中继节点的新型软件-硬件协同设计,使它们能够在高负载下运行,软件干预最少(第 V 节)。
• 一项全面的测量研究,显示SABER 在保护比特币客户方面的有效性。相比之下,我们表明现有的继电器网络不提供保护(第 VI 节)。
• SABRE 的完整实现,包括在可编程网络交换机 [7] 上运行的 P4 代码以及比特币客户端代码的扩展,使其能够连接到 SABRE 节点(第 VII 节)。
• 分析候选AS 托管SABER 节点的动机(第VIII 节)。其中,我们展示了符合条件的候选 AS 已经包括已经提供托管服务的知名云提供商。
通用性 尽管 SABRE 专注于比特币,这是迄今为止最成功的加密货币,但其路由和系统设计原则可用于保护任何其他通过 Internet 公开路由连接的区块链系统(包括许可和加密的系统)免受路由攻击。我们在第 IX 节中讨论了 SABRE 的更广泛适用性。
二、背景
在本节中,我们首先概述 BGP 以及它如何被滥用来执行路由攻击(第 II-A 节)。然后我们简要介绍比特币和中继的概念(第 II-B 节)。
A. 边界网关协议 BGP)
互联网由超过 6 万个称为自治系统 AS) 的独立网络组成,这些网络依靠 BGP [46] 交换有关如何达到 700k+ IP 前缀 [10] 的信息。每个 AS 产生一个或多个 IP 前缀,然后逐个 AS 传播这些 IP 前缀。
策略 BGP 是单路径和基于策略的协议。每个 AS 选择一条最佳路由来到达任何 IP 前缀(包括自己拥有的前缀),它有选择地导出到其相邻的 AS(省略它从中学习路由的 AS)。这些选择和导出过程由每个 AS 与其邻居保持的业务关系管理。最常见的业务关系被称为客户-供应商和点对点 [25]。在客户-供应商关系中,客户 AS 向供应商 AS 付费以获得完整的 Internet 连接。提供商通过以下方式提供此类连接: i) 向客户导出其所有最佳路线; ii) 将客户宣传的前缀导出到其所有邻居。在点对点关系中,两个 AS 仅连接以在其各自的客户和内部用户之间传输流量。因此,他们只宣布自己的前缀,以及从客户那里学到的路由。关于路由选择,AS 更喜欢客户学习的路由而不是对等学习的路由,对等学习的路由优于供应商学习的路由。如果存在多条同样有吸引力的路由(例如,如果两个客户宣布一条到相同前缀的路由),则 AS 在依赖某个任意平局 [46] 之前,会优先选择具有最小 AS 路径长度的路由到前缀。
劫持 BGP 路由器不验证路由通告。任何恶意 AS 都可以为任何前缀创建虚假广告(称为 BGP 劫持),并将其广告给其邻居。劫持构成了 AS 将流量重定向到给定目的地的有效方式。
我们根据虚假公告是否包含两种类型的劫持来区分:(i)比合法的更具体(更长)的前缀;或 ii) 现有的(同样特定的)前缀。在前一种情况下,劫持者 AS 将吸引寻址到更具体前缀的所有流量,与其在 Internet 拓扑中的位置无关。这是因为路由器根据最具体的匹配前缀转发流量。在后一种情况下,流氓广告将与合法广告竞争。转移的流量取决于攻击者和受害者在 Internet 拓扑中的相对位置。
图 1a 说明了一个更具体的攻击示例,其中 AS 2 通告 7/24,这是由 AS 7 通告的更具体的前缀 7/8。这样做时,AS 2 有效地重定向来自所有除 AS 7.1 之外的 AS 相比之下,图 1b 说明了 AS 2 与 AS 7 一起通告 7/8 的效果。AS 2 仅设法吸引来自 AS 1 和 AS 3 的流量。实际上,AS 1 学习到 7/8 的两条路由来自它的两个供应商(AS 2 和 5),并且更喜欢来自 AS 2 的非法供应商,因为它更短。同样,AS 3 更喜欢使用通过 AS 2 的客户路由到达 7/8,而不是通过 AS 5 获知的合法对等路由。
更具体的劫持更强大,但也有缺点。首先,由于被劫持的前缀在 Internet 范围内传播,因此此类攻击更加明显。相比之下,现有前缀在较小的区域中传播 [28]。例如,在图 1b 中,当 AS 4 和 AS 5 了解被劫持的前缀时,它们不会进一步传播它,因为它们更喜欢合法的声明而不是它。其次,网络运营商经常过滤前缀长于 /24 [34] 的 BGP 广告,从而防止针对现有 /24 的更具体的攻击。当然,攻击者仍然可以宣传 /24,即现有前缀。
默认情况下,劫持前缀会在攻击者的位置创建一个黑洞。然而,攻击者可以将劫持转变为拦截攻击,并通过保留至少一条通往合法来源的路径使自己成为中间人 MITM) [45]、[29]。例如,在图 1a 中,AS 2 可以选择性地向 AS 1 宣布 7/8 以保持通过 AS 3 到合法源的工作路径。观察到 AS 2 无法实现相反的拦截攻击,即从 AS 转移流量3 并将其重定向到 AS 1,因为它不会通过 AS 1 学习到合法来源的路径。
B. 比特币
比特币是一个去中心化的交易系统,它依靠一个随机的点对点网络来实现一个复制的账本,即区块链,它跟踪资金的所有权和每个比特币地址的余额。比特币网络传播两种类型的信息:交易和区块。交易用于将价值从一个地址转移到另一个地址,而区块则用于同步系统的状态。比特币对等体由其IP地址识别,使用TCP相互连接,并以纯文本交换数据。比特币包括大约10k个可公开到达的对等体[9],以及10倍于NA Ted对等体[16]。
区块由矿工创建,包含最新的交易以及工作证明(PoW)。PoW是一个计算量很大的谜题,对每个新区块来说都是唯一的,其难度定期调整,平均需要10分钟才能生成一个新区块[42]。新开采的区块会在全网传播,并根据共识纳入区块链,从而给开采者带来经济回报。不知道最新区块的比特币参与者会浪费他们的采矿能力,并可能被愚弄接受无效的交易。
中继网络是由单个管理实体维护的覆盖网络,与比特币的点对点网络一起运行。中继网络旨在协助比特币网络,而不是取代它。例如,当今最著名的三个中继是:Falcon [3]、FIBER [2] 和快速中继网络 FRN) [5],旨在加速块传播。这些中继网络依赖于高速中继节点系统和/或高级路由技术。通过连接到这些中继,客户端可以减轻网络性能不佳的影响,否则可能会影响获取新块所需的时间。
三、 SABRE:比特币的安全中继网络
SABRE 是一个透明的中继网络,通过为比特币客户提供一个额外的安全通道来学习和传播最新开采的区块,保护他们免受路由攻击。通过透明,我们的意思是 SABRE 中继节点的 IP 地址将是公开的(例如通过网站),并且欢迎每个比特币客户端连接到它们。
要从 SABRE 中受益,比特币客户端只需要成功地建立到至少一个中继节点的连接。
SABRE 中继通过向所有连接的客户端接收、验证和传输新块来促进块传播。
为了实现其目标,SABER 网络必须始终保持连接,即使在任意路由或 DDoS 攻击下也是如此。 SABRE 利用两个关键见解来保证连接性:(i)中继的智能定位以保护其内部连接并最小化客户端攻击面(第 III-B 节); ii) 硬件/软件协同设计,使中继节点能够承受几乎任意的负载(第 III-C 节)。我们注意到,这些见解可用于保护其他区块链系统免受路由攻击(第 IX 节)。我们首先描述我们的攻击模型(第 III-A 节)。
A. 攻击者模型
我们考虑一个单一的AS级攻击者,其目标是
要做到这一点,她首先通过使用现有的和更具体的前缀进行拦截攻击来转移前往S或N的流量(第二节)。然后,攻击者:i)通过检查网络和/或传输层标题(即,通过匹配IP地址和/或TCP/UDP端口)来识别比特币连接;ii)丢弃桥接分区的连接。这样的攻击者是强大的,可以有效地将比特币网络分成两半[15]。事实上,分割任何区块链系统都构成了有效的DoS攻击,并可能导致收入损失,允许双重消费(见第九节)。
我们假设攻击者知道: i) 所有 SABRE 节点的 IP 地址;以及 ii) 在中继节点上运行的代码。因此,攻击者还可以劫持托管中继节点的前缀并丢弃所有发往它们的流量。或者,攻击者可以对中继网络执行 DDoS 攻击,方法是将负载定向到其节点,以耗尽其资源。
示例 我们使用图 2a 和 2b 来说明攻击,图 2a 和 2b 描绘了一个由 9 个 AS 组成的简单 AS 级拓扑。 ASB、ASD ASH 和 ASG 托管相互建立比特币连接的比特币客户端(蓝色)。 ASX 是恶意的,旨在断开左侧节点 S = {b1, d1, d2, d3}) 与其他节点 N = {h1, g1, g2, g3}) 的连接。为此,ASX 通过劫持 ASH 和 ASG 前缀来拦截指向 N 的比特币连接。结果,ASX 将所有连接从 S 转移到 N,甚至更多(例如,从 h1 到 g1 的连接)。我们在图 2b 中用红色描绘了转移的连接。一旦在路径上,攻击者就会丢弃穿过分区的比特币流量并正常转发其余的流量。例如,攻击者不会断开 h1 和 g1 之间的连接,而是简单地将其从 ASH 中继到 ASG 而不受影响。一旦发起攻击,S 中的节点就不能再与 N 中的节点通信:比特币网络是分区的。
B. SABRE 安全网络设计
我们现在解释保护中继到中继、客户端到中继和中继到客户端连接不被断开的 SABRE 节点放置的路由属性。我们在第四节中描述了一种系统地找到这些位置的算法。
保护中继到中继的连接
SABRE 网络由中继节点组成,这些中继节点位于 AS 中的 /24 前缀中: i) 没有客户; ii) 有直接的对等连接; iii) 形成一个 k 连通图。
这些约束保护中继到中继的连接免受路由攻击有四个原因。首先,它们通过广告更具体的前缀来阻止任何攻击者在中继之间转移流量,迫使她与合法广告竞争,即广告现有前缀。实际上,路由器将丢弃任何长于 /24 的通告前缀。其次,这些限制阻止任何攻击者宣传比合法路线更经济的路线。这是因为托管中继节点的 AS 通过直接对等链路学习合法前缀并且没有客户,这意味着没有恶意 AS 可以发布更优选的路由。第三,这些约束限制了恶意 AS 的数量,这些恶意 AS 只能向那些直接与托管中继节点的 AS 对等的 AS 通告同样优选的路由。最后,他们确保这些攻击者转移中继连接的机会随着 k(即中继图的连通性)的增加而呈指数下降。实际上,BGP 路由器依赖于任意平局来在同等优先的路由中进行选择(例如,通过选择从最低对等地址学习的路由 [46])。假设攻击者同样有可能赢得这场平局,她将只有 3.1% 0.55) 的概率断开 5 个连接的中继网络。在第六节中,我们展示了连接良好的中继网络数量众多。
保护客户端到中继的连接
虽然我们可以有选择地放置中继节点(我们在第 VIII 节讨论了 AS 托管中继节点的动机),但我们不能重新定位所有比特币客户端(或将它们托管在 /24 前缀中)。这意味着客户端到中继的连接不能针对所有可能的 AS 级对手和主动路由攻击进行固有的安全保护。
我们通过进一步限制托管 SABRE 中继的位置来保护客户端到中继的连接,以确保它们不仅满足保护中继到中继连接的标准,而且它们各自的广告往往会受到比特币客户端的 AS 的青睐竞争的。这样做我们可以降低恶意 AS 可以有效转移的流量,即最大化 SABRE 的覆盖范围。
尽管单个中继不太可能保护 AS 免受所有可能的攻击者的攻击,但一组中继通常可以做到这一点。事实上,如果对于每个可能的 AS 级对手,都有一个中继可以通过提供更好的路线来击败她,那么这种情况就会发生。由于比特币客户端集往往是高度集中的 [15],我们在第六节中展示了一个相对较小的中继网络足以保护许多客户端。
保护中继到客户端的连接
最后,攻击者可能会尝试攻击从中继网络到比特币客户端的流量。例如,攻击者可以劫持比特币客户端的前缀,并通过匹配任何中继 IP 地址来断开中继连接。虽然这种攻击更麻烦(客户端比中继多得多),但它仍然是可能的。 SABRE 通过混淆客户端和中继节点之间交换的流量来防止这种攻击,迫使攻击者对可能大量转移的流量执行全面检查(超出 L4 标头),因此与收益相比,攻击变得非常不切实际。请注意,虽然加密已经混淆的流量会使甚至完全检查无用,但仅加密无济于事,因为攻击者仍然能够匹配目标 IP。
为了混淆流量,我们建议使用两种技术。首先,中继可以在发送给普通客户端时修改其源 IP 地址。这是可能的,因为 SABRE 在中继和客户端之间使用无连接通信,使客户端能够接受具有不同于它们发送流量的源 IP 的数据包。其次,客户端可以通过 VPN/代理服务连接到中继,迫使攻击者首先找到代理 IP 和相应比特币客户端之间的映射。
示例
使用图 2c,我们现在解释三个中继(即 r1、r2 和 r3)的 SABRE 部署如何通过保护中继内连接和最大化覆盖范围来防止如图 2b 所示的路由攻击。
关于图2a,每个比特币客户端除了保持常规的比特币连接外,现在还与至少一个中继节点相连。在这里,节点g1、g2、g3与中继r1连接,而节点g1也与节点r3连接。托管在直接对等的AS中,中继节点保护他们的内部连接,防止ASX的劫持。例如,考虑ASX将覆盖r1的/24前缀广告给ASC。由于ASX是ASC的供应商,ASC丢弃了广告,因为它更喜欢通过对等体路由流量。同时,形成一个2个连接的图,允许中继网络维持任何单一的链接切断。这可能是由故障、违反协议或来自另一个直接对等体(如ASF到ASD)的未经过滤的恶意广告引起的。请注意,如果不部署r2,这一点将不成立。最后,中继的准确定位是使通往它们的路径比攻击者的路径更受青睐。作为一个例子,ASX可以通过公布一个比ASG最初使用的路径(提供者路线,通过ASF)有更好的优先权的路径(作为一个对等体),将连接从ASG转移到ASD。即便如此,ASX也不能将连接从ASG转移到ASB。事实上,ASG将始终倾向于其客户路径而不是任何对等路径。
C. SABRE弹性软件/硬件节点联合设计
作为一个公开的和可访问的中继网络,SABRE节点应该能够承受高负荷,无论是合法的比特币客户还是试图耗尽其资源的恶意客户。为了扩大规模,SABRE节点依靠软件/硬件联合设计,其中大部分操作被卸载到可编程的网络交换机(例如,支持P4的交换机)。作为一个例子,在图3中,两个SABRE节点相互连接,并与一些比特币客户端连接。一个客户端通过交换机直接与控制器对话,而其他客户端只与交换机对话。
特别是,SABRE的中继设计是基于以下的观察。i) 需要在中继节点上缓存的内容是可预测的,而且体积小,包括最近开采的一两个1MB的区块;ii) 大多数中继操作是通信量大的,包括将最新的已知区块传播给许多客户并区分新的区块。前者允许有效的缓存(极高的命中率),而后者允许在可编程的网络设备中进行部分硬件实现。这种软件/硬件的共同设计使SABRE节点能够以Tbps的速度运行,从而维持大型DDoS攻击。事实上,Barefoot Tofino可编程网络设备可以在背板上处理多达6.5Tbps的流量[7]。
虽然使用可编程网络设备可以实现高性能,但由于缺乏广泛的指令集,以及在内存和每个数据包的操作数方面的严格限制,它并不容易。我们通过三种技术来克服这些限制。首先,我们的软/硬件设计无缝地融合了硬件和软件操作,使自动升级的操作不能在交换机中完成,而是由软件组件完成。在SABRE中,只有新区块的验证(每10分钟发生一次)需要升级,而所有其他请求都由硬件通过基于UDP的协议提供。第二,我们的实现依赖于优化的数据结构,这些数据结构的内存效率高,每次访问需要固定数量的操作。第三,我们对需要在交换机上计算的数值进行了大量的预计算和缓存(例如,UDP校验和)。
四、SABRE SECURE NETWORK DESIGN
在本节中,我们正式定义了选择中继托管 AS(第 IV -A 节)的问题陈述,以便在第 IV 节提出解决算法之前,将针对比特币的成功路由攻击的可能性降至最低 – B 和 IV -C。
A. 问题陈述和挑战
SABRE 提供的安全性取决于: ii) 覆盖了多少比特币网络,即 AS 级别的攻击者能够阻止每个特定客户端连接到所有中继节点的可能性有多大。
因此,给定要实现的中继内连接水平(例如,2 连接),我们的目标是最大化比特币覆盖率。形式上,我们将问题定义如下:
问题陈述
设 G = AS, E) 是 AS 级拓扑图,其中顶点 AS) 对应于 AS,边 E) 对应于 AS 间的链接。还让 B ⊆ AS 是托管比特币客户端的 AS 的子集,而 R ⊆ AS 是没有客户的 AS 的子集。最后,令 G0 = G[R, E0] 是 G 的子图,由 R 和 peer-peer-AS 间链路的子集 E0 ⊆ R×R) 引起。我们将 A = AS × B 定义为所有攻击场景的集合,即所有 AS 对 a, b),其中 AS a 充当具有比特币客户端的 AS b 的 AS 级对手。令 S : R → A 是一个函数,给定一个候选中继 AS,找到该候选 AS 所防御的攻击场景的子集 α⊆ A。进一步让 C : PA) → R 是一个函数(P·) 表示功率集),给定一组攻击场景 α ⊆ A,通过计算所有场景的总和来量化它们对比特币系统的重要性α 由受害 AS 中托管的比特币客户端数量加权,即 Cα) = P x,v)∈α wv 其中 wv 是 AS v 中的比特币客户端数量。
我们要找到 R0 ⊆ R 的子图 G00 = G0[R0] 使得 |R0| = N; G00 是 k 连通的;和C? S ri∈R0 Sri)?被最大化。换句话说,我们的目标是——对于固定数量的中继 N 和中继互连 k——最大化比特币客户端受到保护的攻击场景的数量。
挑战
以最佳方式解决上述问题具有挑战性,至少有三个原因。首先,任何中继器子集R0的有效性取决于每个中继器r∈R0所保护的攻击场景集的联合。由于这些情况一般都不是不相干的,这个问题可以简化为最大覆盖率问题。第二,在随机图中寻找k连接的子图是很困难的[20]。第三,考虑到任何可能的攻击者,我们需要能够预测从每个有比特币客户端的AS到中继的转发路径。
我们开发了一个启发式方法来解决前两个挑战(第四节-B)和一个算法来寻找每个攻击者的可能攻击方案(第四节-C)。
B. SABRE中继
中继给定数量 N 的中继及其所需的连通性 k,我们的算法返回一组 ASs R0,在其中托管中继,从而满足连通性和大小要求并最大化加权覆盖范围。这映射到具有附加连接约束的最大覆盖问题。因此,我们使用了一种贪婪的方法,被证明对于最大覆盖问题[24]是有效的。
我们的算法从一个空集 R0 和一组候选 ASes R 开始,它们满足第 III-B 节中列出的约束,并且还包含在至少 N 个节点的至少一个 k 连接子图中,因为只有那些可以承载其中一个N 个中继的 k 连接网络的中继节点。然后它迭代地将中继添加到 R0 以最大化覆盖的攻击场景的数量,同时保留 R0 的 k 连接性。这个简单的过程在 ON) 中运行并且在实践中运行良好(第 VI 节)。
特别是,在每一轮中,我们首先选择与 R0 中至少 min{k, |R0|} 的已选择 AS 连接的候选 R0k ⊆ Rk \R0。然后我们将提供最大加权额外覆盖率的候选 r ∈ R0k 添加到 R0new = R0 ∪ {r},即具有最大 C? S ri∈R0new Sri)? – C? S ri∈R0 Sri)?我们更新了 R0 := R0new。当我们选择了所有候选者时,|R0| = N,我们返回 R0。
我们在第 VI 节中展示,由此产生的中继网络可以很容易地保护 80% 到 98% 的现有比特币客户端(取决于内部连接和部署节点的数量)免受 99% 的潜在攻击者的攻击。完整的伪代码可以在附录 A,Algo 中找到。 1.
虽然我们算法的目标是最小化攻击向量而不是最大化部署激励,但我们在第 VIII 节中讨论了这些。
解释了如何根据 SABRE 中继覆盖的攻击场景定位它们,现在我们描述如何为每个中继计算这些场景,即我们如何实现函数 S。具体来说,我们现在描述如何计算 AS-级别的攻击者可以成功劫持来自托管比特币客户端的 AS(例如 AS V)并发往中继 AS(例如 ASR)的流量。
我们的算法基于以下观察:如果虚假广告到达受害者 AS V),它将通过与攻击者 ASM 所发布的任何其他前缀相同的传播路径进行传播,因此将共享其偏好特征。因此,要检查来自 AS V 的流量是否易受攻击,我们只需比较从 AS V 到 ASR 的路径和从 AS V 到 ASM 的路径。如果两条路径共有的最后一个 AS 更喜欢通往 ASM 的路径,则 ASM 可以成功劫持从 AS V 到 ASR 的流量。这是因为最后一个 AS 决定使用两条路由中的哪一条并进一步通告。请注意,如果从 AS V 到 ASR 和到 ASM 的路径不相交,则最后一个祖先是 AS V 本身。偏好比较基于路径上AS之间的业务关系和路径长度;即客户优先于同行;同行优于供应商;和较短的路径超过较长的路径。
作为一个例子,图 4 说明了一个 AS 拓扑,它增加了 AS 之间的经济协议。相对于资金流向(如果有的话)箭头是相反的,供应商在顶部,客户在底部。不同的阴影说明了来自某些 AS 的首选广告与 AS V 眼中的其他广告相比如何。白色是最喜欢的,黑色是最少的。例如,与任何其他广告相比,AS V 更喜欢来自其客户 ASA 的广告(ASA 是白色的)。因此,如果中继托管在 ASA 中,则没有 AS 可以将连接转移到它。在可通过客户访问的不同发起者中,最短路径将是首选。
因此,第一层客户比第二层轻,这意味着如果中继托管在 ASE 中,则所有 ASA、ASB、ASC、ASD 以及可能的 ASF 和 ASG 都是有效的可能攻击者。类似地,如果中继托管在 V 的对等体(即 ASH)中,则 ASA 的客户锥体中的所有 AS 都可能是攻击者,对等体锥体中路径长度较短的 AS 也是如此。最后,如果中继是通过提供商到达的,长度并不总是相关的:在我们的示例中,ASM 的广告将不如 ASA-ASH 的广告那么受欢迎,甚至不如 ASL 的广告那么受欢迎。虽然这两条路径都是通过一个提供者,即 ASI,并且到 ASM 的路径更短,但受害者不会使用它。这是因为 ASI 是两条路径的最后一个公共 AS,它更喜欢通过 ASJ 的路径,不会通告 ASM。完整的伪代码可以在附录 A,Algo 中找到。 2.
五、SABER弹性中继节点设计
虽然中继节点的复杂的基于软件的实现可能会起作用2,但与基于硬件的方法相比,它的吞吐量会低 2-3 个数量级 [31],这使得它特别容易受到 DDoS 攻击。相反,利用可编程网络设备的混合实现可以扩展到每秒数十亿个数据包,并直接在数据平面中缓解恶意客户端,即在它们到达软件组件之前。
在本节中,我们将解释 SABRE 中继节点(第 V -A 节)及其操作(第 V -B 节)背后的软件/硬件协同设计。虽然协议本身特定于比特币,但类似的技术也可以应用于其他系统。我们将在第 IX 节进一步讨论这个问题。
A. 硬件/软件协同设计
图 5 说明了 SABRE 的软件/硬件协同设计。它由连接到修改后的比特币客户端控制器的可编程开关组成。
交换机负责: i) 服务客户端连接; ii) 保护控制器免受恶意客户端的侵害; iii) 传播区块; iv) 区分新区块和旧区块。相反,控制器负责验证新块,将它们通告给连接的客户端并相应地更新交换内存。
中继客户端与交换机建立 UDP 连接,很少与控制器建立常规比特币连接(通过 TCP)。交换机只允许经过批准的比特币客户端与控制器建立连接。由于大多数客户端“消费”而不是生产它们,我们希望大多数客户端仅通过 UDP 连接与 SABRE 交互。
SABRE 的基于 UDP 的协议由 8 条消息组成:SYN、SYN/ACK、ACK、NCONN、GET SEQ、ADV、UPD 和 BLK。与 TCP 类似,SYN、SYN/ACK、ACK 用于防止欺骗攻击。 NCONN 用于通知新连接的控制器。 GET SEQ、BLK 和 ADV 与块管理有关。具体来说,GET SEQ 使客户端能够请求作为 BLK 发送的块的特定段,而 ADV 使客户端能够将新挖掘的块通告给中继。最后,控制器还使用 BLK 消息在 UPD 之后使用最新块更新交换机。
交换机维护三个数据结构来管理客户端连接和跟踪异常:PeerList、Whitelist、Blacklist。 PeerList 包含有关已连接客户端的信息,即成功建立三次握手的客户端。相比之下,白名单维护允许直接与控制器通信的客户端信息,而黑名单包含滥用中继并被禁止的客户端。该交换机还维护一种数据结构来存储最新的块:BlockMem。 BlockMem 与每个段的预计算校验和一起存储在大小相等的索引段中,以允许交换机及时回复请求的段,从而避免额外的计算。此外,交换机包含两个专门用于异常检测的组件:SentLimit 和 CheckSecret。SentLimit 检测客户端请求块的次数过多,而 CheckSecret 在握手期间计算哈希值以验证客户端是否使用其真实 IP 连接到中继节点。最后,交换机还维护了一种数据结构,用于检查是否已知广告哈希:Memhash。
在下文中,我们将描述中继执行的不同操作以及它们如何修改每个数据结构。在第 VII 节中,我们展示了我们的设计可以在交换机内存不足 5 MB 的情况下维持 1M 恶意和 100k 良性客户端连接。这种内存占用只是当今可编程交换机提供的内存的一小部分(数十兆字节 [32]),从而使交换机也可以实现其他应用程序。
B. 中继操作
我们现在详细描述 SABRE 中继操作。客户端和控制器是默认比特币客户端的扩展版本,开关在 P4 [17] 中实现。我们的协议定义了四种操作:(i)普通比特币客户端如何连接到中继节点; ii) 中继节点如何将块传播回给它们; iii) 中继节点如何接收和验证客户端传输的块; iv) 控制器如何在接收到新的有效块时更新开关存储器。对于每一次操作,交换机都会确保中继的资源不会被恶意耗尽。
管理客户端连接 为了避免欺骗攻击,比特币客户端使用三向握手初始化与中继节点的连接,如图 6a 所示。对于正常的 TCP 连接,客户端首先发送一个 SYN 包。收到 SYN 后,交换机会在 SYN/ACK 数据包中回显使用客户端 IP 地址和 UDP 端口计算的秘密值。然后,客户端将这个秘密值包含在最终 ACK) 数据包中,以证明它拥有它正在使用的源 IP 地址。
成功完成握手后,交换机在 PeerList 中添加客户端 IP 和端口号条目,并通过 NCONN 消息通知控制器。PeerList 被实现为 Bloom filter BF) 以提高内存效率。因此,它使交换机能够验证传入数据包是否属于已建立的连接,否则将其丢弃。 BF 不支持列出所有插入的项目。因此,控制器需要存储连接以供将来使用(例如,通告新块和更新 PeerList)。
学习新块
中继节点需要学习新挖掘的块。新块从常规客户端传输到中继。作为计算能力有限的网络设备,交换机无法验证块。因此,通告的块需要在它们被交换机过滤之后被传送到控制器。
如图 7a 所示,节点使用 ADV 消息通过其散列向交换机通告块。开关使用 HashMem 检查散列是否已知。如果哈希值未知,则交换机要求客户端使用 CTR 消息连接到控制器,并将其 IP 存储在白名单中。如果传输的块是合法的,客户端的 IP 将在白名单中保留四天。客户端像普通比特币客户端一样连接到控制器,而交换机将 TCP 流量转发到控制器。交换机只允许来自白名单客户端的数据包到达控制器。请注意,恶意矿工无法通过其连接垄断或超载控制器,因为即使是拥有 30% 哈希算力的矿池也无法在任何给定时刻保留超过 172 个列入白名单的客户端。
然而,恶意矿工仍然可能试图通过同时向中继节点涌入多个需要由控制器验证的区块来设计区块竞赛。为了抵御这种攻击,交换机保持被列入白名单的活动节点的数量。当这个数字超过根据控制器的硬件能力设置的预定义阈值时,交换机将停止对新客户的白名单。在这种情况下,控制器从已经被列入白名单的节点接收块。由于白名单中的过期机制,这些节点应该有足够的多样性,就采矿能力的来源而言,以保持中继的最新情况。例如,任何拥有至少0.17%挖矿能力的矿池可以在白名单中永远保留至少一个节点。从本质上讲,交换机实现了一个简单而有效的基于信誉的访问列表,以保护控制器免受Sybil攻击。
使用新块更新交换机
如果新传输的块是有效的,则控制器使用段 ID 和对应于特定块哈希的块段数据之间的新映射来更新交换机的内存。然后交换机可以根据请求将分段传输给客户端。请注意交换机将数据发送到 UDP 套接字。因此,IP 和 UDP 校验和需要正确才能使数据包被接受。 UDP 校验和使用伪报头计算,有效载荷的补码和分为 16 位段。因为在交换机中计算这个会导致太多的计算,我们将预先计算的块段的补码和与段本身一起缓存。使用此值,交换机只需添加每个客户端不同的标题部分。
图 7b 说明了控制器为更新交换机而发送的数据包序列。最初,它发送包含新哈希的 UPDA TE 消息。第一条消息告诉交换机为新块准备其状态。发送下一条消息以传输块的每个段以及预先计算的总和。
传播新学习的块
中继节点将新块通告给所有连接的客户端,然后这些客户端可以逐段请求块。由于三个原因,块在多个单独的段中传输:(i)允许客户端独立请求丢失的段; ii) 避免数据平面中的环路,否则由于该块不适合一个数据包,因此可能需要该环路; ii) 防止放大攻击。
如图 6b 所示,控制器发送由交换机转发的 INV 消息。此 INV 消息包含新块的哈希以及所需的段数。在该示例中,中继发布由 23 个段组成的哈希 #5。如果比特币客户端不知道广告块,它会使用包含块哈希和 23 个段 ID 中的每一个的 GET SEG 消息来请求它。在示例中,客户端首先请求具有哈希#5 的块的 ID:1 段,然后请求 ID:2 的段,依此类推。如果 GET SEG 或 SEG 丢失,客户端将简单地再次请求相应的段。
作为一种保护机制,交换机会禁止多次请求阻止的客户端。为此,所有请求都会遍历一个重击检测器,即 SentLimit。在 SABRE 中,我们只是重用了一个为可编程开关优化的组件 [47],它可以在 80KB 的内存下运行。
六、NETWORK ARCHITECTURE EVALUATION
在本节中,我们评估 SABRE 在保护比特币免受路由攻击方面的效率。具体来说,我们回答了以下问题:SABER 在防止针对整个网络和单个客户端的路由攻击方面的效果如何?这种有效性如何随着 SABRE 网络的规模和连通性而变化? SABRE 如何在其他中继网络和已知对策中脱颖而出?
我们发现,即使是 6 个单连接 SABRE 节点的小规模部署,也可以防止互联网中 94% 的 AS 隔离超过 10% 的比特币客户端;而 30 个 5 连接的中继的更大规模部署可以防止超过 99% 的 AS 隔离超过 20% 的比特币客户端。此外,我们展示了现有的中继网络,如 Falcon [3] 和 FIBER [2],没有提供针对路由攻击的保护。最后,我们展示了 SABRE 提供的安全级别与在 /24 中托管所有客户端相同,这是一种有效但显然不切实际的解决方案。
在详细介绍我们的结果之前,我们首先描述我们的方法(第 VI-A 部分)。
A. Methodology
数据集
我们的评估依赖于一个联合数据集,该数据集结合了路由和比特币信息。关于路由信息,我们依靠CAIDA[1]提供的AS级拓扑和AS级策略,收集于2018年5月。我们依靠路由树算法[29]来计算任何两个AS之间遵循的转发路径。我们认为由攻击者AS发起的路径是在BGP决策过程的平局状态(SABRE的最坏情况)下系统地挑选的4。关于比特币信息,我们依靠来自[8]的比特币客户的IP以及来自[2]、[3]的现有中继节点的IP,两者都是在2018年5月收集的。
我们通过将每个比特币 IP 与广播覆盖它的最特定 IP 前缀的 AS 相关联来合并两个数据集(使用 RIPE BGP 收集器 [4] 收集的路由)。
B. SABRE 安全效率
SABER 可防止网络范围的分区 为了评估 SABRE 对希望分割比特币网络的对手的有效性,我们量化了随机对手能够断开多个客户端与中继网络的可能性。特定 AS 可以与中继断开连接的客户端比例构成了她可以在比特币网络中创建的最大分区的上限,因为连接到中继网络的比特币节点无法分区。
图 8 说明了比特币网络是如何受到保护的,这取决于 SABRE 网络的大小 N 和内部连接 k。该图显示,对于每个给定的 y 部分比特币节点,有多少比例的 AS 能够独立地将其与 SABRE 断开连接。
对于 N = 20、k = 1,只有不到 3% 的 AS 能够阻止相当一部分比特币客户端(15%)连接到中继网络。相比之下,超过 90% 的客户端可以被当前网络中的任何 AS 隔离 [15]。
可能的攻击者数量和分区大小之间的映射随 SABRE 的大小和连接性而变化。特别是,增加部署节点的数量会降低攻击者成功转移流量的机会。另一方面,降低内部连接要求(即 k 的值)允许我们的算法(第 IV 节)从更大的中继集合中进行选择,从而形成更有效的 SABRE。这在中继内连接的安全性与中继覆盖现有比特币网络的程度之间创造了一个有趣的权衡。例如,虽然以全网格(5 连接图)连接的 6 个中继的 SABRE 非常难以划分,因为 AS 级别的对手需要转移 5 个点对点链接,但它启用了更多的 AS级对手将大部分比特币客户与 SABRE 断开连接。例如,3% 的 AS 可能会创建一个包含 22% 比特币节点的分区。相比之下,1-connected SABRE 允许更少的攻击者执行严重攻击——只有 1% 的 AS 可以创建 12% 的分区——但可以通过单个链路故障或直接对等方的成功劫持来进行分区。
SABRE 保护大多数个人客户端
为了评估 SABRE 保护个人客户端的有效性,我们研究了比特币客户端被随机 AS 级对手阻止到达所有中继节点的可能性有多大。
图 10 显示,对于给定百分比的 AS,有多少百分比的比特币客户端可以被这个百分比的 AS 攻击并与 SABRE 断开连接。
我们看到,即使使用只有 6 个 5 连接节点的 SABRE 网络,也可以保护 80% 的客户端免受 96% 的 AS 级对手的攻击。在安全的内部连接和比特币客户端的覆盖之间再次存在权衡。例如,6 个 1 连接节点的 SABRE 可以保护 90% 的比特币客户端免受 92.5% 的 AS 的攻击,而完全连接的 6 节点 SABRE 只能保护 89.5% 的 AS。有趣的是,将连接性从 k = 3 增加到 k = 5 并不会显着减少受保护的客户端,同时几乎不可能断开中继网络。
C. SABRE 与现有中继网络相比的效率
我们将 SABER 与 FIBER [2] 和 Falcon [3] 进行比较,以了解它们对路由攻击的有效性。我们发现 SABER 的表现优于两者,原因有以下三个。
现有中继容易受到较长前缀劫持的攻击
FIBER 和 Falcon 的所有中继节点都托管在短于 /24 的前缀中。因此,任何 AS 级别的攻击者只能通过劫持 6 个更具体的 FIBER 前缀和 10 个 Falcon 前缀来将中继节点彼此以及比特币客户端分区。
现有的中继网络连接不良
即使这些中继网络以 /24 前缀托管它们的节点,我们发现它们的连接仍然可能被相同前缀的广告转移。特别是,我们发现 FIBER 中继会被 652 个 AS 中的任何一个断开,而 Falcon 会被 3 个 AS 中的任何一个断开,即使使用了 /24 前缀。
现有中继的覆盖范围很差
再次假设这些中继网络将以 /24 前缀托管它们的节点,它们的客户端到中继连接仍然比 SABRE 的连接更容易受到攻击,从而允许更多的网络范围和有针对性的攻击。我们使用与第 VI-B 节中相同的图表将这些中继网络与 SABRE 进行比较,以了解它们在抵御路由攻击方面的能力。特别是,图 10 显示了能够独立隔离比特币网络的一部分的 AS 的百分比作为该分数的函数,而图 11 显示了客户端的累积百分比作为 AS 级对手数量的函数这可能会使它们与所有中继节点断开连接。虽然 FIBER 略好于 Falcon,但 SABRE 的表现优于两者。
D. SABRE 与在 /24 中托管所有客户端相比的效率
我们现在将 SABRE 与针对路由攻击的最有效对策进行比较:在 /24 前缀中托管所有比特币客户端 [15]。虽然有效,但这种对策也非常不切实际,因为除了增加 Internet 范围内的路由表的大小之外,它还需要 ISP 的合作。
我们发现 SABRE 提供了相当水平的保护,可抵御网络范围内的目标攻击,同时易于部署。
这两种方法之间的比较并不简单,因为即使攻击者已经分割了比特币点对点网络,SABER 也能保护网络,而另一种方法旨在保护点对点网络本身。在下文中,我们描述了我们的方法和主要结果。
为了比较这两种替代方案对分区攻击的保护,我们首先需要确定能够仅使用相同前缀广告隔离相当一部分比特币客户端的 ASlevel 对手。为此,我们在 AS 级拓扑图上使用广度优先搜索,它按优先级降序遍历图(第 IV -C 节)。我们从每个具有比特币客户端 X 的 AS 运行遍历。在另一个具有比特币客户端的 AS 之前被搜索遍历的所有 AS 能够将 X 与比特币网络隔离。该计算仅给出了可能分区的下限,即在 /24 前缀中托管所有客户端可能提供的安全性低于我们计算的安全性。我们的结果包含在图 10 中。事实上,在 /24 前缀中托管所有客户端将比 SABRE 更好地保护比特币网络,因为只有 0.016% 的 AS 可能存在大于 20% 的分区。
为了比较有多少攻击者可以成功隔离单个比特币客户端,我们研究了能够将流量从每个客户端转移到网络中所有其他客户端的 AS。结果包含在图 11 中。两种方法显示出相似的保护水平,SABER 有时会稍好一些。这是因为 SABRE 可以在互联网上的任何 AS 中放置中继,而替代对策仅限于比特币客户端的实际分布。
七、软件/硬件协同设计的可行性
我们通过使用连接到 SABRE 组件(即 P4 开关和控制器)的常规和修改过的比特币客户端在实践中对其进行测试来验证我们的协同设计的可行性。我们展示了 i) 可编程交换机无需任何软件交互即可与比特币客户端无缝通信;并且 ii) 与当今可编程开关中可用的片上存储器相比,数据平面存储器占用空间较低。
实现/测试平台 控制器和客户端都作为默认比特币客户端 0.16 版的扩展来实现。前者包含约 650 行添加或修改的 C++ 代码,后者约 680 行。该开关在大约 900 行 P4 代码中实现。我们的原型在 Mininet [38] 上运行,并使用公开可用的 P4 行为模型 BMV2) [12] 来模拟开关。我们的测试台(见图 12)由三个客户端 A、B、C 以及一个由交换机和控制器组成的中继节点组成。节点 B、C(显示为红色)已修改并连接到 SABRE,而节点 A(显示为绿色)是未修改的比特币客户端。
控制器也是一个修改过的比特币客户端 时序我们遍历一个在比特币网络中挖掘并由未修改的客户端 A 发送到修改过的区块的生命周期,即节点 B。后者会将新区块通告给开关,这将允许节点 B 直接连接到控制器并传输它。然后控制器将更新交换机的内存并将块通告给连接的对等点(例如,C)。接下来,节点 C 将分段请求和接收块。该过程的主要步骤在图 12 中列出,其中包含每个步骤的索引、描述和在我们的原型实现中花费的时间。最耗时的操作是更新交换机和传输 Block,每次大约需要 7s。这些相对较大的时间是因为我们依赖于 P4 开关的模拟版本。硬件实现中唯一的实际瓶颈是中继节点的上行链路。
内存要求
我们在考虑到预期负载的情况下,分析计算了交换机中每个组件的内存。表一总结了我们的结果。它包括组件的名称,它的容量,即可以添加的元素的数量,以便不超过第三栏中列出的假阳性率。我们可以看到,所需的累计内存不超过5MB,这在今天的可编程开关的限制范围内。最需要内存的部分是黑名单,我们为其预算了100万个条目。这对于缓解DDoS攻击来说是必要的。
相比之下,由于合法客户的数量明显较少,所以致力于常规操作的组件对内存的需求较少。例如,我们只为PeerList中的10万个客户和Whitelist中的100个客户保留了空间;两者都需要不到1MB。请注意,普通客户的布鲁姆过滤器比黑名单的假阳性率低。
这使得即使交换机受到如此极端的DDoS攻击,黑名单被淹没,也能为已经连接的客户提供服务。我们没有列出SentLimit组件的要求,因为它们可以忽略不计[47]。最后,存储最新区块以及保存所有已知哈希值所需的内存大约为1MB。
八、可部署性和激励措施
与现有的中继网络(例如光纤 [2]、Falcon [3])类似,SABER 需要一个或多个实体来部署和维护其中继节点。我们现在讨论 SABRE 部署背后的动机和实用性方面。
考虑到所涉及的资金数额,5 以及路由攻击的破坏性影响 [15],重要的比特币客户——尤其是矿工——有动力为 SABRE 的托管成本提供资金。因此,AS 有动机提供收费的 SABRE 服务。我们认为这种“商业模式”是合理的,原因有二。
首先,我们注意到,大量被发现是托管中继的良好候选AS是云提供商、CDN、IXP、大型ISP或软件即服务(SaaS)提供商。这应该不足为奇,因为这些AS正在积极尝试建立尽可能多的对等互联,以改善他们的服务。在这样的ASes中部署SABRE节点是实用的,因为它们已经在销售在线服务或对研究有利(IXPs[30])。此外,即使一些符合条件的ASes不同意托管SABRE节点,SABRE的有效性也不会受到影响,因为。i) SABRE只需要很少的节点就能发挥作用(只要6个ASes,见第六节);ii) 有超过2000个可能的地点来托管ASes。简而言之,没有候选AS是不可替代的。
其次,云提供商已经在尝试租用我们先进的硬件资源。例如,Amazon EC2 提供了租用具有现场可编程门阵列的硬件加速计算实例的可能性 [6]。因此,我们设想云提供商也可以出租具有可编程网络数据平面的硬件加速计算实例。如果不是这种情况,SABER 的纯软件实现仍将保护比特币网络免受路由攻击,将 DDoS 留给传统解决方案。这种基于软件的 SABRE 实施可以很容易地部署,因为它只需要托管虚拟机的可能性。
最后,我们注意到虽然 SABRE 需要一些努力才能部署,但它比已知的替代解决方案 [15] 更实用,例如要求所有 AS 部署安全路由协议或期望所有具有比特币客户端的 AS 过滤其路由。
九、讨论
我们现在提供有关 SABRE 的高层问题的答案,包括它的设计有多少可以推广到其他区块链系统。
SABRE 中心化不违反比特币的去中心化前提吗? 不,主要有三个原因。首先,它与比特币并驾齐驱,不希望取代现有的点对点网络或与之竞争。相反,SABER 增强了连接性并显着减少了攻击面,否则攻击面将允许任何 AS 级别的对手分割网络。其次,多个类似 SABRE 的系统可以和谐共存,每个系统都属于不同的实体。事实上,普通客户端或矿池可以以轻量级 UDP 连接为代价连接到它们。第三,SABER 有可能让关系不太好的矿工从区块奖励中获得公平份额,从而降低其他人设计区块竞赛的可能性。
请注意,现有的继电器(例如 Fiber [2]、Falcon [3])尺寸很小并且由单个实体控制,就像 SABRE 一样。这些特征都没有阻止它们对比特币产生重大而积极的影响,即降低其孤儿率。
**为什么要关注比特币?**我们专注于比特币而不是更先进的加密货币(例如,Ripple [14] 或 Ethereum [11]),主要有三个原因。首先,比特币被广泛研究[41]、[21]、[43],并且针对它的路由攻击的有效性是众所周知的[15]。相比之下,更复杂的区块链系统(例如,Bitcoin-NG [23]、Ouroboros [35]、OmniLedger [37]、Algorand [26])尚未大规模部署,因此它们的确切路由特征未知。其次,比特币仍然是使用最广泛的加密货币,使其安全性对许多用户来说至关重要。
不过,人们可以说,比特币是一个出了名的慢动作社区。因此,部署SABRE不需要得到整个社区的批准。事实上,连接到SABRE节点只需要一个扩展客户端建立轻量级的UDP连接。
SABRE 能否保护其他基于区块链的系统免受路由攻击?
是的。尽管我们的工作重点是比特币,但 SABRE 的许多设计原则也适用于其他区块链系统。接下来,我们分别讨论网络的通用性和节点设计。
SABRE 网络设计对任何区块链系统都很有用,因为它允许它们减轻分区攻击 [15]。分区攻击不仅对比特币等未经许可或未加密的区块链系统构成威胁,而且对许可和/或加密的区块链系统也构成威胁。事实上,唯一不容易受到 BGP 劫持的区块链系统是那些节点都托管在单个 AS 或公司网络中的区块链系统,因为它们的流量不是通过 BGP 路由的。具体来说,SABER 允许节点交换信息,即使恶意 AS 级别的对手劫持并丢弃它们之间的流量。事实上,构建 SABRE 网络的属性也可以被矿工用来互连和/或托管他们的挖矿能力,或者被新的区块链系统用来以路由感知方式放置他们的节点,这种方式对 BGP 劫持具有固有的鲁棒性。最后,SABER 网络设计甚至对最先进的区块链系统(例如,ByzCoin [36]、OmniLedger [37])也很有用,它们可以通过检测攻击和冻结提交来减轻分区攻击的影响,有效地将攻击转变为拒绝服务。特别是,SABER 将允许他们在攻击期间保持活跃,因为解决 BGP 劫持是一个人为驱动的过程,可能需要数小时 [15]。
与其网络设计相比,SABER 节点的设计在某种程度上是特定于比特币的。例如,流量被加密的系统不能仅由可编程网络设备提供服务。即便如此,SABRE 的节点设计展示了所有区块链系统共享的两个关键属性,并且可以在其上构建更多系统。首先,区块链系统的通信量很大(由于需要达成共识),这意味着使用可编程交换机可以通过将通信负担卸载到硬件来增加吞吐量。其次,最流行的项目往往是可预测的,因为大多数节点总是会请求最新挖掘的内容,这使得类似 SABRE 的缓存策略非常有效。
十、相关工作
使用P4交换机作为缓存
先前的工作已经使用可编程的网络设备来缓存值,包括Netcache[33]和NetChain[31]。Netcache使用Tofino交换机[7]作为键值存储的缓存,使其能够处理memcached应用中的倾斜请求。同样,NetChain[31]将键值存储缓存在交换机中,以提高数据中心中用于协调服务器的Paxos共识协议。在SABRE中,我们也依靠交换机来缓存信息(这里是区块),我们用一个新的基于UDP的检索协议和一个动态访问列表来补充。
BGP 安全性
多年来,人们提出了许多建议来减少或防止路由攻击。我们区分两种方法:原点验证和路径验证。来源验证 [39] 依赖于 RPKI [18],这是一种基于 X.509 的将 IP 前缀映射到 AS 的层次结构,以使路由器能够过滤源自未经授权的 AS 的 BGP 广告。
路径验证 [40] 通过向 BGP 消息添加加密签名来保护 BGP。它允许公告的接收者以加密方式验证: i) 源 AS 被授权公告 IP 前缀; ii) 公告通过的 AS 列表确实是每个中间 AS 的意图。不幸的是,这些提议都没有被广泛部署,使得互联网仍然很容易受到路由攻击[27]。相比之下,SABER 能够保护比特币免受今天的路由攻击,而不需要所有 AS 同意或改变他们的做法。
对 ToR 的路由攻击
在对 ToR [50] 的路由攻击以及如何规避这些攻击 [48]、[44] [49] 方面进行了广泛的工作。 ToR 中继网络和比特币网络之间存在三个关键区别,这些区别改变了可能的攻击和对策的范围。首先,为了保护比特币系统,我们需要保持网络连接,而不是为 ToR 保护每个连接的隐私。因此,我们可以使用冗余来保护比特币客户端,将它们连接到多个 SABRE 中继,这样就没有 AS 可以有效地劫持所有连接。其次,针对 ToR 的路由攻击的对策仅限于避免可能受 BGP 劫持影响的路由,而我们构建 SABRE 是为了避免攻击者能够首先转移它的机会。这是可能的,因为比特币客户端对于连接谁没有偏好,因为他们几乎可以从任何对等方获得相同的信息。第三,针对ToR的路由攻击的对策不处理客户端本身被劫持的情况。
多播协议
Mbone [22] 被设计用于在 Internet 中多播实时视频和音乐流,其中许多路由器不支持 IP 多播。使用隧道,Mbone 流量可以保持在这些路由器的雷达之下。尽管具有新颖性和实用性,但该网络没有考虑使用的路径是否可以被劫持,也没有处理恶意增加的负载。最后,Splitstream [19] 等旨在减少每个节点负载的系统需要一组固定的参与者和它们之间的特定结构,这将限制我们网络的开放性(常规客户端不能轻易进出)。
十一、结论
我们提出了SABRE,一个旨在确保比特币免受路由攻击的中继网络。SABRE背后的关键见解是将中继节点放置在安全的位置,防止AS级攻击者转移中继内的通信,并减少他们转移目的地为中继客户端的流量的能力。为了保护节点本身,SABRE利用硬件/软件联合设计(利用可编程数据平面),在硬件中执行大部分的中继操作。 我们完全实现了SABRE,并证明了它在保护比特币方面的有效性,只需6个中继节点。