3 月 9 日,以太坊联合创始人 Vitalik Buterin 于以太坊研究论坛(ethresear.ch)以《如何通过硬分叉从突然到来的量子攻击中解救用户资金》为题发布了一篇短文。
文中,Vitalik 概述了如果量子攻击明天就会到来,以太坊如何在紧急情况下尽量减少用户资金损失,又应该通过哪些程序来转向抗量子形态,继而恢复正常运转。
以下为 Vitalik 全文内容,由 Odaily 星球日报编译。
假设量子计算机明天就能实现,且不法分子已通过某种方式获取了它的访问权限,并想要利用它来窃取用户资金,我们该怎么办?
诸如 Winternitz 签名、STARKs 等抗量子(quantum-resistant)技术的开发正是为了防止这种情况的发生,一旦帐户抽象准备就绪,任何用户都可以随机切换至具备量子抗性的签名方案。但如果我们没有那么多时间,如果量子攻击的到来比所有人设想的都更加突然,我们该怎么办?
我认为,实际上我们目前已具备了通过一个相对简单的恢复性分叉(recovery fork)来解决该问题的充足条件。通过该解决方案,以太坊网络将不得不进行硬分叉,用户也将不得不下载新的钱包软件,但只有少数用户可能会丢失他们的资金。
量子攻击的主要威胁如下。以太坊地址是通过运算 keccak(priv_to_pub(k))[ 12:] 而函数得出的,其中 k 对应的是私钥,priv_to_pub 对应的是一个椭圆曲线乘法,用于将私钥转换为公钥。
当量子计算实现后,上述椭圆曲线乘法将变得可逆(因为这其实就是离散对数问题的求解),不过哈希运算依旧是安全的。如果用户没有过进行任何交易,那么被公开的只有地址信息,这种情况下他们依旧会是安全的;但是只要用户曾进行过哪怕一次交易,交易签名就会暴露出公钥,这在量子计算机的面前就存在暴露私钥的可能性。所以在这种情况下,大多数用户将会面临风险。
但我们其实有办法缓解这一威胁,这其中的关键点在于,实践中大多数用户的私钥都是通过一系列哈希运算产生的。比如许多私钥是使用 BIP-32 规范而生成的,它是根据一组助记词,通过一连串哈希运算而生成;很多非 BIP-32 的私钥生成方法也差不多类似,比如如果用户使用的是脑钱包,它通常也是由某个密码经过了一系列哈希运算(或者是中等难度的密钥派生函数)而生成。
这意味着,通过恢复性分叉来应对突发量子攻击的解决方案将采取以下步骤:
第一,将大规模攻击发生之后的所有区块回滚;
第二,禁用基于 EOA 地址的传统交易模式;
第三,(如果那时还没有落地的话)添加一种新的交易类型来允许通过智能合约钱包(比如 RIP-7560 中的部分内容)进行交易;
第四,添加新的交易类型或操作码,通过它用户可提供 STARK 证明,如果证明通过,用户地址的代码将切切换至全新的已验证代码,之后用户可以将新代码地址作为智能合约钱包使用。
第五,出于节省 Gas 考虑,由于 STARK 证明的数据量较大,我们将支持批量 STARK 证明,以同时进行多笔上述类型的 STARK 证明。
原则上,明天我们就可以开始对实现此恢复性分叉所需的基础设施进行开发,从而使以太坊生态系统能够在突发的量子攻击中做好准备。