写在前面:本周的比特币技术周报,主要关注的是影响硬件钱包的费用超付攻击(
Feeoverpaymentattack)问题,而Trezor、Ledger等硬件钱包因此升级固件后而引发兼容性问题,对于这些问题,开发者们提出了一些解决方案,但对于硬件钱包面临的两次花费攻击问题,目前依旧没有好的解决办法。此外,关于闪电网络通道的安全性,上周开发者还提出了通过日蚀攻击的方法来窃取通道资金,针对这一问题,研究者认为根本性的解决方案是提高主链对日蚀攻击的抵抗能力。而在最后,我们还会关注上周当中发生的比特币软件基础设施的一些重大更新。
(图片来自:tuchong.com)
一、费用超付攻击与硬件钱包的兼容问题
如果你的软件或流程允许你使用硬件钱包来花费隔离见证输入,请检查你的系统是否与钱包的最新固件更新保持兼容。例如,Trezor的最新固件,要求升级与其连接的软件,以继续处理隔离见证输入;Ledger的最新固件,将在处理从未更新软件接收到的隔离见证输入时发出警告;其他的硬件钱包可能会在未来发布类似的更新;请与硬件钱包制造商联系,以获取相关计划的更多信息。有关此更改的原因,请看如下关于“费用超付攻击”的解释:
比特币全网未确认交易数量为15786笔:金色财经报道,BTC.com数据显示,目前比特币全网未确认交易数量为25320笔,全网算力为348.39 EH/s,24小时交易速率为3.52交易/s,目前全网难度为47.89 T,预测下次难度下调0.11%至47.94 T,距离调整还剩10天13小时。[2023/4/10 13:53:44]
比特币交易支付的费用,是交易所花费的UTXO金额,与其创建的UTXO金额之间的差额。交易显式地说明了它们创建的UTXO数量,但它们花费的UTXO数量,只能通过查看创建这些UTXO的先前交易来找到。支出交易只承诺txid和它想要花费的UTXO的位置,这需要其他想要计算费用的软件来查找每个UTXO的先前交易,或维护一个已验证UTXO数据的数据库。
由于硬件钱包不维护UTXO集,因此它们确定使用遗留UTXO交易所支付费用金额的唯一可靠方法,是获取每个遗留UTXO先前交易的副本,哈希前一笔交易以确保其txid与UTXO引用匹配,并使用现在已验证的UTXO金额执行费用计算。在最坏的情况下,遗留交易几乎可以大到1MB,并且一笔花费交易可能引用数千笔以前的交易,因此金额验证可能需要资源受限的硬件钱包处理千兆字节的数据。
而BIP143segwitv0中所做的几个改进之一,是通过让签名commit它们所花费的UTXO数量来消除这个负担。这意味着,任何承诺金额不正确的签名,都将是无效的,包括BitcoinCore和硬件钱包的开发者都认为,这将允许签名者安全地接受来自不受信任软件的金额。
美国一男子使用比特币雇佣杀手:6月17日消息,美国一男子使用价值13,000美元的比特币雇佣杀手谋杀拒绝其性骚扰的女子。目前该男子已经认罪,并将于9月12日被判刑,可能面临最高10年的刑期。(Protos)[2022/6/17 4:35:26]
不幸的是,事实证明签署单个UTXO的金额是不够的。2017年,GregSanders描述了一种攻击,它可以诱用户大幅超额支付交易费用。首先,攻击者将控制与硬件钱包对接的桌面或移动软件,并等待用户启动付款。受破坏的软件会创建所请求交易的两种变体,每个变体都要花费相同的两个隔离见证UTXO,这些UTXO受用户连接的硬件钱包控制。在第一笔交易中,受损的软件低估了其中一个UTXO的花费。这将导致硬件钱包以相同的低估金额低估交易费用。在第二笔交易中,受损的软件低估了第二个UTXO的数量,这将导致硬件钱包也低估了第二笔交易的费用。
受损的软件将第一笔交易发送到硬件钱包。用户检查金额、接收者地址以及计算过的交易费用。用户授权签名,签名的交易返回到受损的软件。第一笔交易在BIP143下无效,因为它的一个签名提交了不正确的UTXO量。受损的软件随后声称,有一个小问题阻止了交易的广播,并告知用户他们需要重新签署交易,但软件不会重新发送第一笔交易,而是发送第二笔交易。根据硬件钱包显示的信息,这第二笔交易也是BIP143无效的,因为它的一个签名提交了错误的金额。然而,这两笔交易中的每一笔,也都有一个有效的签名,受损软件能够使用这两个有效的签名合成一笔有效的交易,从而超额支付其费用。
比特币全网未确认交易81,335笔:金色财经报道,据btc.com数据显示,目前比特币全网未确认交易数为81,335笔,24小时交易速率为3.69 txs/s。目前全网难度为21.72 T,预测下次难度上调1.00%%至21.94 T,距离调整还剩13 天 12 小时。[2021/2/21 17:35:14]
最坏的情况下,
攻击提示用户对控制n个UTXO的钱包进行n次签名,并导致将钱包的所有资金用于支付除合法支付金额以外的费用。
与Sander在2017年所描述的其它攻击类似,此攻击仅影响无状态签名者,这些签名者依赖于外部系统来告知他们所控制的UTXO。而跟踪接收到的UTXO数量的网络钱包,不会签署不正确的UTXO数量,因此不会受到此类攻击的影响。当然,网络钱包也容易受到其他类型的攻击,这也是硬件钱包可为用户增强资产安全性的原因。
上周,Trezor宣布SaleemRashid在三个月前重新发现了这个漏洞,作为回应,Trezor已更新了固件,但破坏了直接或通过HWI与Trezor设备连接的多个钱包的兼容性。如果钱包有以前交易的完整副本或能够获得这些副本,恢复兼容性应该只是更新钱包代码的问题。而在其他情况下,钱包可能无法存储以前支付钱包的交易的完整副本,这可能需要重新设计钱包以存储该数据,并且需要重新扫描过去的钱包交易的区块链。创建或更新部分签名比特币交易软件需要升级,以便将以前交易的完整副本包含到PSBT中。对于PSBT存储在大小受限制媒介的情况,数据大小增加的问题,可能需要放弃该协议,或切换到容量更大的媒介。
动态 | 俄罗斯 美国和法国争夺比特币嫌疑人:据美联社消息,希腊的一个法院已受理俄罗斯引渡的比特币嫌犯Alexander Vinnik的请求,这使得这个案件国际诉讼变得复杂化。据报道,在周一的一次听证会上,Vinnik否认有关欺诈行为的指控,并表示他正在打击美国在全球金融体系中的主导地位。7月13日,希腊法院批准了法国引渡Vinnik的要求,之后可能引渡到美国。虽然俄罗斯外交部此前曾坚称俄罗斯对Vinnik引渡的请求应优先于法国,但哪个国家将逮捕Vinnik,最终决定取决于希腊的司法部长。[2018/7/31]
Ledger也做了类似的修改,但他们在文章中提到,他们仅在没有完整拷贝先前交易的情况下使用隔离见证UTXO时,才会显示警告。尽管要求以前的交易,可以最大限度地提高安全性以抵御该攻击,但也存在理由允许硬件钱包有选择地继续使用隔离见证签名UTXO值,而不是破坏现有的软件并在传统类型的值验证上花费额外的资源。
这种攻击在3年前就被开发者们所知道了:Sanders在大约三年前公开描述了这种攻击,他在开发者邮件列表、BIP等其它讨论中都有谈及,其他人也都提起过这种攻击,但在很多人看来,这种攻击很难进行,并且影响也较小,然后获得对硬件钱包的软件控制器访问权限的攻击者,更可能会执行不同的攻击,该攻击会直接向攻击者付款而不是进行超付费用攻击。
双重签名也可能导致花费两次:攻击取决于使用受损软件,让硬件钱包用户授权两笔在用户看来完全相同的,但稍有不同的交易。然而,同一个受损的软件可以向用户显示两笔完全不同的交易,它们看起来完全相同,从而导致向同一个接收者支付两次费用。从用户的角度来看,这两种攻击都是不可区分的,但是针对费用超付攻击的修复方法,并不能解决两次花费攻击的问题。
比特币交易中日元占比超六成:金色财经数据播报 根据公开数据显示,比特币交易中,日元交易排名第一,占比达到62.69%;USDT排名第二,占比达到16.91%;美元排名第三,占比达13.18%。[2018/6/16]
多重签名设置可能需要多个折衷方案:为了使用多个硬件钱包对多重签名保护的资金进行攻击,需要满足最小阈值的每个签名者都需被诱来签署相同的两个交易变体。对于包含在线钱包的情况,该钱包知道其所签名的UTXO的价值,只有当该在线钱包也受到攻击时,攻击才起作用。
解决这种攻击问题的一个长期解决方案,是更改交易摘要,以便每个签名提交该交易中使用的所有UTXO的值。如果受损软件谎报关于任何UTXO的数额,这将使签名无效。
这是JohnsonLau在2018年提出的解决方案,其公开草案已被纳入taproot的BIP341规范中。如果采用了taproot,那么对于像硬件钱包这样的无状态签名者来说,在不评估以前交易的情况下为taprootUTXO签名应该会更安全。不幸的是,这仍然无法修复两次花费攻击,这是大多数硬件钱包的无状态设计所存在的一个问题,其阻止了它们在内部跟踪自己的交易历史。
二、针对闪电网络的时间膨胀攻击
GlebNaumenko和AntoineRiard在比特币开发者邮件列表中发布了他们撰写的论文的摘要,其描述了如何通过日蚀攻击从闪电网络通道中窃取资金。这篇研究论文扩展了Riard在第77期周报中所描述的分析。简而言之,攻击者可以控制LN节点与比特币P2P网络的所有连接,并延迟向受害者转发新区块的通知。在受害者对区块链的看法,远远落后于公众的共识看法之后,攻击者会在过时的状态下关闭与受害者的通道,日蚀攻击用于防止受害者看到关闭的交易,直到争议期结束,而攻击者则将其非法收益提取到完全由其控制的地址。
这篇文章所描述的攻击方式,可以在两小时内从轻LN客户端窃取用户的资金。由于当前只有很少的服务器和节点可以向轻量级LN客户端提供数据,因此,攻击者可能很容易执行攻击。而对于全节点支持的LN节点而言,攻击需要花费更长的时间,并且可能需要创建更多的sybil。作者指出,这些攻击还可能适用于其他对时间敏感的合约协议。而解决该问题的通用型方法,是提高主链对日蚀攻击的抵抗能力,其中一个具体的改进是允许节点选择使用其他传输协议。
论文地址:https://arxiv.org/abs/2006.01418
摘要文章:https://www.8btc.com/article/605757
三、比特币软件基础设施更新
上周,最新版本的比特币客户端协议BitcoinCore0.20.0正式发布。此版本最显著的改进包括:RPC用户的默认bech32地址,为不同用户和应用配置RPC权限的能力,在GUI中生成PSBT的一些基本支持,以及在输出脚本描述符语言中添加了sortedmulti。为了消除错误、增强安全性并为将来的更改做准备,开发者还对代码进行了很多不太明显的改进。而一项备受瞩目的前瞻性变化,是增加了一个asmap配置设置,该设置允许使用单独下载的数据库来提高BitcoinCore对Erebus攻击的抵抗力。然而,正如发布声明中所指出的,“目前这项更新是高度实验性的,不清楚如何从中取得进展。收集和编译ASN数据非常重要,并且这会带来信任问题。”有关BitcoinCore0.20.0版本客户端的更多信息,请参见发布说明。
LND0.10.1-beta是LND闪电网络软件的一个新的测试版。这一版本软件并没有添加新功能,而是修复了几个漏洞。
除了这些之外,本周Eclair、LND以及BIP也发生了一些显著变化:
引入Eclair#1440之后,可使用API一次更新多个通道。最初旨在通过批量更新通道的中继费,来帮助节点运营商适应动态的链上收费市场,这一新增功能还可以实现批量关闭和强制关闭。
Eclair#1141增加了对option_static_remotekey通道的支持。在LN节点丢失数据的情况下,此功能允许通道交易方将当前余额支付给初始通道打开期间商定的未弱化密钥,从而关闭通道,并允许节点的钱包正常支出其资金。有关此功能的更多详细信息,请参见第67期周报。
LND#4251使其REST接口支持的非流式消息列表与gRPC接口的列表相等。以前,只有这些消息的一个子集可通过REST接口使用。该PR之后是LND#4141,它通过添加对WebSockets流响应的支持,使REST接口与gRPC接口完全对等。
BIP#920更新了taproot的BIP341规范,要求签名直接提交所有花费UTXO的scriptPubKeys。这使得硬件钱包更容易且安全地参与coinjoin和其他协作生成的交易。有关详细信息,请参见第97期周报。
特别感谢:
感谢PieterWuille帮助我们研究关于费用超付攻击的历史,也感谢AntoineRiard提供有关时间膨胀攻击论文的更多信息。如果文章中有任何错误或遗漏,欢迎指正。
文?|?黎哲翁?编辑|毕彤彤出品|PANews“受益于桥接美元的广泛用例,似乎没有什么能够阻挡USDt的增长,它超过以太坊只是时间问题”。在最新一期关于加密货币市场分析的月度报告中,彭博社如是评论道.
1900/1/1 0:00:00壕鑫互联网络科技有限公司未完成2019年度承诺业绩,*ST晨鑫将对南昌京鑫优贝网络科技中心提起诉讼,要求其支付*ST晨鑫业绩补偿款项金额为人民币共计10.1亿元.
1900/1/1 0:00:00比特币减半了,但丰水期来了,残酷的军备竞赛下,谁已黯然离场?谁还在坚持?四川矿业利好政策频出,挖矿迎来黄金时代还是大洗牌?合规化背后,矿业能否成为资本入圈第一站?5月21日14:00,SheKnows如约而至.
1900/1/1 0:00:00撰文:李晖 来源:中国经营网 中国人民银行对数字货币的研究和设计已经有几年时间,但在Libra白皮书推出后明显提速,疫情的特殊情况又再次催化了相关试点推进的节奏。DC/EP对于货币政策、支付市场甚至人民币国际化的影响,市场上多有关切.
1900/1/1 0:00:00撰文:AndrewKang,加密资产风险投资家、市场分析师 翻译:卢江飞 来源:链闻 由于加密货币市场存在基于代币的自动化做市商,他们设计的业务运营模式可能会造成流动性「黑洞」,这个「黑洞」能从四面八方吸收资产.
1900/1/1 0:00:00来源:宁波创梦信息科技 编者注:原标题为:宁波市特色型中国软件名城创建工作领导小组办公室关于印发《宁波市加快区块链产业培育及创新应用三年行动计划》的通知甬软创办〔2020〕2号各区县人民政府,各管委会.
1900/1/1 0:00:00