比特币技术周报丨闪电网络面临三大安全隐患,BTC的layer 2扩展有点难

写在前面:本周的比特币技术周报,主要涉及到三种关于闪电网络的攻击方式及相应的缓解措施,不难发现,关于闪电网络安全隐患的研究已越来越多,一方面,这代表着学术界对闪电网络的重视,另一方面,也意味着LN距离大规模应用还有较远的距离。而接下来,则是一些常规的周报内容,包括来自Bitcoin StackExchange的精选问答,以及比特币软件基础设施的最新进展。

比特币技术周报丨闪电网络面临三大安全隐患,BTC的layer 2扩展有点难

注:以下内容主要来自Bitcoin Optech

 

一、闪电网络协议安全研究 & CoinSwap碰撞攻击风险

 

安全研究1 :关于闪电网络费用赎金攻击的解决方案

René Pickhardt在闪电网络开发者邮件列表中公开披露了一个程序缺陷,其在大约一年前曾私下向闪电网络维护人员披露过该问题。据悉,在当前的闪电网络协议中,每次更新通道状态时,发起通道的一方必须承诺支付单边关闭交易的任何链上交易费用。而支付费用的一方,也可以选择使用的费率,但对方的安全性也取决于费率是否合适。这意味着,如果对方认为当前市场条件下所选的费率太低了,他们可以随时关闭通道。为了避免这种不必要的交易,BOLT2给出了一个例子,说明付费方选择的费用是最低合理估计值的5倍,即使对方使用的是不同的费用估计算法,该估计值也足以让对方满意。

BOLT2还允许通道同时路由多达483笔支付交易,每笔支付需要一个43 vbyte的 P2WSH 输出,总共需要大约20,000 vbytes的数据需要相对较快地添加到链中,这意味着它可能需要支付较高的费用。如果这一费率是严格要求的5倍,则很容易导致支付超过100美元的交易费。 此外,如果确认了承诺交易,则需要结算HTLC(再次使用可能需要支付高额费用的交易)。如果受害者是向外发送这些付款的一方,他们将需要支付额外的交易费来收回每笔付款,这可能会使攻击对他们造成两到三倍的代价。

当然,由于费用是付给矿工的,所以攻击者没有直接的动机来执行这种攻击,但是,如果攻击者有手段迅速联系受害者,他们就有可能提出赎金要求,从而使其获利。

Pickhardt在他帖子中总结了解决该问题的几种想法,但他发现,没有一个方式能够让他完全满意。最初在Eclair中实施,后来在C-Lightning中实施的缓解措施,是针对LN节点来限制待付款的数量,使得交易量变小,总费用变低。开发中的另一个缓解措施是锚输出(anchor output),它允许在通道关闭时选择费率,从而消除了高估费用的必要性,以防止过早关闭通道。文中还提到了一些想法,而Pickhardt希望读者能够思考这一问题,并提出任何其他可能的解决方案。

原文链接:https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002735.html

安全研究2:关于闪电网络原子性攻击的讨论

Bastien Teinturier在闪电网络开发者邮件列表中发布了一个帖子链接,其详细描述了闪电网络承诺协议,它的弱点以及解决解决这些弱点的建议。这篇文章详细探讨了针对闪电网络的原子性攻击以及一些建议的缓解措施。

作者对先前提出的若干解决方案进行了重新评估,包括对“替代锚提案”(alternative anchor proposal)有效性的关注,以及使用付费签名( pay-for-signature)无脚本脚本以无需信任的方式,向第三方完成适配器签名所需的最终签名的建议程序。

原文链接:https://gist.github.com/t-bast/22320336e0816ca5578fdca4ad824d12

安全研究3:针对闪电网络的系统性攻击

来自希伯来大学的研究者Jona Harris和Aviv Zohar在其最新发布的论文中,评估了一种针对闪电网络的系统性攻击,它允许攻击者窃取锁定在支付通道中的资金。

在这种攻击中,攻击者可迫使很多受害者同时向区块链认领自己的资金,然后攻击者就可以利用这种拥堵情况来盗取在截止日期前未被认领的任何资金。

