數(shù)字簽名是在線主權(quán)的支柱。公鑰密碼學(xué)在1976年的出現(xiàn),為創(chuàng)建全球通信媒介、互聯(lián)網(wǎng)以及全新的貨幣形式比特幣鋪平了道路。雖然從那時(shí)起公鑰加密的基本屬性并沒有太大變化,但現(xiàn)在密碼學(xué)家的工具箱中有許多開源數(shù)字簽名方案。
在中本聰開始構(gòu)思比特幣時(shí),要考慮的關(guān)鍵設(shè)計(jì)選擇之一,就是在這個(gè)開放的、無許可的金融系統(tǒng)中使用哪種簽名方案。要求很明確;中本聰需要一種使用廣泛、易于理解、足夠安全、輕量級(jí),最重要的是開源的算法。在當(dāng)時(shí)可用的所有選項(xiàng)中,他選擇了最符合該標(biāo)準(zhǔn)的選項(xiàng):橢圓曲線數(shù)字簽名算法(ECDSA)。
當(dāng)時(shí),ECDSA由OpenSSL本地支持,OpenSSL是由一群賽博朋克老手開發(fā)的一組開源加密工具,用于改善在線通信的隱私性。相對(duì)于其他流行的方案,ECDSA的好處是具有更精簡的計(jì)算要求和更短的密鑰長度;這些都是數(shù)字形式的貨幣的有用屬性。同時(shí),它還提供了與RSA等方案相當(dāng)?shù)陌踩裕豪纾?56位ECDSA密鑰與3072位RSA密鑰具有相同的安全性,但其大小只是后者的一小部分。
Pieter Wuille和其他人在一條被稱為secp256k1的改進(jìn)曲線(如橢圓曲線)上的努力使得比特幣的ECDSA更快、更有效。然而,ECDSA仍然存在固有的缺陷,人們始終有理由去取代它。經(jīng)過幾年的研究和實(shí)驗(yàn),出現(xiàn)了一種旨在提高比特幣交易隱私性和效率的新簽名方案:Schnorr數(shù)字簽名方案。
在本文中,我概述了Schnorr簽名的多種實(shí)現(xiàn)及其相應(yīng)的好處。然后,我探索了MuSig,這是一種新的多重簽名標(biāo)準(zhǔn),可作為Taproot等新型比特幣技術(shù)的構(gòu)建模塊。最后,我描述了Schnorr的完全實(shí)現(xiàn)版本將如何打破區(qū)塊鏈分析中使用的試探,同時(shí)幫助在比特幣的主層(main layer)建立一個(gè)強(qiáng)大的費(fèi)用市場(chǎng)。
SCHNORR簽名的興起
盡管Schnorr數(shù)字簽名方案比ECDSA具有許多優(yōu)勢(shì),但它肯定不是新的。它由德國密碼學(xué)家和學(xué)者Claus-Peter Schnorr發(fā)明,在20世紀(jì)80年代,他在法蘭克福大學(xué)擔(dān)任教授和研究員。他提出的簽名方案是David Chaum、Taher EIgamal、Amos Fiat和Adi Shamir的研究和工作的整合。然而,在發(fā)布之前,Claus Schnorr為他新發(fā)明的方案申請(qǐng)了多項(xiàng)專利,多年來,該方案一直禁止其直接使用。
十分有趣的是,ECDSA的前身DSA是ElGamal和Schnorr方案的混合體,該方案僅用于規(guī)避Claus Schnorr的專利。事實(shí)上,在Schnorr的美國專利發(fā)布僅兩個(gè)月后,DSA的創(chuàng)始人美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)也為其解決方案申請(qǐng)了專利。這里有一些基本的賽博朋克歷史:在那之后,Claus Schnorr對(duì)他的專利采取了防守措施,并直接回應(yīng)了碼農(nóng)朋克郵件列表(原始賽博朋克郵件列表的一個(gè)分支)里對(duì)他的批評(píng)者。他的回答可以在這里(http://web.archive.org/web/19991205091737/http://privacy.nb.ca/cryptography/archives/coderpunks/new/1998-08/0006.html)和這里(http://web.archive.org/web/20010829223720/http://www.privacy.nb.ca/cryptography/archives/coderpunks/new/1998-08/0009.html)閱讀。此處(https://csrc.nist.gov/csrc/media/publications/shared/documents/itl-bulletin/cslbul1994-11.txt)還可以找到描述專利問題的內(nèi)部NIST備忘錄。
2008年,在Schnorr簽名方案推出近二十年后,Claus Schnorr的專利已經(jīng)過期。巧合的是,2008年也正是我們最喜歡的賽博朋克——中本聰——正在實(shí)現(xiàn)比特幣的那年。盡管在當(dāng)時(shí)本來可以使用Schnorr簽名,但它們還尚未被標(biāo)準(zhǔn)化或廣泛運(yùn)用,這可能是中本聰用ECDSA來替代的動(dòng)機(jī)。雖然密碼學(xué)家和數(shù)學(xué)家經(jīng)常將其描述為極差(atrocious),但ECDSA已經(jīng)(現(xiàn)在仍然)被廣泛使用,它在當(dāng)時(shí)為比特幣提供了更安全的選擇。
比特幣上的SCHNORR
十年過去,Schnorr方案在今天不那么深?yuàn)W了,像ed25519(https://tools.ietf.org/html/rfc8032)這樣的標(biāo)準(zhǔn)化實(shí)現(xiàn)成為一些競(jìng)爭(zhēng)幣的流行選擇。關(guān)于可能在比特幣上實(shí)現(xiàn)Schnorr的非正式談話可以追溯到2014年BitcoinTalk上的這個(gè)話題(https://bitcointalk.org/index.php?topic=511074.0),但到了Pieter Wuille撰寫Schnorr BIP(https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki)的時(shí)候,經(jīng)過多年的研究和實(shí)驗(yàn),這項(xiàng)提案才得以正式化。本BIP草案描述了潛在Schnorr實(shí)現(xiàn)的規(guī)范和技術(shù)細(xì)節(jié),該實(shí)現(xiàn)將比ECDSA具有以下優(yōu)勢(shì):
· 安全性證明:當(dāng)使用足夠隨機(jī)的哈希函數(shù)(隨機(jī)預(yù)言模型),并且簽名中使用的橢圓曲線離散對(duì)數(shù)問題(ECDLP)足夠困難時(shí),Schnorr簽名的安全性很容易證明。ECDSA不存在這樣的證明。
· 不可延展性: ECDSA簽名具有內(nèi)在的延展性,這可能使第三方在無法訪問私鑰的情況下改變現(xiàn)有的有效簽名并雙花資金。這個(gè)問題在BIP62(https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki)中正式討論過。相比之下,Schnorr簽名可證明是不可延展的。
· 線性: Schnorr簽名具有這樣一個(gè)明顯特性,即多方可以協(xié)作生成對(duì)其公鑰總和有效的簽名。這是各種用于提高效率和隱私的更高級(jí)構(gòu)造(如多簽名和其他智能合約)的構(gòu)成要素。
Schnorr提供的安全性證明及其不可延展性保證與ECDSA相比具有明顯優(yōu)勢(shì)。只有在這兩個(gè)好處的基礎(chǔ)上才能證明軟分叉是合理的。然而,Schnorr的線性屬性格外令人興奮。 實(shí)質(zhì)上,這使得一筆多重簽名(multisig)交易中的多個(gè)簽名者能夠?qū)⑺麄兊墓€組合成一把代表該團(tuán)體的聚合密鑰;這一屬性被稱為密鑰聚合(key aggregation)。
雖然融合密鑰的能力可能聽起來微不足道,但我們不應(yīng)該低估密鑰聚合的好處。由于ECDSA本身不支持多重簽名,因此它必須通過被稱為Pay-to-ScriptHash(P2SH)的標(biāo)準(zhǔn)化智能合約(是的,比特幣也有智能合約 )來在比特幣中實(shí)現(xiàn) 。這使得用戶可以添加被稱為質(zhì)押權(quán)(encumbrances)的支出條件來指定資金的使用,如“只有Alice和Bob雙方都對(duì)此消息簽名的解鎖余額才能使用?!?/p>
P2SH的第一個(gè)問題是它需要知道參與multisig的所有簽名者的公鑰,這不是一個(gè)有效率的系統(tǒng)。聚合這些密鑰將允許更有效率的驗(yàn)證,因?yàn)?a href="http://ttokpm.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)只需要驗(yàn)證一個(gè)密鑰,而不是n個(gè)密鑰。這也意味著更少的區(qū)塊鏈足跡、更低的交易成本和改良的帶寬。
P2SH的第二個(gè)問題是它提供的隱私保證非常少。根據(jù)BIP 13的規(guī)定,P2SH交易需要使用以3號(hào)開頭的不同地址。這使得區(qū)塊鏈觀察者不僅能識(shí)別網(wǎng)絡(luò)中的所有P2SH交易,而且還能準(zhǔn)確指出多重簽名內(nèi)的身份:
在上面的例子中,網(wǎng)絡(luò)將意識(shí)到(1)多重簽名交易的存在,(2)它由多少個(gè)簽名者組成,以及(3)簽名者是誰。這不利于操作安全性,特別是對(duì)于像2FA這樣的用例。這不利于隱私。
另一方面,密鑰聚合允許簽名者保持匿名,并且不會(huì)通過泄露解鎖余額所需的密鑰來損害操作安全性。最重要的是,密鑰聚合使得多重簽名可以與常規(guī)交易無法區(qū)分:
比特幣中Schnorr的第一次迭代將淘汰當(dāng)前與ECDSA一起使用的OP_CHECKSIG和OP_CHECKMULTISIG系列操作碼,以支持一個(gè)名為OP_CHECKDLS的新類別。我這里不介紹太多細(xì)節(jié),DLS代表的是離散日志簽名,它允許使用更少的操作碼更有效地驗(yàn)證簽名。
在2018年初,Gregory Maxwell、Andrew Poelstra、Yannick Seurin和Pieter Wuille就一項(xiàng)名為MuSig的基于Schnorr的新多重簽名方案發(fā)表了一份白皮書。自MuSig發(fā)布以來,他們一直在努力將提出的多重簽名方案轉(zhuǎn)換為可用的代碼(https://github.com/ElementsProject/secp256k1-zkp/tree/secp256k1-zkp/src/modules/musig)。
在密鑰聚合的背景下,關(guān)于MuSig最有趣的事情之一,是在區(qū)塊鏈之外創(chuàng)建私人智能合約的可能性。從本質(zhì)上講,MuSig使多重簽名參與者能夠?qū)①|(zhì)押權(quán)附加到鏈下聚合密鑰,這不需要比特幣的共識(shí)規(guī)則來知道它。
2018年12月,安東尼·湯斯(Anthony Towns)是第一個(gè)為激活Schnorr 提出半正式提案(https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-December/016556.html)的核心開發(fā)者,該提案發(fā)布在比特幣開發(fā)郵件列表中。我預(yù)計(jì)在接下來的幾個(gè)月里會(huì)有更多關(guān)于潛在軟分叉的討論。
總結(jié)一下:比特幣中MuSig的第一次迭代將原生支持密鑰聚合,這可以立即(1)提高多重簽名的隱私,(2)提高交易驗(yàn)證的效率,(3)通過消除ECDSA的固有問題來提高安全性,(4)啟用像Taproot這樣的智能合約解決方案,我計(jì)劃之后講一下這一點(diǎn)。
但這只是一個(gè)開始。
交叉輸入聚合:隱私的下一步
如上一節(jié)所述,密鑰聚合對(duì)于花費(fèi)單個(gè)輸入的多重簽名是一個(gè)非常有用的功能。由于比特幣交易通常不止一個(gè)輸入,因此可以利用Schnorr的未來迭代來創(chuàng)建交互聚合簽名(IAS)方案,其中交易里的所有輸入與單個(gè)簽名同時(shí)使用。
再次,簽名者之間的交互完全是在鏈下的,但現(xiàn)在,單個(gè)簽名可用于花費(fèi)一筆交易的所有輸入。每個(gè)輸入仍然有自己的公鑰,但可由Schnorr IAS使用:
Greg Maxwell,Pieter Wuille,Anthony Towns等人一直致力于Taproot智能合約方案的進(jìn)化,以促進(jìn)這一功能。他們將此方案稱為廣義Taproot或G‘root ,它可以在將來更容易地將密鑰聚合轉(zhuǎn)換為交叉輸入聚合。
與密鑰聚合一樣,交叉輸入聚合進(jìn)一步提高了比特幣交易的效率。但是,最重要的是, 它可以在比特幣的基礎(chǔ)層上實(shí)現(xiàn)強(qiáng)大的隱私保護(hù)機(jī)制。
交叉輸入聚合最令人興奮的方面之一,是它可以改善比特幣上的CoinJoin交易。提一下背景,CoinJoin是一種隱私保護(hù)技術(shù),其中多個(gè)發(fā)送者和接收者在單筆交易中組合。目標(biāo)是使區(qū)塊鏈觀察者難以把特定的發(fā)送者和接收者聯(lián)系起來,從而使CoinJoin內(nèi)的實(shí)體能夠聲稱合理的拒絕。
這項(xiàng)技術(shù)最初由Greg Maxwell于2013年在BitcoinTalk上提出(https://bitcointalk.org/index.php?topic=279249),此后通過各種服務(wù)向用戶提供,包括JoinMarket、SharedCoin、ShufflePuff、DarkWallet和CoinShuffle。CoinJoin的各種變體,例如Wasabi錢包中使用的Chaumian CoinJoin方案,在原始模型之上做了極大的改進(jìn)。然而,由于匿名愛公司,它仍然依賴足夠多的用戶來混淆他們的余額。
今天CoinJoin的另一個(gè)問題是整個(gè)交易類型的可識(shí)別性(和潛在的審查)??紤]到今天區(qū)塊鏈分析中最常用的試探是密切關(guān)注特定輸入以確定兩個(gè)或更多地址是否屬于同一實(shí)體。例如,如果Alice發(fā)給Bob 1.982723 BTC,則區(qū)塊鏈觀察者可以跟蹤該特定輸入的小數(shù)以繪制交易圖 ,或者跟蹤歷史細(xì)目和UTXO所有權(quán)的更改。
為了防止這種情況,CoinJoin實(shí)現(xiàn)需要共同的價(jià)值面額,CoinJoin中的每個(gè)人都發(fā)送相同的金額。例如,Wasabi錢包的用戶在100名參與者的CoinJoin交易中發(fā)送相同的0.1BTC面額。雖然仍難以確定特定發(fā)件人和收件人之間的聯(lián)系,但區(qū)塊鏈觀察者可以尋找共同面額來識(shí)別CoinJoin發(fā)生的情況,并建議其客戶審查所涉及的所有實(shí)體。
交叉輸入聚合可以為這種情況提供幫助,因?yàn)樗趨f(xié)議層引入了額外的混淆機(jī)制。從本質(zhì)上講, 交叉輸入聚合可以構(gòu)建基于Schnorr的CoinJoin交易,其中n個(gè)簽名者在外人看來就像是正常的單簽名者交易。這也可能使CoinJoin更容易在流行的錢包中實(shí)現(xiàn),而無需繁重的工程設(shè)計(jì),這可能會(huì)增加網(wǎng)絡(luò)的整體匿名性 ,或使用此技術(shù)的用戶數(shù)量。
共同面額問題可以通過其他技術(shù)進(jìn)一步解決,例如Pay-to-EndPoint(P2EP),它將中本聰早期的隱私工作(參見P2IP:https://en.bitcoin.it/wiki/IP_transaction)與CoinJoin相結(jié)合,發(fā)送者和接收者都為交易提供輸入。這種新技術(shù)值得一篇獨(dú)立的帖子,但你可以在這里(https://blockstream.com/2018/08/08/improving-privacy-using-pay-to-endpoint/)、這里(https://medium.com/@nopara73/pay-to-endpoint-56eb05d3cac6)和這里(https://bitcoinmagazine.com/articles/blockchain-analysis-about-get-harder-p2ep-enters-testing-phase/)閱讀更多相關(guān)信息。
P2EP是向后兼容的,當(dāng)與Schnorr結(jié)合使用時(shí),它可以在比特幣的基礎(chǔ)層中實(shí)現(xiàn)足夠的隱私。
一石二鳥
我們可以合理地假設(shè)比特幣的大規(guī)模使用取決于其隱私保障的強(qiáng)度。與此同時(shí),閃電網(wǎng)絡(luò)的普及及其自身支持私人支付的潛力,也使得最后的比特幣被挖后對(duì)鏈上結(jié)算的未來需求產(chǎn)生了不確定性。因此,對(duì)隱私的需求和在沒有區(qū)塊獎(jiǎng)勵(lì)的情況下比特幣的長期可持續(xù)性可能是今天比特幣最令人擔(dān)憂的兩個(gè)問題。值得慶幸的是,Schnorr啟用的隱私機(jī)制可以同時(shí)解決這兩個(gè)問題。
我花了數(shù)千小時(shí)回顧了各種復(fù)雜的隱私技術(shù),包括Ring Signatures,Confidential Transactions,Bulletproofs,zkSNARKs,STARKs和MimbleWimble的不同實(shí)現(xiàn)。雖然其中一些技術(shù)已經(jīng)足夠成熟,可以在比特幣的基礎(chǔ)層上實(shí)現(xiàn),但它們?nèi)匀痪哂歇?dú)特的風(fēng)險(xiǎn)和權(quán)衡。正如您可能已經(jīng)聽說的那樣,比特幣是不喜歡硬分叉的,這使得我們很難想象任何這些技術(shù)都可以實(shí)現(xiàn)的情況。
人們似乎在反復(fù)擔(dān)憂使用同態(tài)加密或非交互式零知識(shí)證明系統(tǒng),因?yàn)樗鼈冏柚沽吮忍貛咆泿呕A(chǔ)的完全可聽性(audibility)。換句話說,當(dāng)對(duì)交易價(jià)值進(jìn)行編碼時(shí),很難核實(shí)比特幣的供應(yīng)上限是否實(shí)際上是2100萬 BTC。同樣,當(dāng)隱藏交易金額時(shí),通脹錯(cuò)誤和雙重支付變得難以確定。這是一個(gè)相當(dāng)大的權(quán)衡,推動(dòng)在比特幣的基礎(chǔ)層實(shí)現(xiàn)最新隱私可能會(huì)分裂社區(qū)。
但是,如果比特幣的基礎(chǔ)層獲得足夠的隱私,甚至不需要實(shí)施這些技術(shù)呢?
Schnorr絕對(duì)可以幫到你。如果大多數(shù)比特幣交易都是將Schnorr的交叉輸入聚合功能與P2EP結(jié)合使用,那么通過簡單地查看區(qū)塊鏈,幾乎不可能對(duì)特定發(fā)送者和接收者進(jìn)行去模糊處理。比特幣的供應(yīng)仍然是可審計(jì)的,但其交易也將提供更強(qiáng)大的隱私保障。
如果存在對(duì)隱私的需求,也可以合理地假設(shè)比特幣用戶和企業(yè)可能都想要被動(dòng)地參與CoinJoin交易,并讓他們的錢包在后臺(tái)不斷混合他們的余額。在這種情況下,對(duì)隱私的需求直接轉(zhuǎn)化為鏈上交易費(fèi)用的增加。與SegWit一樣,用戶最有可能首先支持該技術(shù)的采用,但企業(yè)必須在某些時(shí)候效仿以保持重要性。
隨著時(shí)間的推移,采用這些技術(shù)將使區(qū)塊鏈分析過時(shí),并有效地從比特幣企業(yè)所需的 AML/KYC程序中移除,就像實(shí)物現(xiàn)金一樣。當(dāng)您將現(xiàn)金存入您的銀行賬戶時(shí),銀行將不會(huì)檢查鈔票上是否有藥物痕跡,并在發(fā)現(xiàn)藥物的情況下阻止您的存款。隨著區(qū)塊鏈分析的擴(kuò)散,加上沒有Schnorr的CoinJoin等技術(shù)的缺點(diǎn),沒有理由認(rèn)為比特幣已經(jīng)做到這一點(diǎn)。
當(dāng)在特定地址和UTXO上執(zhí)行AML/KYC變得無關(guān)緊要,并且焦點(diǎn)轉(zhuǎn)向個(gè)人而非余額時(shí),比特幣企業(yè)將完全接受隱私。事實(shí)上,我懷疑當(dāng)這種情況發(fā)生時(shí),隱私和可互換性將成為未來比特幣企業(yè)價(jià)值主張的一個(gè)組成部分。
最終,在比特幣的基礎(chǔ)層上采用更強(qiáng)大的隱私機(jī)制將進(jìn)一步增強(qiáng)其用戶的權(quán)力,同時(shí),有助于在最后的比特幣被挖后創(chuàng)建一個(gè)充滿活力的交易費(fèi)市場(chǎng)。我的猜測(cè)是,這一切都始于Schnorr的激活,而每個(gè)人似乎都參與其中。
評(píng)論
查看更多