以太坊若發生量子攻擊怎麼辦?Vitalik:不用擔心

Kyle
分享
以太坊若發生量子攻擊怎麼辦?Vitalik:不用擔心

Vitalik 於 Ethereum Research 論壇上發文討論「以太坊該如何在量子電腦攻擊下利用硬分叉保護用戶資產」,主張將利用硬分叉回滾交易並馬上升級簽名機制,將可以有效保護用戶資產。

如果明天就發生量子攻擊?

V 神表示自己假設明天量子電腦被惡意攻擊者掌控,並能夠使用它竊取用戶的資金。

防止這種情況的發生是抗量子密碼學的目標,一旦帳戶抽象技術到位,任何用戶都可以按照自己的計劃轉而使用抗量子簽名方案。但如果沒有那麼多時間怎麼辦?

廣告 - 內文未完請往下捲動

Vitalik 認為以太坊已經做好了準備,可以製作一個非常簡單的恢復分叉與錢包升級來應對量子攻擊這種情況。

雖然區塊鏈將不得不硬分叉將交易回溯,用戶將不得不下載新的錢包軟體以提升簽名強度,但很少有用戶會因此損失資金。

區塊鏈與量子電腦的對決前線:爭奪私鑰

量子運算攻破哪個環節

以太坊地址定義為:

keccak (priv_to_pub(k)) 取最後的20個字節

其中 k 是私鑰,priv_to_pub 是用於將私鑰轉換為公鑰的橢圓曲線乘法,keccak 是哈希函數。以太坊地址生成的流程是:

  1. 藉由隨機源產生私鑰。
  2. 藉由橢圓曲線與私鑰生成公鑰。
  3. 藉由 Keccak-256 哈希函數生成地址。

使用量子電腦,橢圓曲線乘法將變得可逆 (因為它是離散對數問題),但 hash 函數仍然是安全的。

代表若只有地址公開,很難推回公鑰與私鑰;但若是公鑰公開,那在量子運算底下取得私鑰將會非常容易。

如果用戶尚未使用其帳戶進行任何交易,則只有地址是公開可見的,這些用戶的錢包就算有量子運算也是安全的。

但是如果用戶曾進行任何一筆交易,那麼該交易的簽名就會洩露公鑰,這在後量子世界中將會洩露私鑰,因此大多數用戶都容易受到攻擊。

若發生量子攻擊如何應對

V 神表示大多數使用者的私鑰本身就是一堆雜湊計算的結果。許多金鑰是使用 BIP-32 產生,它透過從主種子短語開始的一系列哈希值來產生每個地址。許多非 BIP-32 金鑰產生方法的工作原理也類似:例如如果用戶有腦錢包,它通常是應用於某些密碼的一系列雜湊值 (或中等難度的 KDF)。

這代表 EIP 的自然結構可以透過硬分叉鏈來從量子緊急情況中復原,應分叉流程如下:

  1. 恢復第一個明顯發生大規模盜竊的區塊之後的所有區塊
  2. 傳統基於 EOA 的交易被停用
  3. 新增了新的交易類型以允許來自智能合約錢包的交易 (例如RIP-7560 的一部分內容),
  4. 如果第三步仍技術不可用:可以新增 EVM 新的交易類型或操作碼,藉此提供 STARK 證明以引入私有原像 (private preimage)、來自核准的雜湊函數 ID 以及公開位址,STARK 接受該帳戶的新驗證碼的雜湊值作為公開輸入。如果證明通過,用戶的帳戶代碼將切換為新的驗證代碼,能夠將其用作智能合約錢包。

出於燃料費效率的考量 (畢竟 STARK 證明容量很大),可以讓 STARK 成為批量證明,一次證明上述類型的 N 個 STARK (必須是STARK-of-STARK,而不是直接證明多個聲明,因為每個用戶的資訊都需要對聚合器保密)。

原則上,實施此類硬分叉的基礎設施可以在明天馬上開始建構,從而使以太坊生態系統做好充分準備,以防量子緊急情況確實發生。