本文對 Schnorr/ECDSA 適配器簽章與跨鏈原子交換的原理進行了詳細描述。

原文:Adaptor Signatures and Its Application to Cross-Chain Atomic Swaps

作者: mutourend,lynndell

出品:Bitlayer 研究組

1. 引言

隨著比特幣 Layer2 擴容方案的快速發展,比特幣與其 Layer2 對應網路之間的跨鏈資產轉移頻率顯著增加。這一趨勢受到 Layer2 技術(如 Bitlayer)所提供的更高可擴展性、更低的交易費和高吞吐量的推動。這些進步促進了更有效率、更經濟的交易,從而促進比特幣在各種應用中的更廣泛採用和整合。因此,比特幣與 Layer2 網路之間的互通性正成為加密貨幣生態系統的關鍵組成部分,推動創新,並為用戶提供更多多樣化和強大的金融工具。

如表 1 所示,比特幣與 Layer2 之間的跨鏈交易有三個典型方案,分別為中心化跨鏈交易、BitVM 跨鏈橋和跨鏈原子交換。這三種技術在信任假設、安全性、便利性、交易額度等方面各不相同,能滿足不同的應用需求。

表 1. 跨鏈交易技術對比

中心化跨鏈交易:用戶首先將比特幣支付給中心化機構(如專案方或交易所),則中心化機構在 Layer2 網路上將等值資產支付到用戶指定的地址,從而完成跨鏈資產轉移。這種技術的優點在於速度快,撮合過程相對容易,因為中心化機構可以迅速確認並處理交易。然而,這種方法的安全性完全依賴中心化機構的可靠性和信譽。如果中心化機構遭遇技術故障、惡意攻擊、違約,則使用者的資金面臨較高的風險。此外,中心化跨鏈交易也可能洩漏用戶隱私,需要用戶在選擇這種方法時慎重考慮。因此,儘管其便利性和高效性為用戶提供了極大的便利,但安全性和信任是中心化跨鏈交易面臨的主要挑戰。

BitVM 跨鏈橋:此技術相對複雜。首先,在 Peg-in 階段,用戶將比特幣支付給 BitVM 聯盟控制的多簽位址,實現比特幣鎖定。在 Layer2 鑄造出對應數量的通證,並用該通證實現 Layer2 交易與應用。當使用者銷毀 Layer2 通證時,由 Operator 墊付。隨後,Operator 到 BitVM 聯盟控制的多簽池子中報銷對應數量的比特幣。為防止 Operator 作惡,報銷過程採用樂觀挑戰機制,即任意第三方均可對惡意報銷行為發起挑戰,挫敗作惡行為。該技術引入了樂觀挑戰機制,所以技術相對複雜。此外,樂觀挑戰機制涉及大量的挑戰與回應交易,交易費較高。因此,BitVM 跨鏈橋僅適用於超大額交易,類似於 U 的增發,因此使用頻率較低。

跨鏈原子交換:原子交換是一種實現去中心化加密貨幣交易的合約。在這種情況下,「原子」意味著一種資產所有權的變更實際上意味著另一種資產所有權的變更。此概念於 2013 年由 TierNolan 在 Bitcointalk 論壇上首次提出。 4 年來,原子交換一直停留在理論領域。直到 2017 年,Decred 和 Litecoin 成為第一個成功完成原子交換的區塊鏈系統。原子交換必須涉及兩方,而任何第三方不能中斷或乾擾交換過程。這意味著該技術是去中心化的、不受審查、具有較好的隱私保護、能實現高頻跨鏈交易,從而在去中心化交易所中廣泛應用。目前,跨鏈原子交換需要 4 筆交易,一些方案嘗試將交易筆數壓縮為 2 筆,但會增加對交換雙方的即時線上要求等。最後,跨鏈原子交換技術主要包括雜湊時間鎖和適配器簽章。

