在一篇新论文中,我们讨论了在支付通道网络中构建无需信任多跳支付过程中出现的一个基本漏洞。我们提出两种攻击方式:第一种旨在长时间锁定尽可能多的高流动性通道,第二种旨在将中枢(hubs)与网络的其余部分隔离。
在本文中,我们介绍了这些针对闪电网络的攻击的评估。我们将检查闪电网络的三个主要实现对网络的属性和不同参数的设置,并展示闪电开发人员同意的默认参数的最新更改如何使攻击更容易实施。我们的结果表明,通过使用不到0.5个比特币就锁定大部分闪电网络的流动性,这可以破坏闪电网络。
(图片来源网络,侵删)支付通道网络是解决区块链可扩展性问题的第二层链下解决方案。作为比特币二层网络的闪电网络目前拥有超过11.000个节点和35.000个通道,总容量约为880 BTC(约合9.000.000美元)。
我们探索的攻击的基本概念是可以追溯到2015年8月的Lightning-dev列表中的对应内容中提到的,以及2017年5月提到的BOLT中的一个git问题。从未对这种攻击的后果进行全面评估,其成本却非常低:攻击者只需不到0.5个比特币,就可以无限期地锁定网络的大部分通道。
(图片来源网络,侵删)攻击:
为了使通道瘫痪,攻击者使用一套路径的源和目标打开通道,并通过该路径请求许多小额付款,从而耗尽了同时打开的HTLC的数量(闪电网络的每种主要实现方式对并发HTLC的数量都有不同的限制 )。 攻击者既是付款的来源,又是目的地,并且可能严重延迟付款的最终执行时间(最多几天)。 然后,攻击者可以再次重新运行攻击,并锁定同一路径额外的一段时间。
攻击者创建了两条长途路线用于瘫痪通道
我们研究了闪电协议的主要实现。 这是它们用于相关参数的默认值(大多数节点的确使用这些默认值-请参阅本文中的详细信息)。 如今,网络上的大多数节点实际上都是LND节点(约90%)。
默认参数
下图说明了如何沿着路径执行单笔付款(攻击者在每个路径上重复多次,直到没有更多的HTLC可用):
路由建立和HTLC消除的过程
我们评估了在整个闪电网络上大规模运行此操作的后果。
攻击整个网络:
当使用一种贪婪算法以选择路线并使尽可能多的流动性瘫痪时,我们得到以下结果。 下图显示了我们设法瘫痪的闪电网络当前锁定的总容量的一部分(一次连续3天)。
在不同的时间段内可以非常有效地锁定网络:
攻击的总成本很低。 成本由两个主要因素组成:开通通道的成本(不可退款)和提供具有流动性的通道的成本(这笔钱仍由攻击者掌握)。
我们的结果表明,攻击者可以使用少于0.25 BTC的数量使闪电网络中650 BTC的流动性瘫痪3天。
攻击中枢:
为了延长单个节点与网络的连接时间,攻击者将连接到受害节点并使它的相邻通道瘫痪。 为此,它会通过受害人的通道来回路径发出多次付款请求(这在闪电网络实现中令人惊讶地被允许)。
以下是一些重要节点,攻击它们的成本为:
该表中的最后一个条目涉及对属于LNBIG的所有25个节点的隔离攻击,这些节点持有闪电网络中所有流动性的47.3%。
如果要攻击较小的节点,代价通常与它们的级别成正比(但不完全相同):
我们注意到该漏洞相对难以修复,因为它涉及到链下支付网络的三个基本属性:
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.
根据信任级别和循环回避设置最大并发支付数是另外两种可以稍微缓解攻击的方法。
为了确保网络安全,必须进行进一步的工作。 由于攻击依赖于支付通道中的基本机制,因此需要更多考虑。
正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |