時(shí)間:2024-03-09|瀏覽:311
假設(shè)明天宣布量子計(jì)算機(jī)可用,并且不良行為者已經(jīng)可以訪問(wèn)它們并能夠使用它們竊取用戶的資金。
防止這種情況的發(fā)生是**抗量子密碼學(xué)**(例如 Winternitz 簽名、STARK)的目標(biāo),一旦帳戶抽象到位,任何用戶都可以按照自己的計(jì)劃轉(zhuǎn)而使用抗量子簽名方案。
但如果我們沒(méi)有那么多時(shí)間,而突然的量子躍遷早在這之前就發(fā)生了怎么辦?
我認(rèn)為,實(shí)際上,**我們_已經(jīng)_準(zhǔn)備好制作一個(gè)非常簡(jiǎn)單的恢復(fù)分叉來(lái)處理這種情況**。
區(qū)塊鏈將不得不硬分叉,用戶將不得不下載新的錢包軟件,但很少有用戶會(huì)損失資金。
量子計(jì)算機(jī)的主要挑戰(zhàn)如下。
以太坊地址定義為“keccak(priv_to_pub(k))[12:]”,其中“k”是私鑰,“priv_to_pub”是將私鑰轉(zhuǎn)換為公鑰的橢圓曲線乘法。
使用量子計(jì)算機(jī),橢圓曲線乘法變得可逆(因?yàn)樗请x散對(duì)數(shù)問(wèn)題),但哈希仍然是安全的。
如果用戶尚未使用其帳戶進(jìn)行任何交易,則只有地址是公開(kāi)可見(jiàn)的,并且他們已經(jīng)是安全的。
但是,如果用戶進(jìn)行了一筆交易,那么該交易的簽名就會(huì)泄露公鑰,這在后量子世界中允許泄露私鑰。
因此大多數(shù)用戶都容易受到攻擊。
但我們可以做得更好。
關(guān)鍵的認(rèn)識(shí)是,在實(shí)踐中,**大多數(shù)用戶的私鑰本身就是一堆哈希計(jì)算的結(jié)果**。
許多密鑰是使用 [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) 生成的,它通過(guò)從主種子短語(yǔ)開(kāi)始的一系列哈希值生成每個(gè)地址。
許多非 BIP-32 密鑰生成方法的工作原理類似:例如。
如果用戶有腦錢包,它通常是應(yīng)用于某些密碼的一系列哈希值(或中等難度的 KDF)。
這意味著 EIP 的自然結(jié)構(gòu)是通過(guò)硬分叉鏈來(lái)從量子緊急情況中恢復(fù): 1. 恢復(fù)第一個(gè)區(qū)塊之后的所有區(qū)塊,其中很明顯正在發(fā)生大規(guī)模盜竊 2. 傳統(tǒng)的基于 EOA 的交易被禁用 3 .添加了新的交易類型以允許來(lái)自智能合約錢包的交易(例如[RIP-7560](https://ethereum-magicians.org/t/rip-7560-native-account-abstraction/16664)的一部分) ,如果尚不可用 4. 添加新的交易類型或操作碼,您可以通過(guò)它提供 STARK 證明,證明知道 (i) 私有原像“x”,(ii) 哈希函數(shù) ID“1 <=” i < k` 來(lái)自“k”批準(zhǔn)的哈希函數(shù)列表,以及 (iii) 公共地址“A”,使得“keccak(priv_to_pub(hashes[i](x)))[12:] = A”。
STARK 還接受該帳戶的新驗(yàn)證碼的哈希值作為公共輸入。
如果證明通過(guò),
您的帳戶代碼將切換為新的驗(yàn)證代碼,從那時(shí)起您將能夠?qū)⑵溆米髦悄芎霞s錢包。
出于gas效率的原因(畢竟STARK很大),我們可以讓STARK成為批量證明,證明上述類型的N個(gè)STARK(必須是STARK-of-STARK,而不是直接證明多個(gè)聲明) ,因?yàn)槊總€(gè)用戶的“x”需要對(duì)聚合器保密)。
原則上,實(shí)施此類硬分叉的基礎(chǔ)設(shè)施可以在明天開(kāi)始建設(shè),從而使以太坊生態(tài)系統(tǒng)做好充分準(zhǔn)備,以防量子緊急情況確實(shí)發(fā)生。