主页 > imtoken区块链钱包官网 > BitcoinCore开发者:闪电网络易受时间膨胀攻击,抗蚀攻击或成关键
BitcoinCore开发者:闪电网络易受时间膨胀攻击,抗蚀攻击或成关键
编译:洒脱
写在前面:作为支付通道网络,闪电网络(LN)被普遍认为是比特币最好的可扩展性解决方案。 然而,它仍然面临着许多安全挑战。 在本文中,比特币核心开发作者 Gleb Naumenko 和 Antoine Riard 概述了攻击者可以从诚实的 LN 用户那里窃取资金的三种方法,这涉及对比特币 P2P 层的日食攻击。 对于这些攻击,研究人员认为可以通过WatchTower来解决,但这实际上引入了信任问题,根本的解决办法是采取措施防止日食攻击和反Sybil攻击。
(注:原作者 Gleb Naumenko 是 Chaincode Labs 的研究员,也是比特币核心开发者,目前由 BitMEX 的母公司 HDR 资助,将专注于比特币的 P2P 安全和隐私问题。 )
这是翻译:
时间膨胀攻击目前似乎是通过 Eclipse 攻击窃取闪电网络用户资金的最实用的方法,原因有几个。 该攻击不需要计算能力,也不仅仅针对商家。
这是关于闪电网络时间膨胀攻击的完整论文:
简介 为什么它很重要? 这只是一个理论问题吗? 受害者看不到区块的停滞吗? 攻击嘛,怎么解决呢?总结
(图片来自:pxhere.com)
比特币底层的协议真的很酷,它们在可扩展性、隐私和功能方面提供了巨大的机会,但以新的安全假设为代价。
众所周知,必须监控支付渠道,否则资金可能会被盗。 这听起来有点抽象,所以我们决定调查攻击者需要做什么才能从闪电网络用户那里窃取资金。
更具体地说,我们探讨了对等层攻击如何帮助打破上述假设。 在每次时间膨胀攻击中,攻击者都会控制受害者对比特币网络的访问(这很困难,但并非不可能),并延迟向受害者发送区块。 然后,攻击者利用受害者无法及时访问最近的区块。 在某些情况下,只需将受害者隔离两个小时就足够了。
然后攻击者在闪电网络上的受害者通道上执行两个(完全合规的)操作,同时提交不同的状态。 由于受害者落后于最新的区块链警报,他们无法检测到这一点并按照协议的要求做出反应。 我们展示了攻击者可以从受害者那里窃取资金的三种不同方式,并讨论了这些攻击的可行性/成本。 我们还探索了广泛的反制措施,可以显着增加攻击成本。
简而言之,我们的研究结果是:
许多闪电网络用户(特别是那些使用比特币轻客户端的用户)目前容易受到 Eclipse 攻击。 运行 Bitcoin Core 全节点的闪电网络用户对 Eclipse 攻击更加稳健,但正如最近的研究表明,这些攻击仍然是可能的。 Eclipse 攻击可以利用时间膨胀来窃取 LN 用户的资金。 仅观察缓慢的块到达并不能减轻时间膨胀攻击,因此对于第 3 点没有简单的解决方案。因此,时间膨胀是从蒙面用户那里窃取资金的实用方法。 这种方式既不需要算力,也不仅仅针对商家。 其中,轻(SPV)客户端用户是很好的目标,因为他们容易受到攻击,而全节点用户也是很好的目标,因为他们经常被主要的枢纽(或服务提供商)用来窃取他们的总流动性,这意味着即使是高攻击成本可能是合理的。 强大的防蚀攻击措施是关键解决方案,瞭望塔方案也很酷。
为什么这很重要?
首先,时间膨胀攻击目前对许多闪电网络客户端都是可行的。 同时,这些问题是根本性的,不会消失。 我们将在下一节中进一步讨论这个问题。
然而,这项研究工作不应被视为对闪电网络的批评。 相反,我们的目标是让闪电网络的安全模型更加清晰。 从广义上讲,了解这些问题并提出缓解措施将有助于使平台更加成熟。 当闪电网络获得更广泛的关注时,成千上万的参与者将不得不考虑这些攻击以确保他们的堆栈安全。
我们希望我们的研究工作能够:
为比特币和闪电网络协议开发者提供相关的协议改进和对策。 让闪电网络集成商(如闪电网络服务提供商)做正确的事(部署对策和使用最佳实践)。 使闪电网络用户能够就他们使用的软件做出明智的决定。 确保比特币之上的其他协议是安全的。 让大家更加关注闪电网络堆栈中不太核心的部分(比如轻客户端)的安全问题。
这只是一个理论问题吗?
攻击者不必控制关键基础设施(例如受害者的 ISP),也不必租用任何计算能力。 攻击者可以同时从多个渠道(甚至属于不同的受害者)进行窃取,以证明攻击成本是合理的。 最后,受害者不一定是商人。
为了使用时间膨胀窃取资金,攻击者应该打开与受害者的通道并禁用(隔离)受害者的比特币客户端。 前者通常是可能的:LN 节点通常默认接受打开通道的请求。
后者,即 Eclipse 攻击,通常被认为非常困难。
“攻击者可以在没有物理访问节点的情况下执行 Eclipse 攻击。” - 塞尔吉·德尔加多
根据最新研究,如果攻击者可以访问关键的互联网基础设施,它们只是攻击比特币核心全节点的实用工具。 仅仅攻击比特币软件,例如 AddrMan 中毒,被认为是不够的。
然而,如果攻击者窃取了受害者的所有可用资金(甚至一次攻击多个受害者),从而获得高额利润,那么高昂的攻击成本是合理的(这是闪电网络集线器或 的合理假设)服务提供商,他们通常运行一个完整的节点)。
不幸的是,对于轻型 (SPV) 客户端,对它们发起 Eclipse 攻击一点也不难。 很少有比特币节点可以为轻客户端提供服务,而且轻客户端的抗女巫攻击能力也很差(Electrum 也有同样的问题)。
因此,它需要攻击者运行数百个恶意节点/服务器,并为 Eclipse 轻客户端提供不同的 IP。 需要明确的是,整个过程需要一个小时,成本不到 100 美元。
但这是正确的,假设轻客户端从网络连接到一个随机的比特币节点。
如果轻客户端连接到用户自己的比特币节点(通过 Neutrino 或 Electrum),那就太好了。 比特币核心节点仍然可以受到攻击,但问题没有那么严重。
轻客户端也可以连接到可信节点。 例如,一个钱包应用程序可能有一个比特币轻客户端在幕后与钱包开发者的全节点对话。 闪电网络应该是非托管的,所以我们不能假设可以信任钱包提供商节点。 如果您将可信节点与随机节点一起使用,效果会更好,但仍然很难推理。 据我们所知,一些顶级的闪电钱包使用这种模式。
这里的问题是该软件可以正确地实现半信任模型(具有可信和随机对等点),但可信方仍然可以时间扩张受害者的渠道。 例如,钱包开发者可以一次骗取所有用户并消失。
在我们的研究工作中,我们专注于信任最小化场景(根本没有可信节点),这类似于比特币威胁模型,尽管大部分时间膨胀方面独立于受害者的区块来源(我们只假设 eclipse攻击是可能的)。
受害者看不到区块的停滞吗?
这不是检测时间膨胀攻击的可靠方法,因为挖矿是一个随机过程。 例如,比特币网络平均每天有7个区块,间隔超过30分钟,这就是问题难以完全缓解的原因。
Bitcoin Core 目前唯一可用的对策是陈旧提示检测:如果一个节点在过去 30 分钟内没有观察到一个块,它会尝试与网络中的某个人建立新的随机连接。
在本文中,我们认为最佳攻击策略是在向受害者提供新块之前保持 29.5 分钟的窗口。 在这种情况下,只有当其中一个区块自然花费太长时间(至少 30 分钟)时,攻击才会失败。 失败的概率约为 6%。
失败案例意味着受害者可能有机会(但不是保证)逃脱 eclipse 攻击。 请注意,此措施未在 Neutrino 中实施,因此攻击者可以完全停止提供区块并比在 Bitcoin Core 中更早地利用时间膨胀。
这种检测方法需要改进,因为它要么容易出错,要么由于天生的“慢”块而具有很高的误报率。 诚实的用户无法区分“慢”块是否受到攻击,因此他们只能猜测。
这些解决方案也存在问题,因为即使是陈旧的提示检测也有过高的误报率(1 天 7 次)比特币轻客户端,尽管它对时间膨胀不是很有效。
其他基于检测的解决方案并不那么简单。 例如,查看区块头中的时间戳很棘手比特币轻客户端,应用的确切分析也不清楚。
假设检测成功,受害人会做什么? 这种反应归结为防蚀措施,应该首先实施,没有任何触发因素。 这就是为什么我们强调抵抗日食攻击,这是解决时间膨胀攻击的关键。
攻击
下面说一下具体的攻击方法。
首先,攻击者应该让诚实网络受害者的比特币客户端处于隐藏状态。 然后攻击者必须找到受害者的闪电节点并打开与受害者的通道。 攻击者也可以从开放通道开始,找到并使受害者的比特币客户端黯然失色,这并不重要。
在此之后,攻击者必须执行时间膨胀攻击:他们开始以较慢的速度向受害者传递块,直到受害者落后实际提示 N 个块,其中 N 由特定配置定义(通常为数小时到几天) ).
对于 Bitcoin Core,由于其实施了“陈旧提示检测”规则,时间膨胀率受到每个区块延迟 20 分钟的限制。 然而,使用 Neutrino,攻击者可以简单地停止向受害者提供区块。 这就是为什么在下面的描述中,攻击比特币核心需要更长的时间。
在我们的描述中,估计的攻击时间是基于论文中提出的最优时间膨胀策略。 就数量而言,根据当前的实施,所有这三种攻击都可能导致闪电网络通道的整个容量被盗。
我们现在描述三种从时间膨胀的闪电网络节点的支付通道窃取资金的方法。
1. 通道状态终止攻击,类似于常规的比特币双花:攻击者假装他们同意更新通道状态并接收一些东西,然后用不同的值关闭通道。 由于受害者看不到最新提示,因此他们不会发送反向交易。 当前实现的默认安全块增量至少为 144 个块,因此攻击者必须对受害者发起至少 24 小时(如果使用 Bitcoin Core 则为 36 小时)的日食攻击。 2. 每跳包延迟攻击是基于受害者的路由,受害者和攻击者之间至少应该有两条通道。
与第一次攻击类似,当受害者最终收到实际的区块链提示时,就来不及反应了。 默认情况下每次攻击大约 14-144 个区块,具体取决于实施方式,因此攻击者必须跟踪受害者 2-24 小时(如果受害者使用 Bitcoin Core,则为 4-36 小时)。
3.封包终结攻击是最有创意也是最可行的攻击方式! 当受害者向攻击者发送传入 HTLC 的原像时,攻击者不会回复受害者。
在这种情况下,相关的安全策略是7-11块,因此攻击者只需要对受害者发起最多2小时的eclipse攻击(如果使用Bitcoin Core则为3小时)。
那么,如何解决这个问题呢?
首先,WatchTowers 很有用(就像中本聪之眼),它们应该为你监视通道,如果有人攻击,WatchTower 会采取行动。
但从协议的角度来看,这是一种欺骗行为:实际上,这是一个更合理的假设。 用户将绑定到 WatchTower 提供商。 一些设计提出负责任的 WatchTowers,但同样,这引入了应该详细探索的新假设。 但毕竟,他们也是可以被攻击的,甚至是被收买的!
我们将了解 WatchTower 在实践中的工作原理,然后让我们考虑不需要新假设的其他解决方案。
大多数“非欺骗”(即免信任)对策都是关于访问比特币网络的冗余方式。 越有创意越好! 就像 Blockstream 卫星,或通过闪电网络中继区块头。 您还可以使用一些冗余基础设施运行您自己的 WatchTower(幸运的是,该软件通常是开源的)。
P2P 层隐私改进也有帮助。 不过,蒲公英可能行不通,而且 Tor 也很棘手。 但其他想法也有希望。 也许在未来我们会看到一些 mixnet(基于 Lightning?)或 SCION 架构。
如果您想知道为什么我们不讨论基于检测的解决方案,请返回上面并在本文中阅读更多内容。 (他们也可能有帮助,但还不够)
综上所述
我们相信闪电网络非常酷,它已经是比特币堆栈的重要组成部分。 它将在未来获得更多关注,因此应该很好地理解安全模型,特别是因为它不同于比特币的安全模型。 时间膨胀就是一个例子:时间膨胀是一种特定于 LN 的攻击,尽管在实践中它需要利用比特币的 P2P 层。
我们的研究工作详细探讨了时间膨胀攻击,并就如何最大限度地减少损害提出了建议。 我们鼓励所有协议开发人员(尤其是那些在轻客户端上工作的开发人员)了解 Sybil 和 Eclipse 防护措施。
希望我们的工作将有助于闪电网络的成熟,并激励系统参与者使用最安全的解决方案。 我们在这里讨论了一些有趣的要点,但您可以在本文中了解更多内容。
开放式问题
探索时间膨胀攻击引发了我们两人之间的一系列讨论,其中一些我们想与设法找到此部分的任何人分享。 这与本文的讨论部分不同,因为它们与时间膨胀攻击的相关性较低。
如果已经讨论或正在谈论这些想法中的任何一个,我们很乐意听到!
我们有兴趣探索支付渠道的流动性/安全性权衡,特别是针对攻击问题。 我们认为,不仅频道容量应该定义 CSV/CLTV 时间锁值,还应该定义用户特定的安全性(例如,是否使用 WatchTower)。 我们也有兴趣探索后单边协议的新机制。 即使 Bob 由于 Alice 的无响应而发起单方面关闭,Bob 也可能会退回到快速合作关闭。 未来,如果闪电网络节点使用“陈旧通知检测”机制强制关闭通道,我们可能会看到一群恶意矿工导致的一系列通道关闭和费用增加。 我们有兴趣看看这对矿工是否有利可图,特别是考虑到减半后的低区块补贴。 今年早些时候,我们在邮件列表中提出了这个问题。 与 eclipse 攻击受害者的比特币节点不同,攻击者可以通过 eclipse 攻击闪电网络节点来控制受害者接收哪个通道的通知。 探索这种方法是否允许攻击者操纵受害者的路由以收取费用或监控受害者的付款将很有趣。
如果您有兴趣探索这些想法中的任何一个,或有类似的想法,请随时与我们联系。