比特幣開發者應該學習同源密碼學(下)

作者:condution

來源:https://conduition.io/cryptography/isogenies-intro/

譯者:Kurt Pan

原文出版於 2026 年 3 月。

前篇見此處

舊技巧,新密碼學

雖然我們可以花很多時間探索 SQIsign、PRISM、SIDH 的內部工作原理以及同源密碼學底層的數學證明,但這對本文的核心論點並非必要。請記住:我試圖論證的是比特幣人應該學習基於同源的密碼學並向其投入資源。我們該切入正題了。

現在我們對基於同源的密鑰對和簽名方案如何工作有了一些理解,我們已經看到了如何攻擊它們以及如何證明安全。我們知道了基本規則。

終於可以討論同源如何替代比特幣上常用的經典 ECC 技巧了。

可以重隨機化的公鑰

也許令人驚訝的是,比特幣生態中使用的許多高層密碼學構造,都可以抽象為一個更簡單的構建模塊,叫做 “可以重隨機化 的公鑰方案”,該方案可以用 IBC 方案實例化(並且已經有這樣的案例)。

可重隨機化公鑰方案 是一種公鑰密碼系統,我們有以下算法:

  • $\text{KeyGen}(sk) \to pk$ 生成一個密鑰對。
  • $\text{RerandomizePublic}(pk, r) \to pk’$,其中 $r$ 是隨機鹽。
  • $\text{RerandomizeSecret}(sk, r) \to sk’$,其中 $r$ 是隨機鹽。

對於可重隨機化公鑰方案的 正確性,給定 $pk = \text{KeyGen}(sk)$,我們需要:

$$\text{KeyGen}(\text{RerandomizeSecret}(sk, r)) = \text{RerandomizePublic}(pk, r)$$

用白話說:重隨機化的私鑰必須正確地對應於其公鑰的重隨機化。

構造一個 正確 的可重隨機化公鑰方案是容易的。只需定義 $\text{RerandomizeSecret}(sk, r)$ 輸出一個從 $sk$ 和 $r$ 派生的隨機私鑰,然後定義 $\text{RerandomizePublic}(pk, r) := \text{KeyGen}(\text{RerandomizeSecret}(sk, r))$ 。

但顯然這不會是安全的。任何知道 $pk$ 和 $r$ 的對手都可以重新派生出重隨機化的私鑰,從而簽名消息。

為了獲得完全的隱私和安全性,我們還需要 不可鏈接性(unlinkability)和 不可偽造性(unforgeability)這兩個屬性。

  • “不可鏈接性”意味著重隨機化的密鑰與獨立生成的隨機密鑰不可區分,除非你知道用於重隨機化密鑰的鹽 $r$。
  • “不可偽造性”意味著攻擊者無法為重隨機化的公鑰偽造簽名,除非他們也知道私鑰(本身可能重隨機化過)。

動機

重隨機化概括了比特幣中使用的許多密碼學技術的本質:

技術重隨機化等價物
Taproot 密鑰調整(BIP341)$\text{RerandomizePublic}(pk, H(pk, m)) \to pk’$,其中 $m$ 是 Merkle 樹的 Merkle 根。重隨機化後的公鑰 $pk’$ 是對 $m$ 的一個隱藏且綁定的承諾,可以通過揭示 $(pk, m)$ 來打開。
強化(秘密)子密鑰派生(BIP32)$\text{RerandomizeSecret}(sk, H(sk, c, i)) \to sk’$,其中 $c$ 是鏈碼(偽隨機鹽),$i$ 是一個 32 位整數。重隨機化後的私鑰 $sk’$ 是一個子密鑰,只有在你知道父私鑰 $sk$ 和鏈碼 $c$ 的情況下才能派生。
非強化(公開)子密鑰派生(BIP32)$\text{RerandomizePublic}(pk, H(pk, c, i)) \to pk’$,其中 $c$ 是鏈碼(偽隨機鹽),$i$ 是一個 32 位整數。重隨機化後的公鑰 $pk’$ 是一個子密鑰,只有在你知道父公鑰 $pk$ 和鏈碼 $c$ 的情況下才能派生。

