http://www.7klian.com

比特币技能周报丨用度超付进攻与硬件钱包兼容问题

一、用度超付进攻与硬件钱包的兼容问题

2. 双重签名也大概导致耗费两次:进攻取决于利用受损软件,让硬件钱包用户授权两笔在用户看来完全沟通的,但稍有差异的生意业务(每笔生意业务都有两个输入)。然而,同一个受损的软件可以向用户显示两笔完全差异的生意业务(每笔生意业务耗费差异的输入),它们看起来完全沟通,从而导致向同一个吸收者付出两次用度。从用户的角度来看,这两种进攻都是不行区分的,可是针对用度超付进攻的修复要领,并不能办理两次耗费进攻的问题。
1. 这种进攻在3年前就被开拓者们所知道了:Sanders在约莫三年前果真描写了这种进攻,他在开拓者邮件列表、BIP等其它接头中都有谈及,其他人也都提起过这种进攻,但在许多人看来,这种进攻很难举办,而且影响也较小,然后得到对硬件钱包的软件节制器会见权限的进攻者,更大概会执行差异的进攻(譬喻地点替换进攻),该进攻会直接向进攻者付款而不是举办超付用度进攻。
这是Johnson Lau在2018年提出的办理方案,其果真草案已被纳入taproot的BIP341 类型中(请参阅第46期
周报)。假如回收了taproot,那么对付像硬件钱包这样的无状态签名者来说,在不评估以前生意业务的环境下为 taproot UTXO签名应该会更安详。不幸的是,这仍然无法修复两次耗费进攻,这是大大都硬件钱包的无状态设计所存在的一个问题,其阻止了它们在内部跟踪本身的生意业务汗青。
由于硬件钱包不维护UTXO集,因此它们确定利用遗留UTXO生意业务 所付出用度金额的独一靠得住要领,是获取每个遗留UTXO先前生意业务的副本,哈希前一笔生意业务以确保其txid与UTXO引用匹配,并利用此刻已验证的UTXO金额执行用度计较。在最坏的环境下,遗留生意业务险些可以大到1 MB,而且一笔耗费生意业务大概引用数千笔以前的生意业务,因此金额验证大概需要资源受限的硬件钱包处理惩罚千兆字节的数据。
 
感激Pieter Wuille辅佐我们研究关于用度超付进攻的汗青,也感激Antoine Riard提供有关时间膨胀进攻论文的更多信息。假如文章中有任何错误或漏掉,接待指正。
 