基於哈希時間鎖(HTLC)的跨鏈原子交換:第一個成功實現跨鏈原子交換的項目是 Decred,利用 “哈希鎖” 和 “時間鎖”,借助鏈上腳本(或智能合約)實現了 TierNolan 提出的的原子交換。 HTLC 允許兩個用戶進行有時間限制的加密貨幣交易,即接收者必須在規定時間內(以區塊數量或區塊高度確定)向合約提交加密證明(「秘密」),否則資金將退還給發送者。如果接收者確認付款,則交易成功。因此,要求參與的兩個區塊鏈都具有「哈希鎖」和「時間鎖」功能。

雖然 HTLC 原子交換是去中心化交換技術領域的重大突破,但有以下問題。這些原子交換交易以及與它們相關的數據都是在鏈上進行的,導致用戶隱私洩漏。換言之,每次交換時,兩個區塊鏈上都會出現相同的雜湊值,且僅相隔只有幾個區塊。這意味著,觀察者可以將參與交換的貨幣聯繫起來,即在彼此靠近的區塊中找到相同的哈希值(TimeStamp-wise)。當跨鏈追蹤貨幣時,很容易確定來源。儘管這種分析不會揭示任何相關的身份數據,但第三方可以輕鬆推斷出所涉及的參與者的身份。

基於適配器簽名的跨鏈原子交換: BasicSwap 提供的第二種交換被稱為「適配器簽名」原子交換,基於 Monero 開發人員 Joël Gugger 在 2020 年發表的一篇題為" Bitcoin–Monero Cross-chain Atomic Swap }"論文。論文可說是 Lloyd Fournier 2019 年論文 One-Time Verifiably Encrypted Signatures, AKA Adaptor Signatures 的一種實作。適配器簽名是一種附加簽名,其與初始簽名相結合以顯示秘密數據,使雙方能夠同時向對方透露兩部分數據,並且是使 Monero 原子交換對成為可能的 scriptless 協議的關鍵組成部分。

與 HTLC 原子交換相比,基於適配器簽章的原子交換有 3 個優點:首先,適配器簽章交換方案取代了「秘密雜湊」交換所依賴的鏈上腳本,包括時間鎖和雜湊鎖。換言之,HTLC 交換中的秘密和秘密雜湊在適配器簽章交換中無直接對應關係。因此,在比特幣研究界被稱為「scriptless scripts 隱形腳本」。此外,由於不涉及這樣的腳本,鏈上佔用空間減少,使得基於適配器簽名的原子交換更輕量,費用更低。最後,HTLC 要求每條鏈使用相同的哈希值,而適配器簽署的原子交換中涉及的交易無法鏈接,實現隱私保護。

本文首先介紹 Schnorr/ECDSA 適配器簽章與跨鏈原子交換原理。然後,分析適配器簽章中存在的隨機數安全問題和跨鏈場景中的系統異質和演算法異質問題,並給出解決方案。最後,將適配器簽章進行擴充應用,實現非互動式數位資產託管。

2. 適配器簽名與跨鏈原子交換

2.1 Schnorr 適配器簽名與原子交換

2.2 ECDSA 適配器簽名與原子交換

2.2.1 零知識證明 zk{v | Ṽ = v ᐧ G, V = v ᐧ Y}

3. 安全問題與解決方案

3.1 隨機數問題與解

3.1.1 隨機數洩漏問題

Schnorr/ECDSA 轉接器簽章的預簽章皆對隨機數 $r$進行承諾敘述 = r ᐧ G。此外,零知識證明中對隨機數 $v$進行承諾 $Ṽ=v ᐧ G,V=v ᐧ Y$。如果隨機數洩漏,則會導致私鑰洩漏。

具體而言,在 Schnorr 協定中,如果隨機數 $r$洩漏,則能夠根據等式.

$ ŝ = r + c x.$

計算出私鑰 $x$。

同理,在 ECDSA 協議中,如果隨機數 $r$洩漏,則能夠根據等式