這種可重隨機化公鑰方案的通用性使我們得出結論:只要我們能使用同源實例化一個正確、不可鏈接且不可偽造的重隨機化系統,那我們就立即讓 BIP32、BIP341 密鑰調整以及(附帶一些條件的)BIP352 靜默支付有了後量子繼承者。

先前工作

經典 ECC 實現(包括在比特幣中)通常按如下方式實例化重隨機化:

  • 設 $G$ 為素數階 $n$ 的橢圓曲線的基點
  • 構造一個抗碰撞哈希函數 $H_n: {0, 1}^* \to \mathbb{Z}_n$,將任意輸入映射為模 $n$ 的整數
  • 給定 $sk \leftarrow \mathbb{Z}_n$,定義 $\text{KeyGen}(sk) := sk \cdot G$
  • 給定 $pk = \text{KeyGen}(sk)$ 和
    • 定義 $\text{RerandomizeSecret}(sk, r) := sk + H_n(r)$
    • 定義 $\text{RerandomizePublic}(pk, r) := pk + H_n(r) \cdot G = (sk + H_n(r)) \cdot G$

雖然在後量子格密碼學背景下已有一些關於可重隨機化密鑰的工作,但該技術總是受制於格密碼公鑰的不靈活的結構。試圖為格密碼密鑰對引入結構似乎會妨礙密鑰和簽名的緊湊性。例如,這篇近期論文(也可參見這篇配套博客文章)給出了一種可重隨機化簽名方案並將其用於非強化 BIP32 密鑰派生,但代價是 16kb 的公鑰和 20kb 的簽名(比 ML-DSA 大 8 倍以上)。

對於格密碼來說,密鑰重隨機化還影響安全性,需要我們施加使用限制:

備註 2. 雖然使用 Raccoon-G 的構造允許公鑰重隨機化,但這會增加密鑰的噪聲並改變簽名的分佈。這影響了簽名分佈可以被論證為不可區分的最大深度,這是不可鏈接性論證的一部分。可以考慮一種 “混合” 方法,即限制每個用 $\text{DetKeyGen}$ 生成的公鑰的非強化派生次數。

同源重隨機化

我們可以用同源實現高效且安全的後量子重隨機化。

設 $\varphi: E_0 \to E$ 為從基礎曲線 $E_0$ 映射到公鑰曲線 $E$ 的秘密同源。

設 $\mathcal{H}(E, r)$ 為一個哈希函數,返回一個以 $E$ 為定義域(輸入曲線)的均勻隨機同源。

要在不知道私鑰的情況下重隨機化公鑰曲線 $E$ —— 給定隨機鹽 $r$,我們派生一個同源 $\psi = \mathcal{H}(E, r)$,它將 $E \to E’$,並使用餘域(輸出)曲線 $E’$ 作為更新後的公鑰。相當簡單。事實上,SQIsign 在其簽名和驗證的 Fiat-Shamir 變換中每次生成挑戰同源 $\phi_{\text{chl}}$ 時,做的幾乎正是這件事。

重隨機化私鑰同源 $\varphi$ 則更微妙。給定鹽 $r$,我們可以重新派生同源 $\psi = \mathcal{H}(E, r)$。因為我們知道公鑰的自同態環 $\text{End}(E)$ 和同源 $\psi: E \to E’$,我們可以計算 $\text{End}(E’)$。同時,由常識知道 $\text{End}(E_0)$,我們現在可以找到一個秘密同源 $\varphi’: E_0 \to E’$,這就是我們的新私鑰。

一個關於同源的有用一般性事實:如果你知道從任一曲線 $E_1$ 到任何另一曲線 $E_n$ 的同源路徑,即使該路徑涉及其他曲線 $E_2, E_3, E_4, \ldots$ 之間的許多中間同源,只要你知道路徑上至少某一條曲線的自同態環(不一定是第一條或最後一條曲線的),就相對容易計算一個直接從 $E_1$ 到 $E_n$ 的新的簡潔同源。

