作者:Bitmax Research
來源:https://www.bitmex.com/blog/Mitigating-The-Impact-Of-The-Quantum-Freeze
摘要:在本文中,我們研究了多種為應對量子計算機而提出的錢幣凍結提議,它們通過允許接近凍結狀態的錢幣可以用量子安全的辦法復原,來緩解凍結的影響。這可以通過使用兩筆交易來實現:(1)準備交易(包含一個哈希承諾);(2)復原交易。另一種辦法只需使用一筆交易,要求添加一個 “零知識的證據(ZKP)” 到交易中,以證明花費者知道這個錢包的種子詞。這些系統表明,在理論上,我們有可能構造出一種凍結方案,讓幾乎所有接近凍結狀態的錢包都都可能復原。然而,復原的過程和允許復原的軟分叉協議升級可能會非常複雜,而且可能還有其它缺點,比如說增加節點運營者的負擔。不過,如果我們真的要凍結錢幣,那麼這些復原選項是值得考慮的。

概述
這是我們關於比特幣應對量子計算機的系列文章中的第三篇。我們的第一篇文章探討了 Lamport 簽名(中文譯本)、第二篇文章探討了 Tapleaf 量子安全花費路徑的好處(中文譯本)。在本文中,我們要了解是,在為了應對量子計算機而凍結人們的量子脆弱錢幣時,如何緩解凍結的影響,尤其是,通過多種量子安全的復原方案來減少潛在的錢幣丟失。
(譯者注:在應對量子計算機影響的討論中,常有提議為緩解錢幣被量子計算機盜竊或遺失錢幣被量子計算機找回而對流通量造成影響,而凍結這些錢幣;在這裡, “凍結” 意味著禁用會被量子計算機攻破的花費方法,也就是單純的橢圓曲線簽名;“復原” 指找回對這些錢幣的控制權 —— 將它轉移到只有其主人能控制、帶有安全花費方法的地方。)
承諾-復原 方法
承諾交易和 OP_Return 輸出,可以用來在凍結錢幣之後以量子安全的方式復原資金。這可以應用在標準的 P2PKH 輸出上(前提是之前已經避免重複使用地址)。這種設計需要發送兩筆交易,其中第二筆交易會以明文的形式在區塊鏈上暴露私鑰。
沒有重複使用地址的 P2PKH 資金已經可以免疫量子長程攻擊,僅有的風險是在你的花費交易被區塊確認之前、 量子攻擊者反算出了你的私鑰。下圖使用了一筆承諾交易和一個時長為 100 個區塊的窗口,來防止攻擊者發動這種攻擊。
復原方法的結構也展示在圖中:

我們逐步講解這個過程:
- 在一筆初步的 “準備交易” 中放置一個 OP_Return 輸出
- 等待 100 個區塊的確認
- 創建第二筆交易,也就是 “復原交易”,它花費量子脆弱的錢幣;它本身需要提供正確的量子脆弱簽名,從而,根據舊的、量子凍結以前的規則,這筆交易是有效的
- 在第二筆交易的 OP_Return 輸出,包含前後拼接的以下字段:
- 私鑰
- 轉賬目標地址
- 準備交易的 TXID
- 準備交易的 OP_Return 輸出,應該是復原交易 OP_Return 輸出中的兩個字段的哈希值,即
SHA256(私鑰 + 轉賬目標地址)。準備交易的 TXID 無法包含在這個承諾哈希值中,這是顯然的,不過也不必要就是了。
這種復原方案將需要一套非常複雜的協議升級。這套協議升級需要指定,後面這筆復原交易,僅在該交易的 OP_Return 輸出中的所有細節、都跟至少得到了 100 個區塊確認的某筆交易的哈希承諾完全匹配;並且該復原交易還帶有有效的簽名,才是有效的。如果復原步驟沒有正確完成,資金就仍是凍結狀態。因為復原交易依然帶有一個有效的量子脆弱簽名,所以這筆交易在量子凍結以前的規則下也是有效的。因此,這套升級也許可以是軟分叉(而不是硬分叉)。使用這種方法,花費者證明了自己在簽名發送到區塊鏈之前就知道了私鑰,所以是量子安全的。
這種方案並不完美,而且只能使用一次。一旦你將私鑰以明文形式在區塊鏈上公開,那就人人都知道了,而且任何人都能在等待 100 個區塊之後拿走任何剩餘的資金。此外,只要復原交易沒能在廣播之後的 100 個區塊內確認,資金就可以被幾乎任何人偷走。換句話說,如果礦工們可以審查這筆交易長達 100 個區塊的時間,那麼他們就能偷走資金。我們不是在鼓吹這一種方案,只是把它當成一種演示:如何用相對簡單的原語構造出一種抗量子的復原方案(本質上,這裡只使用了哈希函數)。另一方面,升級協議、開發能夠處理這個流程的錢包、告知用戶有這種復原方法,可能是非常困難的事情。
還有一個問題是地址複用。P2PKH 輸出們的公鑰可能已經暴露在區塊鏈上,只要它的地址已經不是第一次使用。如果允許這種復原方案,那麼只要有地址複用,量子攻擊者就一樣能盜竊用戶的錢幣,那麼凍結就沒有效果了。規避這種情形的一個辦法是隻允許未曾重複使用的地址應用這種復原方法。但是,這就可能會給節點造成一個很大的負擔,因為它們需要遍歷比特幣的整個歷史來檢查一筆復原交易的有效性。那麼,在這種情況下,剪枝節點(pruned nodes),將無法檢查復原交易的有效性。
種子詞承諾方法
值得一提的是,許多人都使用 12 詞或者 24 詞的種子詞組來生成錢包、保管比特幣。比如說,他們會使用 BIP-39 種子詞標準。為了從這個有序的詞組得出錢包的種子,需要使用一種基於口令(password)的密鑰派生函數。這裡面涉及 SHA512 哈希函數,因此是量子安全的(至少就目前所知)。因此,雖然一臺量子計算機理論上可以在區塊鏈上看到你的公鑰,然後使用量子魔法反算出你的私鑰,但它完全無法一直倒推出你那有序的 12 詞詞組。
因此,有一種想法是,從 12 詞詞組得出主私鑰的過程是量子安全的,那麼,通過發佈種子詞詞組來花費也就是量子安全的。這也要分兩步走:一筆 “準備交易” 和一筆 “復原交易”。這種方法,甚至在公鑰已經在鏈上暴露的情形(比如地址複用和 Taproot 輸出)中也可以使用。
這種復原方法的結構見下圖:

