希伯来大学教授 Ayelet Mizrah 和 Aviv Zohar 提出通过使用不到 0.5 BTC 锁定大部分闪电网络流动性的两种攻击方法,并给出了缓解方案。

原文标题:《最新研究:0.5 个比特币就能锁定大部分流动性,支付通道漏洞让闪电网络瘫痪》(Congestion Attacks in Payment Channel Networks)
撰文:Ayelet Mizrah 和 Aviv Zohar,希伯来大学教授
编译:kyle

希伯来大学教授 Ayelet Mizrah 和 Aviv Zohar 联合发表论文《支付通道网络中的拥塞攻击》,这篇论文讨论了在构建去信任的多跳支付时,支付通道网络中出现的一个基本漏洞。这篇文章提出了两种攻击方式:第一种是长时间锁定尽可能多的高流动性通道,第二种是试图将单个节点与网络隔离,并对闪电网络承受这些攻击进行了评估。通过检查闪电网络的三个主要实现对网络的属性和不同参数的设置,这篇文章证明了闪电网络最近默认参数的更改会让攻击更易于发生。结果表明,通过使用不到 0.5 个比特币就可以锁定大部分闪电网络的流动性,这可能破坏闪电网络。


在一篇 新论文 中,我们讨论了在支付通道网络中构建无需信任多跳支付过程中出现的一个基本漏洞。我们提出两种攻击方式:第一种旨在长时间锁定尽可能多的高流动性通道,第二种旨在将中枢(hubs)与网络的其余部分隔离。在本文中,我们介绍了这些针对闪电网络的攻击的评估。我们将检查闪电网络的三个主要实现对网络的属性和不同参数的设置,并展示闪电开发人员同意的默认参数的最新更改如何使攻击更容易实施。我们的结果表明,通过使用不到 0.5 个比特币就锁定大部分闪电网络的流动性,这可以破坏闪电网络。

支付通道网络是解决区块链可扩展性问题的第二层链下解决方案。作为比特币二层网络的闪电网络目前拥有超过 11,000 个节点和 35,000 个通道,总容量约为 880 BTC (约合 9,000,000 美元)。

我们探索的攻击的基本概念是可以追溯到 2015 年 8 月的 Lightning-dev 列表中的对应内容中提到的,以及 2017 年 5 月提到的 BOLT 中的一个 git 问题。从未对这种攻击的后果进行全面评估,其成本却非常低:攻击者只需不到 0.5 个比特币,就可以无限期地锁定网络的大部分通道。

攻击:

为了使通道瘫痪,攻击者使用一套路径的源和目标打开通道,并通过该路径请求许多小额付款,从而耗尽了同时打开的 HTLC 的数量(闪电网络的每种主要实现方式对并发 HTLC 的数量都有不同的限制 )。 攻击者既是付款的来源,又是目的地,并且可能严重延迟付款的最终执行时间(最多几天)。 然后,攻击者可以再次重新运行攻击,并锁定同一路径额外的一段时间。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法攻击者创建了两条长途路线用于瘫痪通道

我们研究了闪电协议的主要实现。 这是它们用于相关参数的默认值(大多数节点的确使用这些默认值-请参阅本文中的详细信息)。 如今,网络上的大多数节点实际上都是 LND 节点(约 90%)。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法默认参数

下图说明了如何沿着路径执行单笔付款(攻击者在每个路径上重复多次,直到没有更多的 HTLC 可用):

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法路由建立和 HTLC 消除的过程

我们评估了在整个闪电网络上大规模运行此操作的后果。

攻击整个网络:

当使用一种贪婪算法以选择路线并使尽可能多的流动性瘫痪时,我们得到以下结果。 下图显示了我们设法瘫痪的闪电网络当前锁定的总容量的一部分(一次连续 3 天)。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

在不同的时间段内可以非常有效地锁定网络:

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

攻击的总成本很低。 成本由两个主要因素组成:开通通道的成本(不可退款)和提供具有流动性的通道的成本(这笔钱仍由攻击者掌握)。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

我们的结果表明,攻击者可以使用少于 0.25 BTC 的数量使闪电网络中 650 BTC 的流动性瘫痪 3 天。

攻击中枢:

为了延长单个节点与网络的连接时间,攻击者将连接到受害节点并使它的相邻通道瘫痪。 为此,它会通过受害人的通道来回路径发出多次付款请求(这在闪电网络实现中令人惊讶地被允许)。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

以下是一些重要节点,攻击它们的成本为:

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

该表中的最后一个条目涉及对属于 LNBIG 的所有 25 个节点的隔离攻击,这些节点持有闪电网络中所有流动性的 47.3%。

如果要攻击较小的节点,代价通常与它们的级别成正比(但不完全相同):

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

我们注意到该漏洞相对难以修复,因为它涉及到链下支付网络的三个基本属性:

1. 支付是以一种无需信任的方式执行的,使用了有条件的支付合约(以与 HTLC 的交易形式),这些合约在各方之间交换,并且仅在发生争议时才发送到区块链。这些合约的规模随着更多的有条件付款待处理而增长,因此,待处理付款的总数受到可放置在区块链上的交易规模的限制。

2. 到期时间长。为了允许节点在恶意伙伴关闭作为待付款项一部分的通道时收回其资金,已设置 HTLC 到期时间以允许节点有足够的时间对这种关闭提出上诉。在比特币的闪电网络中,由于其脚本语言的表达能力较低,HTLC 的到期时间会在路径的整个长度上累积,直至达到 2016 个的区块——通常需要两个星期的时间。

3. 付款的隐私。付款通道网络使用洋葱路由,该路由不允许路径上的中间节点识别付款的来源和付款地点,从而使攻击者可以不受惩罚地采取行动。

缓解技术 :

实际上,对默认值的最新更改实际上使我们的攻击更容易实施:LND 将其 cltv_expiry_delta 默认值从 144 个区块更改为 40 个区块(2019 年 3 月 12 日),这允许在每个路径中链接更多节点而不会达到 locktime_max 限制。此外,Lightning 开发人员在 2018 年阿德莱德会议上商定了 2016 (max_cltv)的最大锁定时间以设置 BOLT 1.1 规范。这是在某些实现中使用的先前值的增加。同样,这允许更长的路由和更长的到期延迟,这使攻击更具破坏性,更易于执行。

强制执行快速 HTLC 解析。虽然 HTLC 的到期时间可以使节点保持安全并提供足够的时间将事务发布到网络,但我们建议添加另一种超时机制。具体来说,如果 HTLC 机密没有从一个相邻节点足够快地传播,则与该节点的通道应关闭。这种机制是一种将行为异常的对等方与网络断开连接的方式,以防止它们免费重复多次攻击。

减小路线长度。我们建议降低最大允许路由长度(当前为 20 跳)。网络图是高度连接的,并且跳数仍然应该足够:网络中节点之间的路径平均少于 3 跳,并且网络直径约为 6。

0.5 BTC 就可以锁定大部分闪电网络流动性,了解两种攻击方法

根据信任级别和循环回避设置最大并发支付数是另外两种可以稍微缓解攻击的方法。

为了确保网络安全,必须进行进一步的工作。 由于攻击依赖于支付通道中的基本机制,因此需要更多考虑。

来源链接:medium.com