比特币核心(Bitcoin Core)新增了一项保护措施,防止签署可能未将资金绑定到用户所批准支付目标的交易。

该变更于9月25日合并至Bitcoin Core的主开发分支,针对的是部分签名比特币交易(PSBT)中的一个细微漏洞,该漏洞可能在不保护预期输出的情况下生成有效签名。

Bitcoin Optech于10月2日重点报道了这一更新。该问题不会暴露用户的私钥,但会带来另一种风险:在特定条件下,即使交易的接收方被更改,签名仍可能保持有效。

该弱点涉及SIGHASH_SINGLE,这是一种签名模式,旨在将某个输入承诺到对应位置的输出。如果交易在该位置没有输出,保护机制会根据所花费的比特币类型而以不同方式失效。

对于传统输入(legacy inputs),缺少输出的情况可能生成对固定哈希值的签名。Bitcoin Core开发者表示,当相同的结构性条件存在时,该签名随后可能被复用于同一密钥控制的其他未花费输出。

SegWit v0交易保留了更强的保护,因为签名仍然承诺所花费的特定币及其金额。然而,目标输出可能仍然未被绑定。

这为钱包和签名设备带来了授权问题:软件可能向用户展示一笔支付,同时生成的签名却无法在密码学上保证所批准的接收方保持不变。

Bitcoin Core阻止了有风险的签名请求

Bitcoin Core此前已通过其原始交易签名接口拒绝了这一边缘情况。但其PSBT路径(包括walletprocesspsbt)仍可能对其进行签名。

新代码将检查逻辑移入 Bitcoin Core 的共享签名创建逻辑中,阻止受影响的 legacy 和 SegWit v0 输入被签名,同时允许同一 PSBT 中的其他有效输入继续处理。

PSBT 通常用于协调软件钱包、硬件设备和离线签名者之间的交易。它们允许交易构建者将信息传递给独立的签名者,而无需将该系统的私钥控制权交出去。

因此,该修复强化了一道钱包开发者必须独立于密钥安全来执行的边界:有效的加密签名必须承诺用户实际授权的交易细节。

定义 PSBT 的 Bitcoin 改进提案 174 已经要求签名者拒绝不可接受的签名模式,并建议在未指定替代方案时使用 SIGHASH_ALL。Bitcoin Core 的此次更改明确阻止这种缺少输出的配置进入签名阶段。

相关阅读

Bitcoin Core 重大更新更改默认钱包协议,可能导致热门应用出现临时中断

用户目前尚未获得包含该防护措施的确认生产版本。9 月 25 日的更改已合并到 Bitcoin Core 的开发分支,而截至 10 月 4 日,该项目已发布的版本列表中尚未标明修复版本或确认向后移植。

这使得钱包提供商和硬件签名集成方面临更紧迫的决定:审查自身对 SIGHASH_SINGLE 请求的处理方式,而不是等待 Bitcoin Core 发布版本来在下游强制执行同样的保护。

文章《Bitcoin Core 的新修复填补了可在不窃取密钥的情况下重定向资金的缺口》首发于 CryptoSlate。

分享至:

相关阅读

以上内容不构成投资建议。

本文为来源作者的观点,不代表哈希视野(HASHVUE)的立场,不承担法律责任,图片如有侵权,请联系作者删除。