更具體地說:

  • 定義 $\text{KeyGen}(\varphi) := \text{Codomain}(\varphi)$
  • 定義 $\text{RerandomizePublic}(E, r)$:
    • 計算 $\psi = \mathcal{H}(E, r): E \to E’$
    • 返回 $E’ = \text{Codomain}(\psi)$
  • 定義 $\text{RerandomizeSecret}(\varphi, r)$:
    • 計算 $E = \text{KeyGen}(\varphi)$
    • 利用 $\text{End}(E_0)$ 和 $\varphi$ 計算 $\text{End}(E)$
    • 計算 $\psi = \mathcal{H}(E, r): E \to E’$
    • 利用 $\text{End}(E)$ 和 $\psi$ 計算 $\text{End}(E’)$
    • 利用 $\text{End}(E_0)$ 和 $\text{End}(E’)$ 計算 $\varphi’: E_0 \to E’$
    • 返回 $\varphi’$

正確性很容易看出。通過重隨機化 $\varphi$ 所生成的公鑰與通過重隨機化原始公鑰 $E$ 所找到的曲線 $E’$ 相同。

$$\text{KeyGen}(\text{RerandomizeSecret}(\varphi, r)) = \text{RerandomizePublic}(E, r)$$

性質

基於同源的 $\text{ReRandomizePublic}$ 算法快速且更容易實現,因為我們只需要生成一個偽隨機同源並計算其餘域,這是一個具有現成高效算法的已知任務。技術上講,我們甚至不需要求出這個同源。

$\text{ReRandomizeSecret}$ 更為複雜且計算開銷更大,但最終仍是多項式時間的。我不知道實際速度如何,但根據 SQIsign 的性能推測,可能在毫秒量級。

安全性

這種技術已在幾篇論文中被描述,例如這篇(第 3 頁)和這篇(僅限有向同源,第 10 頁),儘管總是在加密上下文中而非簽名方案中。不過該概念同樣適用於簽名密鑰。

證明不可鏈接性需要證明 $\text{RerandomizePublic}(E, r)$ 所得的更新曲線 $E’$ 與超奇異橢圓曲線的均勻隨機分佈不可區分。細節開始變得更加重要,例如所使用同源的度。雖然我不是密碼學家,但我相信如果使用超奇異同源圖論的事實,這是一個容易的證明。SQIsign 已經證明了關於挑戰曲線分佈的類似事實。證明不可偽造性將取決於你所選擇的簽名方案。

儘管如此,鑑於這種技術的新穎性以及在文獻中相對罕見,在現實世界中依賴它之前,還有安全性證明工作要做。缺乏可用的實現意味著我們無法評估性能。所有這些都是未來的開放性工作。

示例

為了舉例,設想我們身處一個 SQIsign 和/或 PRISM 驗證算法已在比特幣共識中標準化的世界。

BIP32 HD 錢包

確定性層級式(HD)錢包可以像今天一樣運作,從一個人類可讀的種子派生出單個主秘密同源 $\varphi_m: E_0 \to E_m$ 和主鏈碼 $cc_m$:

$$(\varphi_m, cc_m) = H(\text{seed})$$

強化子密鑰可以通過重隨機化主密鑰來派生,使用 $cc_m$、子索引 $i$ 和私鑰本身作為鹽,如 BIP32 的 CKDpriv

$$(r, cc_i’) = H(\varphi_m, cc_m, i)$$

$$\varphi_i’ = \text{RerandomizeSecret}(\varphi_m, r)$$

非強化子密鑰可以通過重隨機化主密鑰來派生,使用 $cc_m$、子索引 $i$ 和公鑰作為鹽,如 BIP32 的 CKDpub

$$(r, cc_i) = H(E_m, cc_m, i)$$

$$\varphi_i = \text{RerandomizeSecret}(\varphi_m, r)$$

擁有擴展公鑰 $(E_m, cc_m)$ 的觀察者可以派生非強化子公鑰:

$$(r, cc_i) = H(E_m, cc_m, i)$$

$$E_i = \text{RerandomizePublic}(E_m, r)$$

結果是經典 BIP32 HD 錢包的幾乎完全的直接替代方案,應該具有量子安全性,代價是較慢的密鑰派生。

BIP341 密鑰調整

未來某天,如果我們對同源密碼學有了更多信心,可以考慮一種升級,在裸公鑰輸出中隱藏對腳本樹的基於同源的承諾,就像今天 Taproot 的工作方式一樣。

鏈上發佈的裸公鑰將是一條橢圓曲線 $E^\prime$(大約 66 字節)。對於鏈上觀察 $E^\prime$的任何人來說,它看起來是隨機選擇的且不透明的。密鑰持有者可以通過發佈一個在 $E^\prime$ 下驗證通過的簽名來執行密鑰路徑花費:PRISM、SQIsign 或當時標準化的任何方案。

或者,花費者可以不公佈裸簽名,而是揭示第二條曲線 $E$(我要特意稱之為 內部密鑰 )和一個 Merkle 樹根 $m$,使得

$$E’ = \text{RerandomizePublic}(E, m)$$

Merkle 樹根 $m$ 現在可以用來證明該 UTXO 也承諾了某些之前被隱藏的花費條件,如時間鎖、多籤或限制條款腳本,這就是所謂的 腳本路徑花費。所有這些都與今天 BIP341 Taproot 地址的工作方式密切類似。

但也有一些複雜之處。目前沒有基於同源的等價物來替代某些 Taproot 地址用來禁用密鑰路徑花費的 “Nothing-Up-My-Sleeve”(NUMS)點。到目前為止,還沒有人找到一種透明算法來生成具有未知自同態環的超奇異橢圓曲線 —— 即 NUMS 曲線

校對注:Nothing-Up-My-Sleeve 的字面意思是魔術師在開展魔術之前向觀眾展示自己的袖子,證明自己沒有在袖子裡面藏東西。用到密碼學裡面,就取這個 “沒有藏東西” 的意思:一個數值是用透明的方式生成的,而不是出於某種不可告人的目的而精心構造的。比如,BIP 341 Taproot 花費驗證規則就定義了一個 NUMS 點(公鑰),該點的 x 座標值是 secp256k1 曲線生成元 G 的未壓縮編碼的哈希值。

如果相關方可以交互,他們可以運行一個生成 NUMS 曲線的多方協議,從起始曲線 $E_0$ 走到某條最終曲線 $E_n$,每個 $n$ 參與方貢獻一箇中間同源 $\phi_i: E_{i-1} \to E_i$,並且——為了安全性——提供一個簡單的證明表明他們知道 $\phi_i$。每個參與方承諾在儀式結束後忘記其同源 $\phi_i$。

任何參與了設置儀式的誠實代理都能確信所得到的曲線確實不可花費,因為,只要任何一個參與方確實誠實地擦除了他們的貢獻同源,那麼就不存在從 $E_0$ 到 $E_n$ 的已知路徑,因此 $\text{End}(E_n)$ 也是未知的。然而,這個協議要求所有相關方參與儀式,即使是異步的,這在實踐中可能很麻煩。

比特幣社區可以像以太坊社區那樣舉行 Perpetual Powers-of-Tau 儀式,產生某種不斷演變的半可信規範 NUMS 曲線集合,通過類似 OpenTimestamps 的方式定期承諾到區塊鏈上。不過理想情況下,我們會更希望有更透明且可復現的方案。

這裡有一篇 2024 年的論文調查了將任意輸入哈希成隨機(NUMS)超奇異橢圓曲線的各種嘗試。

靜默支付

靜默支付在概念上工作如下:

  • Bob 在網上某處(社交媒體、GitHub 等)發佈一個包含公鑰 $B$ 的靜態 靜默支付 地址。
  • Alice 看到 $B$ 並想在不與 Bob 交互的情況下向他匯款。
  • Alice 有一個 UTXO 在使用公鑰 $A$ 的地址上。
  • 已知自己的私鑰 $a$ ,Alice 使用她的密鑰和 Bob 的密鑰之間的 Diffie-Hellman 密鑰交換計算一個共享密鑰 $ss$。
  • Alice 重隨機化 Bob 的公鑰 $B’ = \text{RerandomizePublic}(B, ss)$ 並將幣發送到 $B’$。
  • Bob 通過暴力搜索掃描區塊鏈以尋找對其靜默支付地址的付款,為每筆可能是靜默支付的交易計算共享密鑰。
  • 最終 Bob 測試 Alice 的交易,計算相同的共享密鑰 $ss$,並發現其派生密鑰 $B’ = \text{RerandomizePublic}(B, ss)$ 匹配 Alice 交易中的一個輸出。

雖然從概念上講,用同源實現這種效果是可能的,但比我們之前看到的其他例子困難得多。如我們所見,重隨機化部分是可能的,但在保持雙方隱私的同時就共享密鑰達成一致很難做到。