假如你的软件或流程答允你利用硬件钱包来耗费断绝见证(segwit)输入,请查抄你的系统是否与钱包的最新固件更新保持
兼容。譬喻,Trezor的最新固件,要求进级与其毗连的软件,以继承处理惩罚断绝见证(segwit)输入;Ledger的最新固件,将在处理惩罚从未更新软件吸收到的断绝见证(segwit)输入时发出告诫;其他的硬件钱包大概会在将来宣布雷同的更新;请与硬件钱包制造商接洽,以获取相关打算的更多信息。有关此变动的原因,请看如下关于“用度超付进攻”的表明:
1. 上周,最新版本的
比特币客户端协议Bitcoin Core 0.20.0正式宣布。此版本最显著的改造包罗:RPC用户的默认bech32地点(GUI在0.19中开始默认为bech32),为差异用户和应用设置RPC权限的本领(请参阅第77期周报),在GUI中生成 PSBT的一些根基支持(#74和#82),以及在输出剧本描写符语言中添加了sortedmulti。为了消除错误、加强安详性并为未来的变动做筹备,开拓者还对代码举办了许多不太明明的改造。而一项备受瞩目标前瞻性变革,是增加了一个asmap设置配置,该配置答允利用单独下载的数据库来提高Bitcoin Core对Erebus进攻的抵挡力。然而,正如宣布声明中所指出的,“今朝这项更新是高度尝试性的,不清楚如何从中取得希望。收集和编译ASN数据很是重要,而且这会带来信任问题。”有关Bitcoin Core 0.20.0版本客户端的更多信息,请拜见宣布说明。
而BIP143 segwit v0 中所做的几个改造之一,是通过让签名commit它们所耗费的UTXO数量来消除这个承担。这意味着,任何理睬金额不正确的签名,都将是无效的,包罗Bitcoin Core和硬件钱包的开拓者都认为,这将答允签名者安详地接管来自不受信任软件的金额。
摘要文章:https://www.8btc.com/article/605757
本文链接:https://www.8btc.com/article/608186

3. 多重签名配置大概需要多重妥协:为了利用多个硬件钱包对多重签名掩护的资金举办进攻,需要满意最小阈值的每个签名者(譬喻2-of-3多签中的2个签名者)都需被拐骗来签署沟通的两个生意业务变体。对付包括在线钱包的环境,该钱包知道其签名UTXO的代价(譬喻,基于计策的长途签名者),只有当该在线钱包也受到进攻时,进攻才起浸染。
2. LND 0.10.1-beta是LND闪电网络软件的一个新的测试版。这一版本软件并没有添加新成果,而是修复了几个裂痕。
除了这些之外,本周Eclair、LND以及BIP也产生了一些显著变革:
1. 引入Eclair #1440之后,可利用API一次更新多个通道。最初旨在通过批量更新通道的中继费,来辅佐节点运营商适应动态的链上收费市场,这一新增成果还可以实现批量封锁和强制封锁。
比特币生意业务付出的用度,是生意业务所耗费的UTXO金额,与其建设的UTXO金额之间的差额。生意业务显式地说明白它们建设的UTXO数量,但它们耗费的UTXO数量,只能通过查察建设这些UTXO的先前生意业务来找到。支出生意业务只理睬txid和它想要耗费的UTXO的位置,这需要其他想要计较用度的软件来查找每个UTXO的先前生意业务,或维护一个已验证UTXO数据的数据库。

二、针对闪电网络的时间膨胀进攻
不幸的是,事实证明签署单个UTXO的金额是不足的。 2017年,Greg Sanders描写了一种进攻,它可以拐骗用户大幅超额付出生意业务用度。首先,进攻者将节制与硬件钱包对接的桌面或移动软件,并期待用户启动付款。受粉碎的软件会建设所请求生意业务的两种变体,每个变体都要耗费沟通的两个断绝见证UTXO,这些UTXO受用户毗连的硬件钱包节制。在第一笔生意业务中,受损的软件低估了个中一个UTXO的耗费。这将导致硬件钱包以沟通的低估金额低估生意业务用度。在第二笔生意业务中,受损的软件低估了第二个UTXO的数量,,这将导致硬件钱包也低估了第二笔生意业务的用度。

最坏的环境下,进攻提示用户对节制n个UTXO的钱包举办n次签名,并导致将钱包的所有资金用于付出除正当付出金额以外的用度。
Gleb Naumenko和Antoine Riard在比特币开拓者邮件列表中宣布了他们撰写的论文的摘要,其描写了如何通过日蚀进攻从闪电网络通道中窃取资金。这篇研究论文扩展了Riard在第77期周报中所描写的阐明。简而言之,进攻者可以节制LN节点与比特币P2P网络的所有毗连,并延迟向受害者转发新区块的通知。在受害者对区块链的观点,远远落伍于公家的共鸣观点之后,进攻者会在过期的状态下封锁与受害者的通道,日蚀进攻用于防备受害者看到封锁的生意业务,直到争议期竣事,而进攻者则将其犯科收益提取到完全由其节制的地点。
与Sander在2017年所描写的其它进攻雷同,此进攻仅影响无状态签名者(譬喻硬件钱包),这些签名者依赖于外部系统来奉告他们所节制的UTXO。而跟踪吸收到的UTXO数量的网络钱包,不会签署不正确的UTXO数量,因此不会受到此类进攻的影响。虽然,网络钱包也容易受到其他范例的进攻,这也是硬件钱包可为用户加强资产安详性的原因。
论文地点:https://arxiv.org/abs/2006.01418
受损的软件将第一笔生意业务发送到硬件钱包。用户查抄金额、吸收者地点以及计较过的生意业务用度。用户授权签名,签名的生意业务返回到受损的软件。第一笔生意业务在BIP143下无效,因为它的一个签名提交了不正确的UTXO量。受损的软件随后声称,有一个小问题阻止了生意业务的广播,并奉告用户他们需要从头签署生意业务,但软件不会从头发送第一笔生意业务,而是发送第二笔生意业务。按照硬件钱包显示的信息(金额、吸收者和用度),这第二笔生意业务也是BIP143无效的,因为它的一个签名提交了错误的金额。然而,这两笔生意业务中的每一笔,也都有一个有效的签名,受损软件可以或许利用这两个有效的签名合成一笔有效的生意业务,从而超额付出其用度。
2. Eclair #1141增加了对option_static_remotekey通道的支持。在LN节点丢失数据的环境下,此成果答允通道生意业务方将当前余额付出给初始通道打开期间商定的未弱化密钥,从而封锁通道,并答允节点的钱包正常支出其资金。有关此成果的更多具体信息,请拜见第67期周报。
办理这种进攻问题的一个恒久办理方案,是变动生意业务摘要,以便每个签名提交该生意业务中利用的所有UTXO的值。假如受损软件谎报关于任何 UTXO的数额,这将使签名无效。
4. BIP#920更新了taproot的BIP341类型,要求签名直接提交所有耗费UTXO的scriptPubKeys。这使得硬件钱包更容易且安详地参加coinjoin和其他协作生成的生意业务。有关具体信息,请拜见第97期周报。
三、比特币软件基本设施更新
上周,Trezor 公布 Saleem Rashid在三个月前从头发明白这个裂痕,作为回应,Trezor已更新了固件,但粉碎了直接或通过HWI与Trezor设备毗连的多个钱包的兼容性(请参阅HWI#340)。假如钱包有以前生意业务的完整副本或可以或许得到这些副本,规复兼容性应该只是更新钱包代码的问题。而在其他环境下,钱包大概无法存储以前付出钱包的生意业务的完整副本,这大概需要从头设计钱包以存储该数据,而且需要从头扫描已往的钱包生意业务的。建设或更新部门签名比特币生意业务(PSBT)软件需要进级,以便将以前生意业务的完整副本包括到PSBT中。对付PSBT存储在巨细受限制前言的环境(譬喻二维码),数据巨细增加的问题,大概需要放弃该协议,或切换到容量更大的前言。
这篇文章所描写的进攻方法,可以在两小时内从轻(SPV)LN客户端窃取用户的资金。由于当前只有很少的处事器和节点可以向轻量级(SPV)LN客户端提供数据,因此,进攻者大概很容易执行进攻。而对付全节点支持的LN节点而言,进攻需要耗费更长的时间(几个小时即可),而且大概需要建设更多的sybil。作者指出,这些进攻还大概合用于其他对时间敏感的合约协议。而办理该问题的通用型要领,是提高主链对日蚀进攻的抵挡本领,个中一个详细的改造是答允节点选择利用其他传输协议。
Ledger也做了雷同的修改,但他们在文章中提到,他们仅在没有完整拷贝先前生意业务的环境下利用断绝见证UTXO时,才会显示告诫。尽量要求以前的生意业务,可以最大限度地提高安详性以抵制该进攻,但也存在来由答允硬件钱包有选择地继承利用断绝见证(segwit)签名UTXO值,而不是粉碎现有的软件并在传统范例的值验证上耗费特另外资源。
 
3. LND#4251使其REST接口支持的非流式动静列表与gRPC接口的列表相等。以前,只有这些动静的一个子集可通过REST接口利用。该PR之后是LND#4141,它通过添加对WebSockets流响应的支持,使REST接口与gRPC接口完全对等。
 
出格感激:

写在前面:本周的技能周报,主要存眷的是影响硬件钱包的用度超付进攻(Fee overpayment attack)问题,而Trezor、Ledger等硬件钱包因此进级固件后而激发兼容性问题,对付这些问题,开拓者们已将办理方案纳入到taproot的BIP341 类型中,但对付硬件钱包面对的两次耗费进攻(spending twice attack)问题,今朝依旧没有好的办理步伐。另外,关于闪电网络通道的安详性,上周开拓者还提出了通过日蚀进攻的要领来窃取通道资金,针对这一问题,研究者认为根天性的办理方案是提高主链对日蚀进攻的抵挡本领。而在最后,我们还会存眷上周傍边产生的比特币软件基本设施的一些重大更新。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读