$ ŝ = r^{-1}(hash(m)+R_x x).$

計算私鑰出 $x$。

最後,在零知識證明協議中,如果隨機數 $v$洩漏,則能夠根據等式

$ z := v + c r.$

計算出隨機數 $r$,從而進一步根據隨機數 $r$計算出私鑰 $x$。因此,隨機數使用完後需立刻刪除。

3.1.2 隨機數重用問題

對任兩個跨鏈交易,如果適配器簽章協定使用相同的隨機數,則會導致私鑰洩漏。具體而言,在 Schnorr 協定中,如果使用了相同的隨機數 $r$,則以下方程組中僅 $r$和 $x$是未知的

$ ŝ_1 =r + c_1 x, $

$ ŝ_2 = r + c_2 x. $

因此,可以求解方程組,得到私鑰 $x$。

同理,在 ECDSA 適配器簽章協定中,如果使用相同的隨機數 $r$,則以下方程組中僅 $r$和 $x$是未知的

$ ŝ_1 = r^{-1}(hash(m_1)+R_x x),$

$ ŝ_2 = r^{-1}(hash(m_2)+R_x x).$

因此,可以求解方程組,得到私鑰 $x$。

最後,在零知識證明協議中,如果使用相同的隨機數 $v$,則以下方程組中僅 $v$和 $r$是未知的

$ z_1 = v+c_1 r, $

$ z_2 = v+c_2 r. $

因此,可以解方程組,得到隨機數 $r$,從而進一步解方程組獲得私鑰 $x$。

以此類推,不同使用者使用相同的隨機數,也會洩漏私鑰。換言之,使用相同隨機數的兩個用戶,能夠求解方程組,以獲得對方的私鑰。因此,應使用 RFC 6979 解決隨機數重複使用問題。

3.1.3 解決方案:RFC 6979

RFC 6979 指定了一種使用 DSA 和 ECDSA 產生確定性數位簽章的方法,解決了與產生隨機值 k 相關的安全性問題。傳統的 DSA 和 ECDSA 簽章依賴於每次簽章操作隨機產生的隨機數 k。如果此隨機數被重複使用或產生不當,會危及私鑰的安全性。 RFC 6979 透過從私鑰和待簽章訊息中確定性地匯出 $k$,消除了產生隨機數的需求。這確保了使用相同私鑰簽署相同訊息時,簽名總是相同的,從而增強了可重現性和可預測性。具體而言,確定性的 $k$是由 HMAC 產生的。這個過程涉及哈希函數(例如 SHA256)對私鑰、訊息和計數器計算哈希值,

$k = SHA256(sk, msg, counter).$

上述等式中,為表達簡潔,僅對私鑰 sk,訊息 msg 和計數器 counter 計算哈希值,實際 RFC 6979 中計算過程涉及更多的哈希計算。此等式確保 k 對每個訊息都是唯一的,同時對於相同的輸入具有可重現性,並且減少了與弱或受損的隨機數產生器相關的私鑰暴露風險。因此,RFC 6979 為使用 DSA 和 ECDSA 的確定性數位簽章提供了一個強大的框架,解決了與隨機數產生相關的重大安全性問題,並增強了數位簽章的可靠性和可預測性。這使其成為需要高安全性和符合嚴格操作要求的應用程式的寶貴標準。 Schnorr/ECDSA 簽章有隨機數缺陷,需要使用 RFC 6979 進行防範。因此,基於 Schnorr/ECDSA 的適配器簽章也存在這些問題,也需要使用 RFC 6979 規範來解決這些問題。

3.2 跨鏈場景問題與解決方案

3.2.1 UTXO 與帳戶模型系統異質問題與解決方案

如圖 1 所示,比特幣採用 UTXO 模型,基於 Secp256k1 曲線實現原生的 ECDSA 簽章。 Bitlayer 為 EVM 相容於 Bitcoin L2 鏈,採用 Secp256k1 曲線,支援原生的 ECDSA 簽章。適配器簽章實現了 BTC 交換所需的邏輯,而 Bitlayer 交換對應方則由以太坊智慧合約的強大功能所支撐。

基於適配器簽章的跨鏈原子交換,或至少設計用於 ECDSA 曲線的 semi-scriptless 轉接器簽章方案,與以太坊不相容。原因在於以太坊是帳戶模型的,而不是 UTXO 模型。具體而言,基於適配器簽署的原子交換中要求退款交易必須預先簽署。但是,在以太坊系統中,如果不知道 nonce,則無法預先簽署交易。因此,一方可以在預先簽名完成和交易執行之間發送交易—— 這將使預先簽署的交易無效(因為 nonce 已被使用,不能重複使用)。

此外,從隱私角度來看,這意味著 Bitlayer swap 的匿名性比 HTLC 更優(swap 的雙方都可以找到合約)。但是,由於需要一方有公開合約,使得 Bitlayer swap 的匿名性低於適配器簽章的匿名性。在沒有合約的一方,swap 交易看起來與其他交易一樣。但是,在有 EVM 合約的一方,交易明顯是為了資產 swap。雖然一方有公開合約,但即使使用複雜的鏈分析工具,也不可能將其追溯到另一​​條鏈。

圖 1. UTXO 與帳戶模型異構系統跨鏈原子交換

Bitlayer 目前支援原生 ECDSA 簽名,也可透過智慧合約實現 Schnorr 簽名驗證。如果使用原生的 Bitlayer 交易,則無法預簽原子交換中的退款交易;需要使用 Bitlayer 智能合約交易,才能夠實現原子交換。但是,該過程會犧牲隱私性,即 Bitlayer 系統中參與原子交換的交易是可追溯的,但無法追溯到 BTC 系統中的交易。在 Bitlayer 端可設計類似 Tornado Cash 之類的 Dapp 應用,為 BTC 與 Bitlayer 原子交換中 Bitlayer 端的交易提供隱私服務。

3.2.2 相同曲線,不同演算法,適配器簽章安全

如圖 2 所示,假設 Bitcoin 和 Bitlayer 皆使用 Secp256k1 曲線,但 Bitcoin 使用 Schnorr 簽名,而 Bitlayer 使用 ECDSA。在這種情況下,基於 Schnorr 和 ECDSA 的適配器簽名,是可證明安全的。假設給定 ECDSA 和 Schnorr 簽章預言機,能夠建構模擬器 S 攻破 ECDSA,則僅給定 ECDSA 簽章預言機,能夠建構模擬器 S 攻破 ECDSA。但是,ECDSA 是安全的。同理,假設給定 ECDSA 和 Schnorr 簽名預言機,能夠構造模擬器 S 攻破 Schnorr 簽名,則僅給定 ECDSA 簽名預言機,能夠構造模擬器 S 攻破 Schnorr 簽名。但是,Schnorr 簽名是安全的。因此,在跨鏈場景下,適配器簽章使用了相同曲線,但是簽名演算法不同,則是安全的。換言之,適配器簽章允許一端使用 ECDSA,而另一端使用 Schnorr 簽章。

圖 2. 相同曲線,不同演算法,適配器簽章安全

3.2.3 不同曲線,適配器簽章不安全

假設 Bitcoin 使用 Secp256k1 曲線和 ECDSA 簽名,而 Bitlayer 使用 ed25519 曲線和 Schnorr 簽名。此情況下,不能使用適配器簽署。由於曲線不同,導致橢圓曲線群的階數不同,即模係數不同。 Bob 在 Bitcoin 系統中將 $y$適配到 ECDSA 簽章時,即計算 $s:= ŝ+y$。此時,$y$的值空間為 Secp256k1 橢圓曲線群的標量空間。隨後,Alice 需要使用 $y$在 ed25519 橢圓曲線群上進行 Schnorr 簽章。但是,ed25519 曲線餘因子為 8,且模係數不等於 Secp256k1 橢圓曲線群的模係數。因此,使用 $y$在 ed25519 曲線上進行 Schnorr 簽名是不安全的。