IBC 世界中確實存在許多安全的密鑰交換協議——參見 CSIDHPOKEQFESTA 等——但這些密鑰交換都不直接兼容 SQIsign 或 PRISM 公鑰。

要就 Bob 控制的隨機化密鑰達成一致,Alice 和 Bob 必須交換信息。Bob 通過傳達他的靜默支付地址開始對話。這發生在鏈下,所以它幾乎可以是我們想要的任何東西,在合理範圍內可以相當大——只要它能放入二維碼。例如,這可以是一個 66 字節的 PRISM 公鑰加上一個 64 字節的 CSIDH-512 公鑰,總共 130 字節。

Alice 看到 Bob 的 CSIDH 密鑰後可以輕鬆計算共享密鑰,因為 CSIDH 密鑰交換是非交互式的。但 Alice 如何將她的 CSIDH 公鑰傳達給 Bob? 沒有它,Bob 無法計算共享密鑰,也無法識別 Alice 的付款。

Alice 可以將她的 64 字節 CSIDH 公鑰附在鏈上,在她給 Bob 的支付交易中,例如通過 OP_RETURN 或銘文信封。然而這對雙方的隱私都不利,因為鏈上觀察者現在可以啟發式地將 Alice 的付款識別為靜默支付交易——儘管他們無法證明 Bob 是接收者。

Alice 可以在鏈下將她的 CSIDH 公鑰發送給 Bob,但如果 Alice 能在鏈下與 Bob 通信,為什麼不直接向 Bob 索取一個他自己選擇的新地址呢?這也會危及 Alice 的網絡層隱私 —— Alice 可能更不希望通過互聯網連接到 Bob,因為擔心 Bob 通過 IP 地址追蹤她。

在理想世界中,應該有某種方法創建混合密鑰對,使得密鑰同時編碼有效的密鑰交換公鑰 有效的簽名公鑰。這樣的系統確實存在;有與 CSIDH 密鑰互操作的簽名方案,但這些方案通常性能較差,簽名比 SQIsign 和 PRISM 大得多。這裡有一篇前沿論文可能有助於彌合這一差距。或者,也許有某種方法讓 Alice 在她的簽名中嵌入一個只有 Bob 能提取的 CSIDH 公鑰。到目前為止,這個問題仍然難以捉摸。

另一個問題是性能。要使這個系統完全工作,Bob 必須能夠掃描每個區塊中的每筆候選交易以識別付款。CSIDH 密鑰交換的優化工作已經做了很多,但執行一次仍需要數十到數百毫秒,取決於硬件。對於發送者 Alice 來說這沒什麼大不了的 —— 她只需要運行一次密鑰交換 —— 但 Bob 可能需要重複這個密鑰交換數千次來識別付款,除非發送者給他提供某些額外的提示。

缺點

如果不承認 IBC 現有技術的侷限性,我就太天真了。

首先也是最重要的,驗證性能不太好。雖然近年來已有很大改善,但 SQIsign 的驗證算法仍然需要相當大的計算能力,即使是優化過的代碼也需要超過一毫秒來驗證單個簽名。這在一定程度上可以通過並行化來抵消,但仍然肯定是同源密碼學的阿基里斯之踵。

另一點值得注意的是,SQIsign 的簽名是可以熔鑄的(malleable):

請注意,SQIsign 不以強不可偽造性安全為目標,實際上給定一個消息上的有效簽名,可以通過操縱輔助同源(auxiliary isogeny)高效地生成同一消息上第二個不同的有效簽名。用任何其他相同度的同源替換輔助同源都會產生有效簽名。輔助同源在簽名中的作用僅僅是使響應能夠以二維方式表示,但它不對協議的安全性做出貢獻。換言之,二維表示本質上不是唯一的:給定這樣一個表示,在大多數情況下很容易找到同一同源的不同表示。因此,SQIsign 無法實現強不可偽造性。

—— SQIsign NIST 提交文檔,第 93 頁

我相信 PRISM 也是如此,因為 PRISM 簽名也是用二維同源表示以實現緊湊性。

然而,這不應影響閃電網絡等二層協議,因為如今簽名僅包含在見證數據中,不影響 TXID 的計算。

