在EIP-3074之后,一个错误的签名将能够清空你在以太坊上的账户

中级Apr 23, 2024
在EIP-3074 之后,一个错误的签名将能够耗尽你以太坊账户上的余额,文中详细介绍钱包整合EIP-3074 的具体方式,可能会造成用户更容易被利用的情况和工作原理,避免造成无法挽回的错误。
在EIP-3074之后,一个错误的签名将能够清空你在以太坊上的账户

“在 EIP-3074 之后,一个错误的签名将能够耗尽你在以太坊上的账户余额。”

是的,这是正确的。我是 3074 的共同作者!让我稍微解释一下这个问题,以免它变得更加恶化。

首先:我不知道今天有哪些钱包支持签署未加前缀的数据。这意味着目前没有钱包支持 3074。无论你穿过多少控制面板或打开多少高级功能,都不可能签署 3074 消息。今天不可能签署 3074 消息。

你签署用于“登录”到 dapp 的消息使用的是完全不同的基于 EIP-191 的标准。这会在你签名的消息前加上以下数据:

“””

0x19 <0x45 (E)> <thereum Signed Message:\n” + len(message)> <data to sign>

“””

这就是使得欺骗登录 dapp 的人签署有效的以太坊交易变得不可能的原因。

交易是用单字节值进行前缀的:

0x01 - 2930 tx

0x02 - 1559 tx

0x03 - 4844 tx

更多信息请参阅这里 : https://github.com/ethereum/execu化规范/树/主/列表/签名类型

3074 计划使用前缀 0x04。这将使其与以太坊中所有其他类型的可签名数据区分开来。

钱包将不得不积极选择允许用户签署这些消息。

根据钱包如何整合 3074,它们可能会造成用户更容易受到剥削的情况。要理解这一点,我们需要确保理解 3074 签名的工作原理。

签名构建在以下字段的 auth msg 上。重要的是,它包括一个调用者地址。这是签名只会在 AUTH 下被视为有效的唯一地址。

要使一个账户被耗尽,1)钱包将需要允许用户对任何调用者地址进行签名,2)用户必须不验证调用者是否值得信任。只要满足其中之一,就不会有问题。

对于第一点,我们希望钱包能够理解,3074 的调用者更类似于它们代码的扩展,而不是合约。钱包不会让用户自由运行具有访问其私钥的任意代码;同样地,它们也不应该允许用户任意委托其账户。

因此,如果钱包不安全地整合了 3074 并且 用户没有验证与之交互的调用者,那么可能会委托给一个恶意的调用者。

然而,通过从 EOA 发送单个交易,可以撤销所有“正在进行中”的 AUTH 签名。

最低限度,钱包应该让签署 3074 消息变得非常重要。这就像导出你的私钥一样重要。

假设一个钱包安全地整合了 3074,账户仍然有可能被清空。这是批量交易的基本属性。它不仅可以轻松地让您发送多个操作,也可以让攻击者欺骗您将一批资产发送到他们控制的地址。

钱包必须清楚地显示您正在签名的每个操作。这样,您就可以轻松地注意到:“我原本只打算进行一次交易,但这个签名请求让我做了十几次转账”。

如果批量处理是通过盲目签名实现的,那么就不可能检测到这一点。

是的,3074 把很多信任放在了钱包上。但是看,我们已经把我们的私钥安全地交给了它们!再也没有更高级别的信任了。

完全有可能安全地整合和使用 3074。如果任何钱包对如何做到这一点有疑问,请不要犹豫与我们联系。作为 3074 的作者,我们正在思考如何在其下一个阶段中最好地帮助这个标准。

在过去的几年里,我们花了大量时间开发了关于它可能如何被使用和滥用的假设场景。我们对这些想法开始投入生产感到兴奋。但我们也意识到,这是困难的一部分。

声明

  1. 本文原标题为“EIP-3074 之后,一个错误的签名将能够耗尽您在以太坊上的账户”转载自[轻客户端]]。所有版权归原作者所有[ightclients]。如对转载有异议,请联系Gate Learn团队,团队会尽快处理。

  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。

  3. 本文的其他语言翻译由 Gate Learn 团队完成。除非另有说明,否则禁止复制、分发或抄袭翻译文章。

即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册