据悉,这种攻击利用了一种用于跨多个闪电网络通道的机制(HTLC),研究者发现,通过利用HTLC涉及到的时间限制,会容易导致无辜的闪电网络节点对区块链发起flood冲击,从而可以窃取到资金。

比特币技术周报丨闪电网络面临三大安全隐患,比特币的layer 2扩展有点难

 

为了证明这种攻击的可行性,研究者在测试网上进行了模拟,并得出攻击85个通道就可以保证攻击成功。

对此,研究者还提出了以下几种缓解方法:

  1. 减少未解决HTLC的最大数量;
  2. 提前关闭通道;
  3. HTLC认领交易的即时发布;
  4. 基于信誉(Reputation-Based)的行为;

研究者还提醒称,这些缓解措施虽然可降低攻击的风险,但要完全消除风险,需要对HTLC机制进行重大修改。

有关更详细的内容,请参见完整论文:https://arxiv.org/pdf/2006.08513.pdf
或 《闪电网络最新漏洞分析:仅需攻击85个节点便可窃取闪电节点通道资金》一文。

 

安全研究4:关于两方ECDSA碰撞攻击风险的提醒

密码学家Jonas Nick回复了比特币开发邮件列表中关于拟议的CoinSwap实现的帖子,其提醒开发者称,P2PKH、P2WPKH以及使用160位RIPEMD160哈希的P2SH地址易受碰撞攻击,当多方协作使用原始协议创建地址时,碰撞攻击会将其安全性降低到80位(请参阅我们在传统P2SH地址中对此弱点的描述)。尽管这以前只是P2SH多重签名用户关心的问题,但它适用于相关环境,例如CoinSwap,其中,提议的两个用户可共享一个P2PKH或P2WPKH地址。

当然,理论上还是可以避免这个问题的,但它要求双方的ECDSA协议被设计成包含一个额外的commitment过程,Nick注意到一些双方ECDSA协议和实现已经在这样做了。

原贴链接:https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-June/017986.html

 

二、Bitcoin StackExchange精选比特币问答

 

Bitcoin StackExchange是Optech贡献者寻找有关比特币技术问题与答案的渠道之一,在这期周报中,我们将介绍3个精选问题与答案:

问题1: 为什么选一个复杂的公式来计算“nBits”中的难度目标?

Ravi Patel提问为什么没有选择一个简单的公式来计算nBits的难度目标。

对此,Andrew Chow深入探讨了一些关于该公式,它的历史,甚至是比特币0.1.5版客户端示例代码的细节。

原帖链接:https://bitcoin.stackexchange.com/a/96298

问题2: 比特币真的需要时间戳吗?

Pieter Wuille解释了为什么在不参考区块链外部时钟时间的情况下,限制区块速率会使运行全节点的成本更高,同时也难以降低问题区块率,并防止共谋攻击。

原帖链接:https://bitcoin.stackexchange.com/a/96185

问题3: 在费用超付攻击中,受损桌面软件为什么不能提供与假输入对应的假先前交易?

关于具有多个输入的隔离见证(segwit)交易的费用多付攻击,justinmoon提出了疑问,为什么攻击的补救措施(需要输入以前交易的副本)不易受到恶意软件提供的虚假先前交易的攻击。其回答称,由于提供的任何先前交易,必须具有与支出输入的先前交易哈希匹配的哈希,因此这种攻击是不可行的。

原帖链接:https://bitcoin.stackexchange.com/a/96309

 

比特币软件基础设施更新

 

  1. LND 0.10.2-beta.rc2 这一LND 候选版本客户端现在进入了测试阶段。
  2. Bitcoin Core #19260:如果本地节点不接受bloom过滤器(如使用BIP111 NODE_BLOOM 服务标志进行广播),则会断开发送BIP37 filterclear 消息的对等方。先前曾有人提出,以IBD为开始的节点可注册为非中继对等节点,以避免在它们仍下载大量区块时接收最近的交易。当它们完成同步后,就可以通过发送filterclear消息转换到接收中继交易。然而,最近有人提议可以用BIP133 feefilter消息来代替。这样就不需要非bloom节点来支持filterclear消息,因此这个PR删除了该特性。
  3. Bitcoin Core#19133添加了一个bitcoin-cli -generate参数,以取代在0.19.0.1版本Bitcoin Core软件中删除的generate RPC功能。据悉,新的实现避免了钱包和其他组件之间不必要的依赖关系。
  4. Bitcoin Core#18027在GUI的“文件”菜单中添加了两个选项,以处理部分签名比特币交易(PSBT):(1)从文件加载PSBT,(2)从剪贴板加载PSBT。比特币技术周报丨闪电网络面临三大安全隐患,比特币的layer 2扩展有点难
  5. Bitcoin Core #16377更新了 walletcreatefundedpsbtfundrawtransaction这两个RPC。这些RPC通常使用钱包去自动选择要在未签名交易中花费的UTXO,但它们也允许用户指定要在该交易中花费的一个或多个UTXO。以前,如果用户选择的UTXO不足以支付交易的所有输出,钱包会自动选择更多的UTXO来进行花费。但是,如果用户手动选择UTXO,那么他们可能有一些不想花费额外UTXO的原因,因此如果用户手动选择任何UTXO,则RPC现在会默认失败。可以使用新的add_inputs参数覆盖这两个RPC。
  6. Eclair#1461添加了几个转发到Bitcoin Core RPC的API端点,用于转发该程序的钱包余额和其他信息。它的目标是使Eclair与Ride The Lightning节点管理仪表板更容易集成。
  7. Bitcoin Core#19071添加了说明开发人员如何为新的实验性Bitcoin Core GUI存储库做出贡献的文档。与GUI相关的Pull请求,应被发送到这个新的存储库中,它将使用Linux内核项目使用的monotree开发模型与主存储库双向同步。对于用户来说,这次分离并没有呈现出可见的变化,用户仍可以在Bitcoin Core的官方版本中收到GUI,或者在使用主存储库源代码的 --with-gui 进行构建时收到GUI。
    5

 

本文链接:https://www.8btc.com/article/615388
转载请注明文章出处

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2020年6月29日 下午8:01
下一篇 2020年6月29日 下午9:01

相关推荐

比特币技术周报丨闪电网络面临三大安全隐患,BTC的layer 2扩展有点难

星期一 2020-06-29 20:08:49

写在前面:本周的比特币技术周报,主要涉及到三种关于闪电网络的攻击方式及相应的缓解措施,不难发现,关于闪电网络安全隐患的研究已越来越多,一方面,这代表着学术界对闪电网络的重视,另一方面,也意味着LN距离大规模应用还有较远的距离。而接下来,则是一些常规的周报内容,包括来自Bitcoin StackExchange的精选问答,以及比特币软件基础设施的最新进展。

比特币技术周报丨闪电网络面临三大安全隐患,BTC的layer 2扩展有点难

注:以下内容主要来自Bitcoin Optech

 

一、闪电网络协议安全研究 & CoinSwap碰撞攻击风险

 

安全研究1 :关于闪电网络费用赎金攻击的解决方案

René Pickhardt在闪电网络开发者邮件列表中公开披露了一个程序缺陷,其在大约一年前曾私下向闪电网络维护人员披露过该问题。据悉,在当前的闪电网络协议中,每次更新通道状态时,发起通道的一方必须承诺支付单边关闭交易的任何链上交易费用。而支付费用的一方,也可以选择使用的费率,但对方的安全性也取决于费率是否合适。这意味着,如果对方认为当前市场条件下所选的费率太低了,他们可以随时关闭通道。为了避免这种不必要的交易,BOLT2给出了一个例子,说明付费方选择的费用是最低合理估计值的5倍,即使对方使用的是不同的费用估计算法,该估计值也足以让对方满意。

BOLT2还允许通道同时路由多达483笔支付交易,每笔支付需要一个43 vbyte的 P2WSH 输出,总共需要大约20,000 vbytes的数据需要相对较快地添加到链中,这意味着它可能需要支付较高的费用。如果这一费率是严格要求的5倍,则很容易导致支付超过100美元的交易费。 此外,如果确认了承诺交易,则需要结算HTLC(再次使用可能需要支付高额费用的交易)。如果受害者是向外发送这些付款的一方,他们将需要支付额外的交易费来收回每笔付款,这可能会使攻击对他们造成两到三倍的代价。

