隔离见证是如何彻底解决交易延展性攻击的

  • Dapplink
  • 发布于 2025-02-16 11:57
  • 阅读 20

隔离见证是如何彻底解决交易延展性攻击的

一.概述

交易延展性攻击(Transaction Malleability Attack)是指在交易未确认前,攻击者可以修改交易的某些字段,使其交易哈希(txid)发生变化,但不会影响交易的有效性。这种攻击会影响基于UTXO交易模型的公链,尤其是比特币(BTC),给交易确认、双花攻击、交易跟踪等带来挑战。

交易延展性攻击的核心在于:

● 比特币早期(隔离见证前),交易哈希(txid)是通过交易的全部数据,包括签名字段计算的。

● 某些字段,如S值(用于签名的 r,s 对中的 s 值),可以通过合法的数学运算进行修改,而不会影响签名的有效性。

● 交易哈希改变后,原本依赖此txid的交易(如子交易)可能变得无效,或者攻击者可以创建一个新的txid版本,使原始交易被废弃。

二. 比特币的交易延展性攻击

比特币的交易使用ECDSA(椭圆曲线数字签名算法)进行签名,并采用 r,s 形式的签名数据。这里s值有较宽的取值范围,使得可以通过s和n-s进行等效变换,而不会影响签名的验证结果。

1.为什么 S 值可以被修改?

03752e14cea47295675fb7ccf6d001b4.png

2.比特币早期如何应对?

在隔离见证(SegWit)之前,比特币的应对方式主要依赖:

● 交易所和钱包进行风控 在 UTXO 管理上避免依赖未确认的交易 txid 交易所一般要求多个确认才会认为交易最终确定

● 使用 nLockTime 机制 设定交易的解锁时间,确保一定区块高度后交易才有效

● 钱包端处理 监测交易是否有可能被篡改 允许用户重发交易

但这些方式并不能根本解决问题

3.隔离见证彻底解决交易延展性

比特币在 2017 年 SegWit(BIP141)升级 后,从根本上解决了交易延展性攻击:

● 交易数据和签名数据被分离 ● txid 计算时不包含签名数据 ● 签名被放入 witness 结构中 ● 这样,哪怕修改 s 值,txid 也不会变化

📌 关键变化 ● 过去 txid 计算方式:txid = Hash(交易数据 + 签名) ● 隔离见证后的 txid 计算方式:txid = Hash(交易数据)(不包含签名数据)

📌 V 值 ● 比特币使用 DER 编码方式存储 V 值,保证签名唯一性。

📌 影响 ● 使得比特币闪电网络(Lightning Network)等二层协议可以安全地使用UTXO交易结构 ● 解决了交易依赖性问题,简化了交易管理

三. 以太坊怎么解决交易延展性攻击

1.以太坊签名与S值

以太坊使用ECDSA进行交易签名,并且在EIP-2提案(2016 年)中引入了Low-S强制标准,防止S值修改:S值必须小于 n/2, 这样,签名 r,s 只有一个有效值,不能被修改,杜绝了S 变更导致的txid变化,这使得以太坊从一开始就不受交易延展性攻击的影响。

2.V 值和EIP-155解决重放攻击在比特币中,V 仅用于恢复公钥,而在以太坊,V 还携带了链 ID(ChainId),用于防止重放攻击(Replay Attack)。

EIP-155解决方案 ● V = 27 + ChainId * 2 ● 这意味着相同的私钥在不同的链(如 ETH 和 BSC)上生成的交易,V 值不同 ● 这样,即便交易数据相同,也不能直接复制到另一条链上执行

📌 示例 假设以太坊主网(ChainId=1)和 BSC(ChainId=56) ● ETH 交易 V = 27 + 1 2 = 29 ● BSC 交易 V = 27 + 56 2 = 139

即使交易内容相同,V 值不同,因此无法直接重放到另一条链。

四.总结 ● 比特币在隔离见证(SegWit)之前,交易哈希(txid)包含签名数据,导致 S 值修改会影响 txid。 ● SegWit 之后,txid 只依赖交易数据,不包含签名,彻底解决交易延展性。 ● 以太坊在EIP-2 约束S值,并使用EIP-155让V绑定 ChainId,从一开始就不存在交易延展性攻击。 ● 比特币交易延展性修复后,提升了Layer2扩展方案(如闪电网络)的安全性。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Dapplink
Dapplink
0xBdcb...f214
首个模块化、可组合的Layer3协议。