资讯详情

跨链桥防重放:消息身份不能跟着签名格式变化

📅 2026/10/25 23:32:53 | 华诺云谱 👁 阅读
跨链桥防重放:消息身份不能跟着签名格式变化
同一笔跨链提款换一种签名编码再提交应该被当成第二笔业务吗显然不应该。但如果接收端用签名字节的哈希充当“已消费”索引业务身份就会被密码学包装牵着走。即使签名库正确处理了编码消息的域、目标和唯一编号仍需要单独设计。EIP-712 提供结构化消息与域隔离的规则同时明确它本身不包含重放保护。因此“采用了 typed data”不是跨链桥防双花的完成条件。规范消息键应覆盖业务意图一个提款消息通常需要绑定源链、目标链、源端合约、目标接收器、业务 nonce、资产、金额和接收人。具体字段由协议决定但不能只绑定其中一部分再让调用者自由替换其他字段。唯一性还必须说明作用域同一个源发送者的 nonce不能和另一发送者混为一谈。签名是否由可信主体产生消息是否对应已最终确认的源链事件以及消息是否被消费是三个独立问题。多签、轻客户端或 ZK 证明各自解决不同的认证问题不该都被一个verify()布尔值掩盖。本地演示改变包装不改变消费记录下面使用规范化 JSON 和 SHA-256 演示“业务字段决定消息身份”。这是应用层身份示例不是 Solidity ABI 编码、EIP-712 哈希、Keccak 或真实签名验证器。不要把输出拿去当链上兼容签名摘要。import hashlib import json FIELDS {src, dst, sender, receiver, nonce, asset, amount, to} used set() def message_id(message): if set(message) ! FIELDS: raise ValueError(missing or unexpected business fields) raw json.dumps(message, sort_keysTrue, separators(,, :)).encode() return hashlib.sha256(raw).hexdigest() def consume_after_authentication(message): key message_id(message) if key in used: return REPLAY used.add(key) return PROCESSED m dict(src1, dst2, senderbridge-A, receiverbridge-B, nonce7, assettoken-X, amount50, toalice) assert consume_after_authentication(m) PROCESSED # Different signature wrappers would still pass the same authenticated message. assert consume_after_authentication(dict(m)) REPLAY assert message_id(dict(m, dst3)) ! message_id(m) assert message_id(dict(m, senderbridge-C)) ! message_id(m) print(4 identity cases checked; authentication is not implemented)保存为replay.py并运行python3 replay.py。函数名里的after_authentication是调用前提不是认证实现。真实接收器需要在认证成功后、外部调用前按正确的重入防护和事务语义消费消息进程内的set既没有持久化也没有并发原子性。映射升级也会改变消息的含义源资产到目标资产的映射如果可被管理者随意改写旧消息可能在新配置下解释成另一种资产。协议应说明消息绑定映射版本还是读取当前配置升级如何影响排队中的提款取消与退款由谁处理。时间锁能为危险变更提供观察窗口但不能证明新映射正确。OpenZeppelin 文档也将提案者和执行者分开强调延迟给用户留下审阅与退出机会。访问控制与延迟本文没有复现任何头部桥的真实漏洞也没有调用模型或验证器。代码验证的是四个消息身份用例可信根、密码学签名、源链最终性和跨链执行仍未集成。一个可靠的防重放设计应能明确回答“这是谁的哪一条业务消息”而不只回答“这串签名以前见过没有”。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