解析比特幣與 Layer2 資產跨鏈技術
原文標題:Adaptor Signatures and Its Application to Cross-Chain Atomic Swaps
原文作者: mutourend,lynndell
引言
隨著比特幣 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, A.K.A. Adaptor Signatures的一種實現。適配器簽名是一種附加簽名,其與初始簽名相結合以顯示秘密數據,使雙方能夠同時向對方透露兩部分數據,並且是使 Monero 原子交換對成為可能的 scriptless 協議的關鍵組成部分。
與 HTLC 原子交換相比,基於適配器簽名的原子交換有 3 個優勢:首先,適配器簽名交換方案取代了「秘密哈希」交換所依賴的鏈上腳本,包括時間鎖和哈希鎖。換言之, HTLC 交換中的秘密和秘密哈希在適配器簽名交換中無直接對應關係。因此,在比特幣研究界被稱為「 scriptless scripts 隱形腳本」。此外,由於不涉及這樣的腳本,鏈上佔用空間減少,使得基於適配器簽名的原子交換更輕量,費用更低。最後, HTLC 要求每條鏈使用相同的哈希值,而適配器簽名的原子交換中涉及的交易無法鏈接,實現隱私保護。
本文首先介紹 Schnorr / ECDSA 適配器簽名與跨鏈原子交換原理。然後,分析適配器簽名中存在的隨機數安全問題和跨鏈場景中的系統異構和算法異構問題,並給出解決方案。最後,對適配器簽名進行擴展應用,實現非交互式數字資產托管。
適配器簽名與跨鏈原子交換
2.1 Schnorr 適配器簽名與原子交換
2.2 ECDSA 適配器簽名與原子交換
2.2.1 零知識證明 zk { v | Ṽ = v ᐧ G , V = v ᐧ Y }
安全問題與解決方案
3.1 隨機數問題與解決方案
3.1.1 隨機數洩漏問題
Schno r r / ECDSA 適配器簽名的預簽名均對隨機數 r 進行承諾Ȓ = r ᐧ G 。此外,零知識證明中對隨機數 v 進行承諾Ṽ= v ᐧ G , V = v ᐧ Y 。如果隨機數洩漏,則會導致私鑰洩漏。
具體而言,在 Schno r r 協議中,如果隨機數 r 洩漏,則能夠根據等式
ŝ = r + cx
計算出私鑰 x 。
同理,在 ECDSA 協議中,如果隨機數 r 洩漏,則能夠根據等式
ŝ = r \^{-1}( hash ( m )+ R _ x x )
計算私鑰出 x 。
最後,在零知識證明協議中,如果隨機數 v 洩漏,則能夠根據等式
z := v + cr
計算出隨機數 r ,從而進一步根據隨機數 r 計算出私鑰 x 。因此,隨機數使用完後需立刻刪除。
3.1.2 隨機數重用問題
對任意兩個跨鏈交易,如果適配器簽名協議使用相同的隨機數,則會導致私鑰洩漏。具體而言,在 Schno r r 協議中,如果使用了相同的隨機數 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 和 EC DSA 生成確定性數字簽名的方法,解決了與生成隨機值 k 相關的安全問題。傳統的 DSA 和 EC DSA 簽名依賴於每次簽名操作隨機生成的隨機數 k 。如果此隨機數被重用或生成不當,會危及私鑰的安全性。 RFC 6979 通過從私鑰和待簽名消息中確定性地導出 k ,消除了生成隨機數的需求。這確保了使用相同私鑰簽署相同消息時,簽名總是相同的,從而增強了可重現性和可預測性。具體而言,確定性的 k 是由 HMAC 生成的。該過程涉及哈希函數(例如 SHA256 )對私鑰、消息和計數器計算哈希值,
k = SHA256 (s k , msg , counter )
上述等式中,為表達簡潔,僅對私鑰 s k ,消息 msg 和計數器 counter 計算哈希值,實際 RFC 6979 中計算過程涉及更多的哈希計算。該等式確保 k 對每條消息都是唯一的,同時對於相同的輸入具有可重現性,並且減少了與弱或受損的隨機數生成器相關的私鑰暴露風險。因此, RFC 6979 為使用 DSA 和 EC DSA 的確定性數字簽名提供了一個強大的框架,解決了與隨機數生成相關的重大安全問題,並增強了數字簽名的可靠性和可預測性。這使其成為需要高安全性和符合嚴格操作要求的應用程序的寶貴標準。 Schnorr /EC DSA 簽名存在隨機數缺陷,需要使用 RFC 6979 進行防範。因此,基於 Schnorr /EC DSA 的適配器簽名也存在這些問題,也需要使用 RFC 6979 規範以解決這些問題。
3.2 跨鏈場景問題與解決方案
3.2.1 UTXO 與賬戶模型系統異構問題與解決方案
如圖 1 所示,比特幣採用 UTXO 模型,基於 Secp256 k1 曲線實現原生的 ECDSA 簽名。 Bitlayer 為 EVM 兼容 Bitcoin L2 鏈,採用 Secp256 k1 曲線,支持原生的 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 均使用 S ecp256 k1 曲線,但是 Bitcoin 使用 S chnorr 簽名,而 Bitlayer 使用 ECD S A 。該情況下,基於 S chnorr 和 ECD S A 的適配器簽名,是可證明安全的。假設給定 ECD S A 和 S chnorr 簽名預言機,能夠構造模擬器 S 攻破 ECD S A ,則僅給定 ECD S A 簽名預言機,能夠構造模擬器 S 攻破 ECD S A 。但是, ECD S A 是安全的。同理,假設給定 ECD S A 和 S chnorr 簽名預言機,能夠構造模擬器 S 攻破 S chnorr 簽名,則僅給定 ECD S A 簽名預言機,能夠構造模擬器 S 攻破 S chnorr 簽名。但是, S chnorr 簽名是安全的。因此,在跨鏈場景下,適配器簽名使用了相同曲線,但是簽名算法不同,則是安全的。換言之,適配器簽名允許一端使用 ECD S A ,而另一端使用 S chnorr 簽名。
圖 2. 相同曲線,不同算法,適配器簽名
3.2.3 不同曲線,適配器簽名不安全
假設 Bitcoin 使用 Secp256 k1 曲線和 ECDSA 簽名,而 Bitla y er 使用 ed25519 曲線和 Schnorr 簽名。該情況下,不能使用適配器簽名。由於曲線不同,導致椭圓曲線群的階不同,即模系數不同。 Bob 在 Bitcoin 系統中將 y 適配到 ECDSA 簽名中時,即計算 s := ŝ+ y 。此時, y 的取值空間為 Secp256 k1 椭圓曲線群的標量空間。隨後, Alice 需要使用 y 在 ed25519 椭圓曲線群上進行 Schnorr 簽名。但是, ed25519 曲線餘因子為 8,且模系數不等於 Secp256 k1 椭圓曲線群的模系數。因此,使用 y 在 ed25519 曲線上進行 Schnorr 簽名是不安全的。
數字資產托管應用
數字資產托管有三個參與方,分別為:買方 Alice 、賣方 Bob 和托管方。使用適配器簽名能夠實現非交互式門檻數字資產托管,且在無需交互的情況下實例化門檻支出策略的子集。該子集由 2 種參與者組成:參與初始化的參與者、不參與初始化的參與者,後者稱為托管方。托管方不能簽署任意交易,而只向支持的其中一方發送秘密。
一方面,托管人只能在幾個固定的結算交易中進行選擇,而無法與其他參與方之一簽署新的交易。因此,這種秘密釋放機制使得非交互式門檻托管的靈活性不如門檻 Schnorr 簽名。另一方面,可以使用門檻 Schnorr 簽名設置 2- of -3 花費策略。但是,門檻 Schnorr 簽名協議需要三方運行進行去中心化密鑰生成協議。因此,基於適配器簽名的資產托管協議具有非交互優勢。
4.1 基於適配器簽名的非交互式資產托管
圖 3. 基於適配器簽名的非交互式資產托管
如圖 3 所示, Ali c e 和 Bob 想要創建一個具有隱形策略的 2- of -3 交易輸出,其中包含一個托管方。取決於條件 c , Ali c e 或 Bob 可花費該交易輸出。如果 Ali c e 和 Bob 之間存在爭議,則托管方(公鑰為 E ,私鑰為 e )決定由 Ali c e 或 Bob 獲得該資產。
創建一個未簽名 funding 交易,將 BTC 發送給 Alice 和 Bob 之間的某 2- of -2 MuSig output 。
A li c e 選擇一個隨機值 t _ A ,將某交易的 adapa t or 為 t _ A ᐧ G 的 S c hnorr 預簽名 (\ha t { R }_ A ,\ha t { s }_ A ) 發送給 Bob ,該交易為將 funding ou t pu t 發送給 Bob 。 A li c e 同時給 Bob 發送一個密文,該密文包含對秘密 t _ A 並將托管公鑰 E 調整為 E _ c = E + ha s h( E , c ) G 的\ t ex t bf{可驗證加密} C = E n c ( E _ c , t _ A )。該過程中, Bob 收到 A li c e 的預簽名後,加上自己的簽名,不滿足 2- of -2 MuSig ,從而無法花費 funding ou t pu t 。僅當 Bob 知道 t _ A (由托管方可提供),或 A li c e 另外簽署完整簽名發送給 Bob ,才能花費 funding ou t pu t 。
與之相對應, B ob 基於其 adap t or secre t t _ B ,重複步驟(2)。此時 B ob 所簽的交易為將 funding ou t pu t 發送給 Alice 。
Ali c e 和 Bob 均驗證接收密文的有效性,確認密文是對 E _ c 對秘密的加密,從而對 funding 交易簽署並廣播。可驗證加密使得在 setup 階段無需托管方參與,且不需要公開合約 c 。
當有爭議時, A li c e 和 B ob 可將密文以及條件 c 發送給托管方,則托管方可實際情況判決,從而使用調整私鑰 e + hash ( E , c ) 進行解密發送 t _ A / t _ B 給 B ob / A li c e 。
如果無爭議,則 A lice 和 B ob 可按其所想來花費 2- of -2 MuSig ou t pu t 。如果存在爭議,則任何一方均可聯繫托管方,並請求其 adap t or secre t t _ A 或 t _ B 。因此,其中一方在托管方的幫助下,可完成該適配器簽名,並廣播該結算交易。
4.2 可驗證加密
基於離散對數的經典可驗證加密方案(Practical Verifiable Encryption and Decryption of Discrete Logarithms)不能用於 Secp256k1 adaptors,因其僅支持驗證特殊結構化的 groups。
目前,有 2 種有前景的方式來基於 Secp256k1 離散對數做可驗證加密,分別為Purify和Juggling。
Purify最初是為了創建具有確定性 nonce(DN)的 MuSig 協議而提出的,要求每個簽名者使用零知識證明其 nonce 是將伪隨機函數(PRF)正確應用於公鑰和消息的結果。Purify PRF 可在 Bulletproofs 零知識協議的算術電路中高效實現,用於在 Secp256k1 上的離散對數創建可驗證加密方案。換言之,使用 zkSnark 實現可驗證加密。
Juggling加密包括四個步驟:(1)將離散對數 x 切分為多個長為 l 的片段 x_k,使得 x = \sum _k 2\^{(k-1)l} xk;(2)使用公鑰 Y 對片段 xk ᐧ G 進行 ElGamal 加密\{ Dk, Ek\} = \{ xk ᐧ G + rk ᐧ Y, rk ᐧ G \};(3)對每個 xk ᐧ G 創建範圍證明,證明 Dk 為一個 Pedersen 承諾 xk ᐧ G + rk ᐧ Y,且其值小於 2\^l;(4)使用 sigma 協議,證明\{sum Dk, sum Ek\} 是對 xk ᐧ G 的正確加密。
在解密過程中,對\{ D _ k , E _ k \} 解密出每個 x _ k ᐧ G ,然後窮舉搜索出 x _ k (取值範圍為 [0, 2\^ l ))。
Purify 需在 Bullet proof s 內執行一個 PRF ,相對複雜,而 Juggling 理論上更簡單。此外,二者在 proof size 、證明時長和驗證時長的差距很小。
總結
本文對 Schnorr / ECDSA 適配器簽名與跨鏈原子交換的原理進行了詳細描述。深入分析了適配器簽名存在隨機數洩漏問題、重複問題,並提出使用 RFC 6979 以解決這些問題。此外,詳細分析了跨鏈應用場景下,不但應考慮區塊鏈的 UTXO 模型與賬戶模型之間的區別,還應考慮適配器簽名是否支持不同算法、不同曲線等問題。最後,對適配器簽名進行擴展應用,實現非交互式數字資產托管,並簡單介紹了涉及的密碼學原語--可驗證加密。
參考文獻
Gugger J . Bitcoin - monero cross - chain atomic swap [ J ]. Cryptology ePrint Archive , 2020.
Fournier L . One - time verifiably encrypted signatures aka adaptor signatures [ J ]. 2019, 2019.
https :// crypto - in - act io n . github . io / ecdsa -blockcha in - dangers /190816- secp256 k1 - ecdsa - dangers . pdf
Pornin T . Deterministic usage of the digital signature algorithm ( DSA ) and elliptic curve digital signature algorithm (EC DSA )[ R ]. 2013.
Komlo C , Goldberg I . FROST : flexible round - optimized Schnorr threshold signatures [ C ]// Selected Areas in C ryptography: 27th I nternational C onference, Halifax , NS , C anada ( Virtual Event ), October 21-23, 2020, Revised Selected Papers 27. Spr in ger I nternational Publish in g, 2021: 34-65.
https :// github . com / BlockstreamResearch / scriptless - scripts / blob / master / md / NITE . md
https :// particl . news / the - dex - revolution - basicswap - and - private -e the reum- swaps /
C amenisch J , Shoup V . Practical verifiable encryption and decryption of discrete logarithms [ C ]// Annual International C ryptology C onference. Berlin , Heidelberg : Springer Berlin Heidelberg , 2003: 126-144.
Nick J , Ruffing T , Seurin Y , et al . MuSig - DN : Schnorr multi - signatures with verifiably d et erministic n on ces [ C ]// Proceedings of the 2020 A C M SIGSA C C on ference on C omputer and C ommunicati on s Security . 2020: 1717-1731.
Shlomovits O , Leiba O . J ugglingswap : scriptless atomic cross - chain swaps [ J ]. arXiv preprint arXiv :2007.14423, 2020.