4. 數位資產託管應用

數位資產託管有三個參與者,分別為:買方 Alice、賣方 Bob 和託管方。使用適配器簽章能夠實現非互動式閘限數位資產託管,且在無需互動的情況下實例化門限支出策略的子集。此子集由 2 位參與者組成:參與初始化的參與者、不參與初始化的參與者,後者稱為託管方。託管方不能簽署任意交易,而只向支持的其中一方發送秘密。

一方面,託管人只能在幾個固定的結算交易中進行選擇,而無法與其他參與者之一簽署新的交易。因此,這種秘密釋放機制使得非互動式閘限託管的彈性不如門限 Schnorr 簽章。另一方面,可以使用門限 Schnorr 簽名設定 2-of-3 花費策略。但是,閘限 Schnorr 簽章協定需要三方運行進行去中心化金鑰產生協定。因此,基於適配器簽章的資產託管協定具有非互動優勢。

4.1 基於適配器簽署的非互動式資產託管

圖 3. 基於適配器簽章的非互動式資產託管

如圖 3 所示,Alice 和 Bob 想要建立一個具有隱形策略的 2-of-3 交易輸出,其中包含一個託管方。取決於條件 $c$,Alice 或 Bob 可花費該交易輸出。如果 Alice 和 Bob 之間存在爭議,則託管方(公鑰為 $E$,私鑰為 $e$)決定由 Alice 或 Bob 取得該資產。

  1. 建立一個未簽署 funding 交易,將 BTC 發送給 Alice 和 Bob 之間的某 2-of-2 MuSig output。
  2. Alice 選擇隨機值 $t_A$,將某交易的 adapator 為 $t_A ᐧ G$的 Schnorr 預簽 $(\hat{R}_A,\hat{s}_A)$寄給 Bob,交易為將 funding output 傳送給 Bob。 Alice 同時向 Bob 傳送一個密文,該密文包含對秘密 $t_A$並將託管公鑰 $E$調整為 $E_c = E + hash(E, c)G$的\textbf{可驗證加密}$ C = Enc(E_c, t_A)$。過程中,Bob 收到 Alice 的預簽名後,加上自己的簽名,不滿足 2-of-2 MuSig,因此無法花費 funding output。只有當 Bob 知道 $t_A$(由託管方可提供),或 Alice 另外簽署完整簽名發送給 Bob,才能花費 funding output。
  3. 與之相對應,Bob 基於其 adaptor secret $t_B$,重複步驟(2)。此時 Bob 所簽的交易為將 funding output 發送給 Alice。
  4. Alice 和 Bob 都驗證接收密文的有效性,確認密文是對 $E_c$對秘密的加密,從而對 funding 交易簽署並廣播。可驗證加密使得在 setup 階段無需託管方參與,且不需要公開合約 $c$。 
  5. 當有爭議時,Alice 和 Bob 可將密文以及條件 c 發送給託管方,則託管方可實際情況判決,從而使用調整私鑰 $e+hash(E, c)$進行解密發送 $t_A/t_B $給 Bob/Alice。

如果無爭議,則 Alice 和 Bob 可按其所想來花費 2-of-2 MuSig output。如有爭議,則任何一方均可聯絡託管方,並要求其 adaptor secret $t_A$或 $t_B$。因此,其中一方在託管方的幫助下,可完成該適配器簽名,並廣播該結算交易。

4.2 可驗證加密

基於離散對數的經典可驗證加密方案(Practical Verifiable Encryption and Decryption of Discrete Logarithms)不能用於 Secp256k1 adaptors,因其僅支援驗證特殊結構化的 groups。