当然,由于费用是付给矿工的,所以攻击者没有直接的动机来执行这种攻击,但是,如果攻击者有手段迅速联系受害者,他们就有可能提出赎金要求,从而使其获利。

Pickhardt在他帖子中总结了解决该问题的几种想法,但他发现,没有一个方式能够让他完全满意。最初在Eclair中实施,后来在C-Lightning中实施的缓解措施,是针对LN节点来限制待付款的数量,使得交易量变小,总费用变低。开发中的另一个缓解措施是锚输出(anchor output),它允许在通道关闭时选择费率,从而消除了高估费用的必要性,以防止过早关闭通道。文中还提到了一些想法,而Pickhardt希望读者能够思考这一问题,并提出任何其他可能的解决方案。

原文链接:https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002735.html

安全研究2:关于闪电网络原子性攻击的讨论

Bastien Teinturier在闪电网络开发者邮件列表中发布了一个帖子链接,其详细描述了闪电网络承诺协议,它的弱点以及解决解决这些弱点的建议。这篇文章详细探讨了针对闪电网络的原子性攻击以及一些建议的缓解措施。

作者对先前提出的若干解决方案进行了重新评估,包括对“替代锚提案”(alternative anchor proposal)有效性的关注,以及使用付费签名( pay-for-signature)无脚本脚本以无需信任的方式,向第三方完成适配器签名所需的最终签名的建议程序。

原文链接:https://gist.github.com/t-bast/22320336e0816ca5578fdca4ad824d12

安全研究3:针对闪电网络的系统性攻击

来自希伯来大学的研究者Jona Harris和Aviv Zohar在其最新发布的论文中,评估了一种针对闪电网络的系统性攻击,它允许攻击者窃取锁定在支付通道中的资金。

在这种攻击中,攻击者可迫使很多受害者同时向区块链认领自己的资金,然后攻击者就可以利用这种拥堵情况来盗取在截止日期前未被认领的任何资金。

据悉,这种攻击利用了一种用于跨多个闪电网络通道的机制(HTLC),研究者发现,通过利用HTLC涉及到的时间限制,会容易导致无辜的闪电网络节点对区块链发起flood冲击,从而可以窃取到资金。

比特币技术周报丨闪电网络面临三大安全隐患,比特币的layer 2扩展有点难

 

为了证明这种攻击的可行性,研究者在测试网上进行了模拟,并得出攻击85个通道就可以保证攻击成功。

对此,研究者还提出了以下几种缓解方法:

  1. 减少未解决HTLC的最大数量;
  2. 提前关闭通道;
  3. HTLC认领交易的即时发布;
  4. 基于信誉(Reputation-Based)的行为;

研究者还提醒称,这些缓解措施虽然可降低攻击的风险,但要完全消除风险,需要对HTLC机制进行重大修改。

有关更详细的内容,请参见完整论文:https://arxiv.org/pdf/2006.08513.pdf
或 《闪电网络最新漏洞分析:仅需攻击85个节点便可窃取闪电节点通道资金》一文。

 

安全研究4:关于两方ECDSA碰撞攻击风险的提醒

密码学家Jonas Nick回复了比特币开发邮件列表中关于拟议的CoinSwap实现的帖子,其提醒开发者称,P2PKH、P2WPKH以及使用160位RIPEMD160哈希的P2SH地址易受碰撞攻击,当多方协作使用原始协议创建地址时,碰撞攻击会将其安全性降低到80位(请参阅我们在传统P2SH地址中对此弱点的描述)。尽管这以前只是P2SH多重签名用户关心的问题,但它适用于相关环境,例如CoinSwap,其中,提议的两个用户可共享一个P2PKH或P2WPKH地址。

当然,理论上还是可以避免这个问题的,但它要求双方的ECDSA协议被设计成包含一个额外的commitment过程,Nick注意到一些双方ECDSA协议和实现已经在这样做了。

原贴链接:https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-June/017986.html

 

二、Bitcoin StackExchange精选比特币问答

 

