Skip to content

Latest commit

 

History

History
107 lines (55 loc) · 14.9 KB

Schnorr簽名的前世今生:為什麼說比特幣的隱私性是不可避免的?.md

File metadata and controls

107 lines (55 loc) · 14.9 KB

Schnorr簽名的前世今生:為什麼說比特幣的隱私性是不可避免的?

來源:https://www.8btc.com/author/14582 Wendy 2019-03-15 15:29釋出在 比特幣 鏈頭條 獨家  128600

數字簽名是網路主權的支柱。1976年公鑰密碼學的出現為全球通訊媒介——網際網路和一種全新的貨幣形式——比特幣的誕生鋪平了道路。雖然公鑰密碼學的基本屬性自那時以來沒有太大的變化,但現在,密碼學者的工具箱中都有幾十種開源數字簽名方案。

bitcoin|1000x600

當中本聰(Satoshi Nakamoto)開始創造比特幣時,需要考慮的一個關鍵設計選擇是,在這個開放、無需許可的金融體系中使用哪種簽名方案。其要求很明顯;中本聰需要一種被廣泛使用、易於理解、足夠安全、輕量級且最重要的是開源的演算法。在當時所有的備選方案中,他作出了最符合這一標準的選擇:橢圓曲線數字簽名演算法(ECDSA)。

當時,ECDSA由OpenSSL支援,OpenSSL是一套開源加密工具,由密碼學朋克開發,用於改善線上通訊的隱私。與其他流行的方案相比,ECDSA具有計算需求更少、金鑰長度更短的優點;對數字貨幣來說很有用。同時,它還為RSA(加密演算法)這樣的方案提供了一定的安全性:例如,256位的ECDSA金鑰的安全性相當於3,072位的RSA金鑰,但它只是RSA金鑰容量的一小部分。

Pieter Wuille等人在改進曲線(如橢圓曲線)secp256k1上的辛勤工作使比特幣的ECDSA變得更快更高效了。然而,ECDSA仍然存在固有的缺陷,需要用其他方案取代它。經過多年的研究和實驗,一種旨在提高比特幣交易隱私和效率的新簽名方案——Schnorr數字簽名方案出現了。

在本文中,我將概述Schnorr簽名的多種部署方式及其相應的優點。然後,我會說明MuSig這種全新的多重簽名標準能夠為Taproot這樣的新型比特幣技術帶來什麼。最後,我要說的是Schnorr如何打破區塊鏈分析中使用的試探法(heuristics)以及如何幫助比特幣的主協議層建立一個強大的收費市場。

Schnorr簽名的崛起

儘管Schnorr數字簽名方案與ECDSA相比具備許多優點,但它並不是一個新方案。上世紀80年代,德國密碼學家以及學者Claus-Peter Schnorr在法蘭克福大學擔任教授和研究員時發明了這種機制。他提出的這種簽名方案是結合了David Chaum、Taher EIgamal、Amos Fiat以及Adi Shamir的研究。然而,在發表之前,Claus-Peter Schnorr為他的新發明申請了多項專利,導致其在多年來無法被直接使用。

有趣的是,ECDSA的前身DSA是ElGamal和Schnorr方案的結合,後者完全是為了規避Claus Schnorr的專利而設計的。事實上,就在Schnorr的美國專利釋出兩個月後,DSA的創造者美國國家標準與技術研究院(NIST)也為其解決方案申請了專利。這裡要說一小段密碼朋克的歷史:在那之後,Claus-Peter Schnorr為了捍衛他的專利變得非常激進,並直接回應了Coderpunks(程式設計師朋克)郵件列表中的批評;這是原始密碼朋克郵件列表的一個分支。

