首页>>资讯>>产业

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

2025-02-17 12:30:32 5

一.概述


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


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


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


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


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


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


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


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

4.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扩展方案(如闪电网络)的安全性。

声明:本网站所有相关资料如有侵权请联系站长删除,资料仅供用户学习及研究之用,不构成任何投资建议!