雖然我一直在讚揚 IBC 密碼學靈活性的前景,但 IBC 景觀中仍然缺乏的一個東西是緊湊的多籤方案。雖然存在一些基於同源的多籤方案,如 CSI-SharK,但它們遠不如 SQIsign 和 PRISM 那樣空間高效。

如前所述,在同源環境下生成有效的 NUMS 公鑰似乎很困難。我們可以做多方設置儀式,但如果能像今天通過哈希找到 NUMS 曲線點那樣,簡單地哈希找到 NUMS 超奇異曲線就好了。

最後,還得承認 IBC 的認識門檻。與更基礎的東西如基於哈希的簽名相比,同源密碼學對於非訓練有素的數學家來說有著非常高的入門門檻。我自己是一名經驗豐富的密碼學開發者和工程師,但在過去幾個月裡,由於缺乏必要的數學背景,我一直在努力理解 IBC。相比之下,基於哈希的簽名簡直是小菜一碟。

這個問題似乎源於缺乏對初學者友好的教育資源。我找到的大多數信息都在學術論文和長達一小時的錄像 PPT 演示中。

結論

關於同源密碼學的大部分信息仍然隱居在數學學術界的象牙塔中。我希望這篇文章能提供一個更易接近、更直觀的窗口來窺探這個世界。

致任何正在閱讀的專業同源研究者:如果我不小心遺漏了任何不準確之處,我深表歉意。為了減少冗長,我有些東西沒有說。請聯繫我糾正任何嚴重錯誤!我很樂意與你交流。

既然我們已經看到了同源密碼學能做些什麼,我希望你能理解為什麼我如此命名這篇文章。如果你關心大型量子計算機出現後比特幣的未來,你應該至少將你的一部分資源用於學習哪些系統可能有朝一日取代經典 ECC,而我相信同源在這裡領先於其他競爭者。

更明確地說,我的論點是:

  • 依賴經典 ECC 特性的比特幣企業應該花錢研究如何用量子安全的替代方案替換這些特性。你能把它 同源化 嗎?
  • 比特幣開發者應該學習同源,這樣他們有朝一日就能編寫使用同源密碼學的安全軟件。
  • 比特幣二層協議工程師應該考慮更長遠。不要花數年時間構建基於 ECC 的協議,只等量子計算機在十年或二十年內將其全部摧毀。要構建一些至少有機會比你活得更久的東西。
  • 比特幣核心開發者應該思考,在 ECC 消亡後,我們希望使用什麼密碼學作為未來鏈上花費的長期擴展和表達力的基礎。正如許多讀者所知,我喜歡 SLH-DSA,我認為它是一個很好的後備和權宜之計,但從長遠來看,我們可以做得更好。
  • 比特幣風險資本投資者應該思考他們所資助公司的未來。未來幾年創立的初創公司可能是第一代直接受量子計算影響的未 IPO 的比特幣公司,或者至少是第一批被量子 FUD 嚴重拖累的公司。如果一個 CEO 沒有可靠的量子計算應對計劃,你應該持懷疑態度。
  • 比特幣託管機構如 Coinbase、Fidelity、Gemini、Anchorage 等應該資助研究其複雜的離線和多籤託管模型的安全後量子替代方案。如果一個 CRQC 持有者決定開始攻擊比特幣,這些公司的錢包將是攻擊清單上最優先的目標。他們損失最大,也最有動力投資於構建可擴展的後量子安全錢包。
  • 比特幣用戶應該對我們可能高效替代經典 ECC 的可能性垂涎三尺。我們可以保留多年來習慣的大部分好東西,而代價與花在量子計算研發上的數十億美元相比微不足道。

作為一名專注於替代經典 ECC 的自由比特幣研究員,我知道這可能聽起來像是在找人請我吃午飯,但我說的不一定是我自己和我自己的工作。當然如果你有興趣,儘管聯繫我

我說的是人類的腦力,以及激勵許多聰明人集中精力的金錢。今天的比特幣行業是一股不可忽視的力量,儘管社區可能是碎片化的,但我們的集體資源是巨大的。如果我們調動這些資源並在最具槓桿效應的地方施加壓力,我完全有信心比特幣能夠且將會在即將到來的密碼分析突破中存活下來。

眾所周知,早期投資新型強大技術的人承擔最大的風險,但也獲得最多的回報。

關於同源的其他資料

(完)

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論