目前,有 2 種有前景的方式來基於 Secp256k1 離散對數做可驗證加密,分別為 PurifyJuggling

Purify 最初是為了創建具有確定性 nonce(DN)的 MuSig 協定而提出的,要求每個簽署者使用零知識證明其 nonce 是將偽隨機函數(PRF)正確應用於公鑰和訊息的結果。 Purify PRF 可在 Bulletproofs 零知識協定的算術電路中高效實現,用於在 Secp256k1 上的離散對數建立可驗證加密方案。換言之,使用 zkSnark 實作可驗證加密。

Juggling 加密包含四個步驟:(1)將離散對數 $x$切割分成多個長為 $l$的片段 $x_k$,使得 $x = \sum _k 2^{(k-1)l} x_k$;(2)使用公鑰 $Y$對片段 $x_k ᐧ G$進行 ElGamal 加密 $\{ D_k, E_k\} = \{ x_k ᐧ G + r_k ᐧ Y, r_k ᐧ G \}$;(3)對每個 $x_k ᐧ G$創建範圍證明,證明 $D_k$為一個 Pedersen 承諾 $x_k ᐧ G + r_k ᐧ Y$,且其值小於 $2^l$;(4)使用 sigma 協議,證明 $\ {sum D_k, sum E_k\}$是對 $x_k ᐧ G$的正確加密。

在解密過程中,對 $\{D_k, E_k\}$解密出每個 $x_k ᐧ G$,然後窮舉搜尋出 $x_k$(取值範圍為 $[0, 2^l)$)。

Purify 需要在 Bulletproofs 內執行一個 PRF,相對複雜,而 Juggling 理論上更簡單。此外,二者在 proof size、證明時長和驗證時長的差距很小。

5. 總結

本文對 Schnorr/ECDSA 適配器簽章與跨鏈原子交換的原理進行了詳細描述。深入分析了適配器簽章有隨機數洩漏問題、重複問題,並提出使用 RFC 6979 以解決這些問題。此外,詳細分析了跨鏈應用場景下,不僅應考慮區塊鏈的 UTXO 模型與帳戶模型之間的區別,還應考慮適配器簽章是否支援不同演算法、不同曲線等問題。最後,對適配器簽章進行擴展應用,實現非互動式數位資產託管,並簡單介紹了涉及的密碼學原語--可驗證加密。

參考文獻

  1. Gugger J. Bitcoin-monero cross-chain atomic swap[J]. Cryptology ePrint Archive, 2020.
  2. Fournier L. One-time verifiably encrypted signatures aka adaptor signatures[J]. 2019, 2019.
  3. https://crypto-in-action.github.io/ecdsa-blockchain-dangers/190816-secp256k1-ecdsa-dangers.pdf
  4. Pornin T. Deterministic usage of the digital signature algorithm (DSA) and elliptic curve digital signature algorithm (ECDSA)[R]. 2013.
  5. Komlo C, Goldberg I. FROST: flexible round-optimized Schnorr threshold signatures[C]//Selected Areas in Cryptography: 27th International Conference, Halifax, NS, Canada (Virtual EventEvent), October 21-23, 2020, Papersed 20, Papersed . Springer International Publishing, 2021: 34-65.
  6. https://github.com/BlockstreamResearch/scriptless-scripts/blob/master/md/NITE.md
  7. https://particl.news/the-dex-revolution-basicswap-and-private-ethereum-swaps/
  8. Camenisch J, Shoup V. Practical verifiable encryption and decryption of discrete logarithms[C]//Annual International Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2003: 126-144.
  9. Nick J, Ruffing T, Seurin Y, et al. MuSig-DN: Schnorr multi-signatures with verifiably deterministic nonces[C]//Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. 2020: 1717-1731.7-1731.
  10. Shlomovits O, Leiba O. Jugglingswap: scriptless atomic cross-chain swaps[J]. arXiv preprint arXiv:2007.14423, 2020.

免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。