关于EIP-3074安全性的深入探讨
近期关于”在EIP-3074实施后,一个错误的签名可能导致以太坊账户余额被耗尽”的讨论引起了广泛关注。作为该提案的共同作者,我认为有必要澄清一些关键点,帮助社区更好地理解这个技术标准。
目前市场上还没有任何钱包支持签署EIP-3074消息。用户现在通过dapp登录时签署的消息采用的是完全不同的EIP-191标准,这种消息会在签名前添加特定前缀数据:”0x19 “。这种设计机制使得欺骗用户签署有效以太坊交易变得不可能。
在以太坊交易中,不同类型交易使用不同的单字节前缀值:0x01对应2930交易,0x02对应1559交易,0x03对应4844交易。EIP-3074计划使用0x04作为前缀,这将使其与以太坊中其他类型的可签名数据明确区分开来。钱包需要主动选择允许用户签署这类消息。
EIP-3074的签名机制建立在包含调用者地址的授权消息上。只有当签名在特定地址的AUTH下才会被视为有效。要发生账户耗尽的情况,需要同时满足两个条件:钱包允许用户为任意调用者地址签名,且用户未验证调用者的可信度。
我们期望钱包开发者能够理解,EIP-3074的调用者更类似于代码扩展而非普通合约。就像钱包不会允许用户随意运行能访问私钥的任意代码一样,它们也不应该允许用户随意委托账户权限。如果钱包不安全地整合EIP-3074且用户未验证调用者,确实可能发生委托给恶意调用者的情况。
不过,用户可以通过发送单个交易来撤销所有”进行中”的AUTH签名。钱包应该将签署EIP-3074消息视为与导出私钥同等重要的操作。即使钱包安全地整合了该标准,批量交易的基本属性仍然可能被利用,攻击者可能欺骗用户将多笔资产转移到他们控制的地址。
钱包必须清晰显示用户正在签署的每个操作,这样用户就能轻松识别异常情况。如果通过盲目签名实现批量处理,这种风险将难以防范。虽然EIP-3074确实对钱包提出了很高的信任要求,但考虑到我们已经将私钥安全托付给钱包,这种信任关系本就存在。
我们相信EIP-3074可以安全地整合和使用。作为提案作者,我们积累了多年关于其使用场景和潜在滥用的研究经验,对这些想法即将投入生产感到兴奋,同时也清楚认识到其中的挑战。任何钱包开发者如有疑问,我们都愿意提供帮助,共同推动这个标准的发展。
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/13227.html