Chainfeeds 导读:
不要轻信,务必验证(Don't trust it, VERIFY it.)是 Web3 安全的核心原则。
文章来源:
https://hackmd.io/@itYRY3gHTgaDgp-VVznEIw/SkVB2-A5Jl
文章作者:
dejavukong
观点:
dejavukong:用户认知中的多签交易流程很简单:看到交易 → 签名 → 提交上链,但实际上隐含着一层关键的分离:用户看到的交易及实际签名的交易。而使用官方 app 会让用户的警惕心理极大降低,以至于忽略掉这一层分离。如果官方 app 页面被攻击了,会导致用户的签名是真实的,他们只是不知道自己在此时究竟签了什么内容。这时如果可以有独立渠道验证签名内容的真实性,就可以极大程度地杜绝前端攻击带来的风险。这就是区块链所提倡的: Don‘t trust it, VERIFY it.截至目前,Safe 合约还是足够安全的:先把交易内容计算出一个哈希值(类似于生成交易的「指纹」)。用私钥对这个哈希值进行签名。当收集到足够数量的签名后,提交把交易原文和这些签名提交到链上。链上重新根据原文计算哈希值,并验证这些签名是否有效,收集足够的有效交易则执行,否则则拒绝。哈希和签名的安全和难伪造的属性是区块链 work 的两大基石,不用怀疑。因此,如果有独立渠道可以在交易被提交上链之前,可以得到交易原文以及签名,就可以验证「用户签名的交易到底是什么」以及「用户是不是对这笔交易进行的签名」。目前市场上有很多 safe-compatible 的多签产品,例如 Safe 自己就部署了两版独立的前端页面。用户在对一笔多签交易签名之后,自己或者后续的签名者登录到另一个多签产品的页面中,再次查看交易原文,如果不同多签产品显示完全相同的交易内容解析,则可以相信「自己要签名的交易内容」是正确的。但是这需要不同的多签产品都在使用 {Safe} 的后端存储链下交易和签名数据并且也会把自己收集到的签名数据发送给 {Safe} 后端,这对产品之间的协作要求非常苛刻;而且 Safe 对一些不常规交易的原文解析并不友好,就算多个 Safe 前端显示了同样的 calldata,但是如果只是一串没有意义 0xabcdefsf,也会让签名者望而却步。
内容来源文章声明:以上内容(如有图片或视频亦包括在内)除非注明,否则均为谈天说币原创文章,转载或复制请以超链接形式并注明出处。