Bitcoin StackExchange是Optech贡献者寻找有关比特币技术问题与答案的渠道之一,在这期周报中,我们将介绍3个精选问题与答案:

问题1: 为什么选一个复杂的公式来计算“nBits”中的难度目标?

Ravi Patel提问为什么没有选择一个简单的公式来计算nBits的难度目标。

对此,Andrew Chow深入探讨了一些关于该公式,它的历史,甚至是比特币0.1.5版客户端示例代码的细节。

原帖链接:https://bitcoin.stackexchange.com/a/96298

问题2: 比特币真的需要时间戳吗?

Pieter Wuille解释了为什么在不参考区块链外部时钟时间的情况下,限制区块速率会使运行全节点的成本更高,同时也难以降低问题区块率,并防止共谋攻击。

原帖链接:https://bitcoin.stackexchange.com/a/96185

问题3: 在费用超付攻击中,受损桌面软件为什么不能提供与假输入对应的假先前交易?

关于具有多个输入的隔离见证(segwit)交易的费用多付攻击,justinmoon提出了疑问,为什么攻击的补救措施(需要输入以前交易的副本)不易受到恶意软件提供的虚假先前交易的攻击。其回答称,由于提供的任何先前交易,必须具有与支出输入的先前交易哈希匹配的哈希,因此这种攻击是不可行的。

原帖链接:https://bitcoin.stackexchange.com/a/96309

 

比特币软件基础设施更新

 

  1. LND 0.10.2-beta.rc2 这一LND 候选版本客户端现在进入了测试阶段。
  2. Bitcoin Core #19260:如果本地节点不接受bloom过滤器(如使用BIP111 NODE_BLOOM 服务标志进行广播),则会断开发送BIP37 filterclear 消息的对等方。先前曾有人提出,以IBD为开始的节点可注册为非中继对等节点,以避免在它们仍下载大量区块时接收最近的交易。当它们完成同步后,就可以通过发送filterclear消息转换到接收中继交易。然而,最近有人提议可以用BIP133 feefilter消息来代替。这样就不需要非bloom节点来支持filterclear消息,因此这个PR删除了该特性。
  3. Bitcoin Core#19133添加了一个bitcoin-cli -generate参数,以取代在0.19.0.1版本Bitcoin Core软件中删除的generate RPC功能。据悉,新的实现避免了钱包和其他组件之间不必要的依赖关系。
  4. Bitcoin Core#18027在GUI的“文件”菜单中添加了两个选项,以处理部分签名比特币交易(PSBT):(1)从文件加载PSBT,(2)从剪贴板加载PSBT。比特币技术周报丨闪电网络面临三大安全隐患,比特币的layer 2扩展有点难
  5. Bitcoin Core #16377更新了 walletcreatefundedpsbtfundrawtransaction这两个RPC。这些RPC通常使用钱包去自动选择要在未签名交易中花费的UTXO,但它们也允许用户指定要在该交易中花费的一个或多个UTXO。以前,如果用户选择的UTXO不足以支付交易的所有输出,钱包会自动选择更多的UTXO来进行花费。但是,如果用户手动选择UTXO,那么他们可能有一些不想花费额外UTXO的原因,因此如果用户手动选择任何UTXO,则RPC现在会默认失败。可以使用新的add_inputs参数覆盖这两个RPC。
  6. Eclair#1461添加了几个转发到Bitcoin Core RPC的API端点,用于转发该程序的钱包余额和其他信息。它的目标是使Eclair与Ride The Lightning节点管理仪表板更容易集成。
  7. Bitcoin Core#19071添加了说明开发人员如何为新的实验性Bitcoin Core GUI存储库做出贡献的文档。与GUI相关的Pull请求,应被发送到这个新的存储库中,它将使用Linux内核项目使用的monotree开发模型与主存储库双向同步。对于用户来说,这次分离并没有呈现出可见的变化,用户仍可以在Bitcoin Core的官方版本中收到GUI,或者在使用主存储库源代码的 --with-gui 进行构建时收到GUI。
    5

 

本文链接:https://www.8btc.com/article/615388
转载请注明文章出处