各步驟如下:
- 在一筆初步的 “準備交易” 中放置一個 OP_Return 輸出
- 等待 100 個區塊的確認
- 創建第二筆交易,也就是 “復原交易”,它花費量子脆弱的錢幣;它本身需要提供正確的量子脆弱簽名,從而,根據舊的、量子凍結以前的規則,這筆交易是有效的
- 在第二筆交易的 OP_Return 輸出,包含前後拼接的以下字段:
- 有序的 12 詞種子詞
- 錢包派生路徑
- 轉賬目標地址
- 準備交易的 TXID
- 準備交易的 OP_Return 輸出,應該是復原交易 OP_Return 輸出中的三個字段的哈希值,即
SHA256(種子詞 + 派生路徑 + 轉賬目標地址)。如前所述,準備交易的 TXID 無法包含在內
這種方案跟前述的 “承諾-復原方案” 有許多缺點是一樣的,只不過,在上述方案之外允許此種方案,有希望復原更多錢幣。
QDay 前承諾方法
這種基於承諾的復原系統甚至能用來複原在量子計算機面前最脆弱的 P2PK 輸出 —— 這種腳本的公鑰在它收到資金(這個輸出創建)的那一刻就暴露了,那時候甚至都還沒有種子詞標準。下圖展示了這種方法:

這種方法的奇特的地方是,準備交易要在 QDay(量子計算機成熟的那天)之前發佈到區塊鏈上。因此,我們可以假設,只有資金的當時的合法主人才知道它的私鑰。這種復原方案聽起來有點滑稽,因為跟前面提到的復原系統不同,它要求資金的主人在 QDay 之前就採取行動;但是,如果主人可以在 QDay 之前就採取行動,那資金完全可以轉移到一個量子安全的輸出中。畢竟,將資金轉移到一個量子安全的輸出應該比構造準備交易容易得多。
但是,這種復原方案可能對中本聰(或者說,那個在 2009 年獲得了絕大部分挖礦產出的人)特別有用。中本聰可以在 QDay 之前構造準備交易。人們將不會知道這是中本聰在做什麼,因為我們只能看到一筆普普通通的交易,在表面上跟中本聰的錢幣無關,只是帶有一個 OP_Return 輸出(攜帶了 256 比特的數據)。這樣一來,關於是否動用了這些古老的錢幣,中本聰就可以保持合理推諉能力,但是,卻能在 QDay 之後,以量子安全的花費方式找回這些錢幣,只要 TA 願意。當然,這是在假設中本聰對此感興趣。
甚至,我們可以創造這樣一種方案:承諾交易所攜帶的這個 256 比特的承諾是一棵巨大的默克爾樹的默克爾根哈希值,帶有數千個量子脆弱輸出的復原條件。因此,只要一個 OP_Return 輸出中的一個 256 比特的哈希承諾,就可以用來在日後復原數千個輸出(可能帶有成百上千個 BTC)。 在這種情況下,復原交易將帶有一個體積非常巨大的 OP_Return 輸出,因為需要提供從葉子到默克爾根的路徑。(幸運的是,現在體積巨大的 OP_Return 輸出在網絡中也能轉發了)。這種默克爾根方法也能緩解在 QDay 之前大家匆匆製作承諾交易而帶來的區塊鏈擁堵。
零知識證據種子詞方法
上述方案都有一個致命的缺點:每個地址都只能發動一次復原操作。不過,這裡有一種東西叫做 “零知識證明(ZKP)”。 零知識證明就是說,在你證明一些事情的時候,依然讓這個過程的一些信息保密。比如說,一個零知識證據可以用來證明你擁有一個種子詞(它生成了一個地址,並且可以生成對應的電子簽名),但依然讓這個種子詞保密。雖然許多 ZKP 方案是量子脆弱的,但有一些,比如 STARK,是量子安全的。
這種 ZKP 方法如下圖:

這種方案的一個關鍵有點是,使用一個零知識證據的時候,種子詞本身並沒有暴露,因此在這種方案中,同一個地址可以多次使用 ZKP 花費(復原)。這樣一來,就不需要兩筆交易(準備交易 + 復原交易)了,只需要一筆交易就可以了。這種 ZKP 方法只對種子詞有用,不能用在 “承諾-復原方案” 中,因為量子脆弱的簽名依然需要發佈到鏈上,這樣交易才是有效交易,所以私鑰是必然會被量子計算機反算出來的。
這種方法還有一個好處:比特幣人不需要在 QDay 之前移動資金。這種新的花費方式 —— 在 OP_Return 輸出中攜帶一個零知識證據,證明花費者擁有種子詞 —— 可以在 QDay 之後被當成一種新的花費方法。人們可以繼續正常使用自己的錢包,直到凍結;然後升級錢包軟件、添加 ZKP 輸出、繼續花費自己的錢幣。在 QDay 之後,人們可以根據自己的需要,逐步將自己的資金轉移到花費效率比 ZKP 更高的輸出中(比如使用 SPHINCS+ 哈希函數簽名的輸出)。但關鍵是:在 QDay 之前,你不需要為遷移而焦慮。
這種 ZKP 方法的另一個可能的好處在於,隱私性可以提升 —— 發佈種子詞會揭曉一個錢包的所有過往交易記錄。而使用 ZKP ,已經被花費的輸出可能不會被關聯到復原資金。
這種方法的重大缺點在於:並不是每個人都使用種子詞來生成自己的錢包。不過,種子詞錢包已經極為普及超過 10 年時間了。
結論
這些復原方案表明,在理論上,如果我們真的想,我們可以構造出一種量子凍結方案,使得幾乎每一個接近凍結狀態的錢幣都有可能找回。支持多種復原選項可以增加找回錢幣的概率。比如說,ZKP 種子詞復原方法對有種子詞的錢包有效;而如果一個錢包沒有種子詞,那麼可以使用 承諾-復原 方法。這可能已經覆蓋了絕大多數的錢幣。只有既沒有使用種子詞,公鑰又已經暴露的錢幣,才會完全無法復原。下表列舉了當前各種腳本類型所持有的錢幣面額,並附帶了可以應用的復原方案。
| 輸出類型 | 錢幣面額 | 供給量佔比 | 可能的凍結緩解選項 |
|---|---|---|---|
| P2WPKH | 8,011,484 | 40.1% | 承諾-復原方案,種子詞承諾方案 以及 ZKP 種子詞方案 |
| P2PKH | 4,709,800 | 23.6% | 承諾-復原方案,種子詞承諾方案 以及 ZKP 種子詞方案 |
| P2SH | 4,045,377 | 20.3% | 承諾-復原方案,種子詞承諾方案 以及 ZKP 種子詞方案 |
| P2WSH | 1,296,835 | 6.5% | 承諾-復原方案,種子詞承諾方案 以及 ZKP 種子詞方案 |
| P2PK | 1,716,419 | 8.6% | QDay 前哈希承諾 |
| Taproot | 196,292 | 1.0% | 種子詞承諾方案 以及 ZKP 種子詞方案 |
| 新的量子安全輸出 | 0 | 0.0% | 不需要復原 |
| 總計 | 19,976,207 | 100.0% |
數據來源:https://dune.com/murchandamus/bitcoins-utxo-set
這些可能的後量子 凍結-復原 系統各有缺點。比如它們可能很複雜、要求巨大的軟分叉協議升級、可能給節點運營者帶來麻煩(可能出現新的 DoS 漏洞)。不過,如果我們真的要凍結,至少這些復原方案是真的考慮的。起碼,是一種有趣的思想實驗吧。
(完)