2008年,Schnorr簽名計劃推出近20年後,Claus-Peter Schnorr的專利過期了。巧合的是,2008年也是我們最喜歡的密碼朋克中本聰推出比特幣的這一年。儘管當時Schnorr簽名已經可以被自由使用了,但其既沒有實現標準化也沒有被廣泛使用,這可能是中本聰轉而使用ECDSA的原因之一。儘管密碼學者和數學家經常用“非常可怕”來形容ECDSA,但其在當時(現在也是如此)得到了廣泛使用,並且為比特幣提供了更安全的選擇。

Schnorr與比特幣

十年之後的今天,Schnorr方案就不那麼神祕了,ed25519之類的標準化部署成為了一些競爭幣的優選。有關在比特幣上實施Schnorr的非正式討論可以追溯到2014年的BitcoinTalk論壇,但直到Pieter Wuille提出了Schnorr BIP之後,這項經過多年研究和實驗的技術才正式登場。這個BIP描述了一個實現Schnorr的規範和技術細節,與ECDSA相比,其將帶來以下優勢:

  • 安全證明:當使用一個足夠隨機的雜湊函數(隨機oracle模型)和簽名中使用的橢圓曲線離散對數問題(ECDLP)足夠困難時,Schnorr簽名的安全性很容易得到證明。但ECDSA不存在這樣的證明。

  • 非延展性(Non-malleability):ECDSA簽名本質上是可延展的,它可以使無法訪問私鑰的第三方更改現有有效簽名並雙花資金。BIP62正式討論了這個問題。相比之下,Schnorr簽名被證明是不可延展的。

  • 線性特點:Schnorr簽名具有一個顯著的特性,即多個參與方可以協作生成對其公鑰總和有效的簽名。這是提高效率和隱私的基礎,例如多重簽名和其他智慧合約。

Schnorr提供的安全證明以及非延展性保證,與ECDSA相比具有明顯的優勢。僅基於這兩個優勢,進行軟分叉是正確的。然而,Schnorr的線性特性尤其令人興奮。本質上,這使得多重簽名交易中的多個簽名者能夠將其公鑰組合成聚合祕鑰;這個特點被稱為key aggregation。

儘管組合祕鑰的能力聽起來微不足道,但是不應該低估聚合祕鑰的優勢。由於ECDSA本身並不支援多重簽名,因此它們必須通過一個名為Pay-to-ScriptHash(P2SH)的標準化智慧合約(沒錯,比特幣也有智慧合約)在比特幣中部署。這使得使用者可以新增名為encumbrances(財產留置權)的支出條件來指定資金的使用方式,例如“只有當Alice和Bob都在此訊息上簽名時,才能解鎖餘額”。

P2SH存在的第一個問題是,它需要參與多重簽名的所有簽名者的公鑰,這並非一個有效的系統。聚合這些祕鑰將實現更有效的驗證,因為網路只需要驗證一個祕鑰,而不是n個。這也意味著佔用區塊鏈更少的空間,實現更低的交易成本,改善頻寬。

P2SH的第二個問題是,它提供的隱私保障非常少。正如BIP 13所說,P2SH交易需要以3開頭的不同地址。這使得區塊鏈觀察者不僅可以識別網路中所有的P2SH交易,還可以在多重簽名中確定具體的身份:

1|2000x502

在上面的例子中,網路可以知道(1)多重簽名交易的存在(2)其由多少簽名者組成(3)簽名者的身份。這不利於操作安全,特別是對於像2FA(雙因素認證)這樣的應用。而且對隱私也不利。

另一方面,祕鑰聚合允許簽名者保持匿名,並且不會洩露解鎖餘額所需的祕鑰,以至於影響操作安全性。最重要的是,祕鑰聚合可以讓多重簽名交易與常規交易無異:

2|1500x376

Schnorr在比特幣中的首個版本將淘汰當前與ECDSA一起使用的OP_CHECKSIG和OP_CHECKMULTISIG操作碼,取而代之的是一個名為OP_CHECKDLS的新程式碼。DLS是離散日誌簽名,無需太多細節,它允許用更少的操作碼更有效地驗證簽名。

早在2018年初,Gregory Maxwell、Andrew Poelstra、Yannick Seurin和Pieter Wuille就發表了一篇白皮書,討論一種新的基於Schnorr的多重簽名方案MuSig。自從MuSig釋出以來,他們一直在努力將這個多重簽名方案轉換成可用的程式碼。

在祕鑰聚合的環境中,MuSig最有趣的一點是在區塊鏈以外建立私有智慧合約的可能性。從本質上講,MuSig使多重簽名參與者能夠將encumbrances新增到聚合金鑰的鏈下,這並不需要用到比特幣的共識規則。

2018年12月,Anthony Towns是第一個提出啟用Schnorr“半正式”提議的核心開發者,該提議已經被髮布在比特幣開發者的郵件列表中。我預計在接下來的幾個月裡會有更多關於軟分叉的討論。

總結: MuSig在比特幣中的第一版將支援祕鑰聚合,可以立即(1)提高多重簽名的隱私(2)增加交易驗證效率(3)通過消除ECDSA的固有問題來提高安全性(4)實現Taproot等智慧合約方案。

但這僅僅是個開始。

跨輸入聚合:比特幣隱私的下一步

正如上文所述,對於花費單個輸入的多重簽名,祕鑰聚合是一個非常有用的特性。由於比特幣交易通常有多個輸入,Schnorr的未來迭代也可以用來建立一個互動式聚合簽名(IAS)方案,同一筆交易中的所有輸入都可以同時使用一個簽名。

同樣,簽名者之間的互動完全發生在鏈下,但是現在,一個簽名就可以花費一筆交易的所有輸入。每個輸入仍然有自己的公鑰,但是可以由Schnorr IAS進行花費:

3|1500x394

Greg Maxwell、Pieter Wuille、Anthony Towns等人一直致力於Taproot智慧契約方案的改進,以推動這一功能。他們將此方案稱為Generalized Taproot,或G’root,它可以使將來從祕鑰聚合到跨輸入聚合的轉換變得更加容易。

與祕鑰聚合一樣,跨輸入聚合進一步提高了比特幣交易的效率。但最重要的是,它可能在比特幣的基礎層啟用強大的隱私保護機制。

跨輸入聚合最令人興奮的方面之一是它可以改進比特幣上的CoinJoin交易。CoinJoin是一種隱私保護技術,可以將多個傳送方和接收方組合在一筆交易中。其目標是使區塊鏈觀察者難以追蹤特定的傳送方和接收方。

這項技術最初是2013年由Greg Maxwell在BitcoinTalk上提出的,之後多個平臺開始提供這一服務,包括JoinMarket、SharedCoin、ShufflePuff、DarkWallet和CoinShuffle。CoinJoin後續的變化,如Wasabi錢包的Chaumian CoinJoin在很大程度上改進了最初的模型。然而,其仍然需要依賴足夠多的使用者來混淆他們的餘額。

如今CoinJoin面臨的另一個問題是整個交易類型的可識別性(和潛在的審查)。目前在區塊鏈分析中使用最多的方法就是根據特定的輸入來確定兩個或多個地址是否屬於同一個實體。例如,如果Alice給Bob轉了1.982723 BTC,區塊鏈觀察者可以跟蹤該特定輸入的小數位,繪製交易圖,或者UTXO的歷史分解和所有權變更。

為了防止這種情況發生,CoinJoin的部署需要數額統一,這樣CoinJoin中的每個人都會發送等額的幣。舉個例子,Wasabi錢包的使用者在100名參與者的CoinJoin交易中都發送0.1個比特幣。雖然仍然很難確定傳送方和接收方之間的聯絡,但是區塊鏈觀察者可以通過統一的數額來判斷是否發生了CoinJoin交易,並建議其客戶審查所有參與者。

跨輸入聚合可以幫助解決這個問題,因為它在協議層引入了額外的混淆機制。從本質上講,跨輸入聚合可以構建基於Schnorr的CoinJoin交易,該交易有n個簽名者,看起來就像是普通的單簽名者交易。這也使CoinJoin更容易在流行錢包中實現,這可能會加強網路的整體匿名集或使用這項技術的使用者數量。

統一數額的問題可以通過其他技術進一步解決,比如Pay-to-EndPoint(P2EP),它將CoinJoin和中本聰早期在隱私方面的工作(見P2IP)結合在了一起,在CoinJoin中傳送方和接收方都需要提供交易輸入。

P2EP是向後相容的,當與Schnorr一起使用時,它可以在比特幣的基礎層提供足夠的隱私。

一石二鳥

我們有理由認為,比特幣的大規模普及取決於其隱私保障的力度。與此同時,閃電網路的普及,以及它本身承載支付的潛力,為比特幣被挖完之後鏈上結算的需求帶來了不確定性。因此,對隱私的需求以及比特幣在沒有區塊獎勵的情況下的長期可持續性,或許是比特幣存在的兩個最令人擔憂的問題。幸運的是,Schnorr啟用的隱私機制可以同時解決這兩個問題。

我花了大量的時間來研究複雜的隱私技術,包括環簽名(Ring Signatures)、保密交易(Confidential Transactions)、防彈技術(Bulletproofs)、zkSNARKs、STARKs和MimbleWimble的不同部署場景。雖然有些技術已經足夠成熟,能夠部署在比特幣基礎層,但依然存在特殊的風險和權衡。正如你所知道的那樣,比特幣不喜歡硬分叉,因此很難想象這些技術全部被部署到比特幣協議上的場景。

對於同態加密或非互動式零知識證明系統的使用,人們似乎擔心會阻礙比特幣貨幣基礎的可驗證性。換句話說,如果對交易數額進行加密,就很難驗證比特幣的供應上限是否保持在2100萬。同樣,當交易金額被隱藏時,通脹漏洞和雙花活動也變得更加難以確定。這是一個相當大的權衡,在比特幣的基礎層實現高度隱私可能會導致社群分裂。

那麼如果不需要部署這些技術就能為比特幣基礎層贏得足夠隱私呢?

Schnorr肯定能幫上忙。如果大多數比特幣交易都使用Schnorr的跨輸入聚合功能和P2EP,那麼隨著時間的推移,僅僅通過檢視區塊鏈就幾乎不可能影響混淆機制。比特幣的供應仍將是可驗證的,同時其交易也將提供更有力的隱私保障。

如果存在隱私需求,我們也有理由假設,比特幣使用者和企業可能希望被動地參與比特幣交易,讓他們的錢包在後臺不斷地混合餘額。在這種情況下,對隱私的需求會直接造成鏈上交易費用的增加。和隔離見證(SegWit)一樣,使用者很可能是採用該技術的第一個群體,但企業必須在某個時候也加入進來,以保持相關性。

假以時日,這些技術會讓區塊鏈分析變得毫無用處,並像實物現金一樣,比特幣企業無需繼續遵守AML/KYC規則。當你把現金存入銀行賬戶時,銀行不會追蹤賬單上是否有毒品交易記錄,就算髮現了,也不會阻止你把這些先進存入銀行。除了區塊鏈分析的擴散,以及沒有Schnorr的技術缺點之外,沒有理由只讓比特幣來遵守這一點。

當在特定地址和UTXOs上執行AML/KYC變得無關緊要,關注點轉向個人而非餘額時,比特幣企業將完全建立在隱私之上。事實上,我認為當這種情況發生時,隱私和可互換性將成為未來比特幣企業價值主張不可或缺的一部分。

最終,比特幣的基礎層採用更強大的隱私機制之後,使用者將獲得更多權力,與此同時,可能有助於在比特幣被挖完之後,建立一個活躍的手續費市場。我的猜測是,這一切都始於Schnorr的啟用,似乎每個項目都對其感興趣。