通过 Ephemeral Key Pairs 与 Account Abstraction 实现量子安全 - 密码学

本文提出一种利用账户抽象(AA)实现抗量子攻击的钱包设计方案。该方案通过在每次交易后自动轮换ECDSA签名者地址,使公钥仅在单次交易中暴露,从而利用现有基础设施防御Shor算法对离散对数问题的攻击,且无需更改以太坊底层协议。

通过临时密钥对和账户抽象实现量子安全

感谢 @abaiocchi 的贡献以及 @asanso 的反馈

摘要

我们提出了一种量子安全的钱包设计,无需更改以太坊的签名方案或协议规则。通过利用账户抽象(Account Abstraction),我们使每个 ECDSA 密钥对仅供单次使用:每笔交易都会轮换签名者,而智能合约钱包地址保持不变。这消除了长期公钥暴露这一 Shor 算法会利用的核心漏洞,且仅使用当今的基础设施。该方案旨在至少在短期内解决执行层的量子安全性。

引言

量子对椭圆曲线密码学的威胁不再是一个遥远的担忧。Shor 算法能有效解决离散对数问题,从而破解 ECDSA。虽然具有密码学意义的量子计算机尚未出现,但时间表正在缩短。以太坊基金会已经启动了专门的后量子研究工作,Vitalik 最近也概述了一个更广泛的 PQ 路线图

在以太坊上,一个从未进行过交易的 EOA 实际上是量子安全的,因为其公钥隐藏在哈希之后。但一旦它签署了一笔交易,公钥就会永久暴露在链上,从量子抗性的角度来看,该地址实际上已经作废。

目前正在进行大量工作以将后量子签名方案直接引入 EVM,最显著的是 Falcon( 1, 2, 3, ETHFALCON)和 Poqeth。这些努力对长期发展至关重要,但目前 Falcon 的链上验证成本仍高达 1M Gas,而基于哈希的签名目前在 ~200k Gas 左右。一旦 EIP-8051EIP-8052 被添加到 EVM 中,这些成本可能会进一步降低。

Gas 成本并不是实现后量子签名的唯一挑战:标准化、硬件钱包兼容性以及对经典攻击的经验证抗性是新的以太坊签名标准需要克服的重大障碍。即使此类签名已经准备就绪,标准化也需要时间,而完全取代 ECDSA 需要协议层面的更改( EIP-7701, RIP-7560)。我们的方法是互补的:我们不是取代 ECDSA,而是让它变得可丢弃。

建议的设计

我们可以利用账户抽象来对区块链的其余部分保持静态身份(智能账户),同时在每笔交易后切换签名者的身份。这并不能阻止量子计算机恢复用户的私钥,而是使签署前一笔交易的私钥对于签署未来的任何交易都失效。

该方案非常简单:

  1. 用户将一个地址附加到其 UserOp 的 Calldata 中
  2. 智能合约钱包验证该交易
  3. UserOp 被执行
  4. 智能合约钱包上的授权签名者更改为新地址

交易执行后,旧私钥即使被恢复也完全没用。由于只有地址被传达给了智能合约钱包,因此只有公钥哈希的一部分被泄露,这使得新私钥在下一笔交易之前是量子安全的。

可以进行一些实际考虑以简化流程:例如,用户可以按照 BIP44 派生路径生成要发送的地址,而不是选择任意的新地址,这在当前使用的钱包中也广泛可用。

scheme\ scheme1466×712 53.3 KB

实际实现

这种设计可以通过对基础的 SimpleWallet 进行一些细微调整来实现。我们只需要一种从 Calldata 中提取下一个调用者并更改智能合约钱包所有者的方法。我们在此 代码库 实现了一个概念验证。

此实现还旨在解决我们发现的一个关键问题:即使 UserOp 还原(revert),我们也需要轮换签名者。否则,失败的交易将意味着智能合约钱包当前的签名者处于暴露状态。相反,如果 UserOp 失败,我们会发出一个事件,但我们仍然完成交易并执行轮换部分。

通过此实现,我们记录了一些交易( 示例)并测得 ERC20 转账消耗约 136k Gas 单位,相对于同一链上相同的 Token 转账( 示例),Gas 开销不到 100k。与目前的后量子签名验证相比,这一开销已经显著降低,并且还带来了账户抽象的额外好处。如果将签名者轮换本身的 Gas 成本添加到预先存在的基于账户抽象的钱包中,成本甚至更低,在大局中几乎可以忽略不计。

社会恢复功能的再利用

实现相同流程的另一种方法是利用智能合约钱包现有的社会恢复功能。除非某些特定的限制禁止这样做,否则我们可以将账户的恢复监护人设置为我们自己的地址,并在每笔交易后请求身份恢复。这会带来略高一点的 Gas 成本,因为我们滥用了一个用于不同目的的功能,但其优势在于无需在链上部署自定义架构即可开始使用这种量子安全的钱包设计。

我们对这种方法的实验表明,此操作预期的 Gas 成本开销约为 30k,而我们使用的整个架构(不含恢复)的总 Gas 开销约为 110k。

已知漏洞

我们意识到这种设计存在一个漏洞:Mempool 等待期。在此期间,用户的公钥是可见的,具有量子能力的攻击者可以检索其私钥并对其进行抢跑。

目前这个问题并不十分令人担忧,因为攻击者恢复私钥的时间窗口有限,使得这种利用极难甚至不可能实现。不过,如果想要实现完全安全,使用私有 Mempool 可以完全消除这个问题。此外,由于等待时间更短,该漏洞在 L2 环境中也会得到缓解。

结论

我们提出了一种方案,通过在每笔交易后轮换 ECDSA 密钥对,并使用账户抽象来保持稳定的链上身份,从而在执行层实现量子安全。该方法不需要协议更改,并且引入了极小的 Gas 开销(比标准转账多约 100k)。它并不能取代后量子签名方案,后者对于完整的长期解决方案仍然是必要的,但它仅使用当前基础设施就消除了公钥的长期暴露。主要的悬而未决的问题是 Mempool 级别的暴露:在交易待处理期间,当前签名者的公钥是可见的,而私有 Mempool 是最直接的缓解措施。


  1. ERC20 转账 来自 EOA使用简单的 AA使用带轮换的 AA↩︎
  • 原文链接: ethresear.ch/t/achieving...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展