零知识证明应用到区块链中的技术挑战
零知識(shí)證明應(yīng)用到區(qū)塊鏈中的技術(shù)挑戰(zhàn)
李康1,2, 孫毅1,2, 張珺3, 李軍4, 周繼華5, 李忠誠(chéng)1
1. 中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190
2. 中國(guó)科學(xué)院大學(xué),北京 100049
3. 內(nèi)蒙古大學(xué),內(nèi)蒙古自治區(qū) 呼和浩特 010021
4. 布比(北京)網(wǎng)絡(luò)技術(shù)有限公司,北京 100190
5. 重慶金美通信有限責(zé)任公司,重慶 400030
摘要:區(qū)塊鏈?zhǔn)且环N以密碼學(xué)算法為基礎(chǔ)的點(diǎn)對(duì)點(diǎn)分布式賬本技術(shù),然而,公開透明的區(qū)塊鏈賬本輔以社會(huì)學(xué)挖掘、數(shù)據(jù)挖掘等統(tǒng)計(jì)學(xué)方法,使得用戶的隱私面臨重大威脅,因而隱私保護(hù)成為當(dāng)前區(qū)塊鏈技術(shù)研究的熱點(diǎn)。總結(jié)了已有的隱私保護(hù)方案,重點(diǎn)聚焦于零知識(shí)證明技術(shù),闡述并分析了零知識(shí)證明應(yīng)用到區(qū)塊鏈隱私保護(hù)方案中的技術(shù)挑戰(zhàn),并給出了具有指導(dǎo)意義的解決方案。
關(guān)鍵詞:區(qū)塊鏈;隱私保護(hù);零知識(shí)證明
doi:10.11959/j.issn.2096-0271.2018006
論文引用格式:李康, 孫毅, 張珺, 等. 零知識(shí)證明應(yīng)用到區(qū)塊鏈中的技術(shù)挑戰(zhàn)[J]. 大數(shù)據(jù), 2018, 4(1): 57-65.
LI K, SUN Y, ZHANG J, et al. Technical challenges in applying zero-knowledge proof to blockchain[J]. Big Data Research, 2018, 4(1): 57-65.1? 引言
區(qū)塊鏈的出現(xiàn)首次從技術(shù)上解決了基于信任的中心化模型帶來(lái)的安全問(wèn)題,它基于密碼學(xué)算法保證了價(jià)值的安全轉(zhuǎn)移,基于散列鏈及時(shí)間戳機(jī)制保證了數(shù)據(jù)的可追溯、不可篡改特性,基于共識(shí)算法保證了節(jié)點(diǎn)間區(qū)塊數(shù)據(jù)的一致性。區(qū)塊鏈這種技術(shù)體系正在深刻地變革著各行各業(yè)的生產(chǎn)方式,成為未來(lái)數(shù)字經(jīng)濟(jì)時(shí)代價(jià)值互聯(lián)網(wǎng)的構(gòu)建基石。
自2008年比特幣提出以來(lái),區(qū)塊鏈技術(shù)得到了快速發(fā)展和應(yīng)用,承載著各種功能的區(qū)塊鏈平臺(tái)應(yīng)運(yùn)而生,如智能合約平臺(tái)以太坊、去中心存儲(chǔ)平臺(tái)Filecoin以及金融商業(yè)級(jí)解決方案Corda等。基于區(qū)塊鏈的行業(yè)應(yīng)用也越來(lái)越豐富,例如,倫敦證券交易所、倫敦清算所、法國(guó)興業(yè)銀行、瑞士瑞銀集團(tuán)以及歐洲清算中心等機(jī)構(gòu)聯(lián)合成立的區(qū)塊鏈集團(tuán)將區(qū)塊鏈技術(shù)應(yīng)用到證券領(lǐng)域,旨在通過(guò)區(qū)塊鏈技術(shù)改變證券交易的清算和結(jié)算方式;美國(guó)Factom公司將區(qū)塊鏈技術(shù)應(yīng)用到數(shù)字存證領(lǐng)域,嘗試通過(guò)區(qū)塊鏈技術(shù)革新商業(yè)社會(huì)以及政府部門的數(shù)據(jù)管理和數(shù)據(jù)記錄方式;美國(guó)Chronicled公司將區(qū)塊鏈技術(shù)應(yīng)用到供應(yīng)鏈溯源領(lǐng)域,保證商品的真實(shí)性,保護(hù)消費(fèi)者權(quán)益。
然而,區(qū)塊鏈的公開透明也給用戶的隱私保護(hù)帶來(lái)了巨大的挑戰(zhàn)。區(qū)塊鏈參與方維護(hù)一個(gè)共同的賬本,皆可查看并且驗(yàn)證其他參與方的交易數(shù)據(jù),這就給參與方的隱私泄露開了一道大門,如圖1所示[1]。因此,隱私保護(hù)成為了制約區(qū)塊鏈應(yīng)用發(fā)展的瓶頸之一。
圖1 ?2013年比特幣交易圖譜
為此,如何在不犧牲區(qū)塊鏈人人可驗(yàn)證、公開透明等特性的前提下,使參與方的隱私數(shù)據(jù)受到保護(hù),成為當(dāng)前區(qū)塊鏈研究領(lǐng)域的主要科學(xué)問(wèn)題。
針對(duì)上述現(xiàn)狀,本文將總結(jié)區(qū)塊鏈領(lǐng)域中現(xiàn)有的隱私保護(hù)方案,重點(diǎn)圍繞零知識(shí)證明技術(shù),闡述其如何應(yīng)用到區(qū)塊鏈中實(shí)現(xiàn)交易隱私保護(hù),并介紹零知識(shí)證明與區(qū)塊鏈結(jié)合中亟待解決的幾個(gè)技術(shù)挑戰(zhàn)。
2 ?區(qū)塊鏈隱私保護(hù)方案研究現(xiàn)狀
區(qū)塊鏈中最主要的組成部分就是交易,交易是驅(qū)動(dòng)區(qū)塊鏈系統(tǒng)運(yùn)轉(zhuǎn)的信息載體,通過(guò)交易,區(qū)塊鏈節(jié)點(diǎn)可以將資金在用戶之間進(jìn)行轉(zhuǎn)移,并進(jìn)行一系列更為復(fù)雜的操作,比如執(zhí)行相關(guān)的智能合約。交易涉及的基本元素有發(fā)送方、接收方、金額,雖然發(fā)送方與接收方在區(qū)塊鏈系統(tǒng)中一般表示為公鑰地址,但是輔之社會(huì)學(xué)挖掘方法,可以將現(xiàn)實(shí)世界中的真實(shí)身份與公鑰地址聯(lián)系起來(lái),而區(qū)塊鏈作為公開的交易賬本,任何人均可從中查出其他用戶在該系統(tǒng)中發(fā)生過(guò)的行為,如資金流轉(zhuǎn)過(guò)程、合約執(zhí)行過(guò)程等,從而泄露了用戶的隱私。因此,如何保證用戶在區(qū)塊鏈系統(tǒng)中的操作行為不被其他人獲取是區(qū)塊鏈隱私保護(hù)的主要內(nèi)容,而實(shí)現(xiàn)這一目標(biāo)的解決方案就是保護(hù)交易的關(guān)鍵性信息不被泄露。
自比特幣后的區(qū)塊鏈平臺(tái)紛紛開始重視交易的隱私保護(hù),并從協(xié)議級(jí)別支持交易的隱私保護(hù),而且無(wú)需喪失區(qū)塊鏈公開可驗(yàn)證的特性,這為區(qū)塊鏈的進(jìn)一步應(yīng)用發(fā)展奠定了基礎(chǔ)。
達(dá)世幣是最早在區(qū)塊鏈中實(shí)現(xiàn)了交易隱私保護(hù)并且得到大規(guī)模應(yīng)用的平臺(tái)。它采用了一種稱為“混幣”的技術(shù),實(shí)現(xiàn)了匿名發(fā)送(darksend)的功能。匿名發(fā)送是混幣技術(shù)的一種實(shí)現(xiàn)版本,基本思想是使用網(wǎng)絡(luò)中的主節(jié)點(diǎn)將來(lái)自多個(gè)用戶的交易混合形成單筆交易。在達(dá)世幣匿名發(fā)送中,每個(gè)用戶需將交易發(fā)送至主節(jié)點(diǎn),主節(jié)點(diǎn)需要至少3筆交易進(jìn)行混合,然后形成單一交易中的多個(gè)輸出,同時(shí)確保輸出亂序。為了從整體上提高系統(tǒng)隱私性,規(guī)定使用固定面值0.1、1、10、100的交易金額,在每輪混幣過(guò)程中,所有用戶應(yīng)該提交相同面值的輸入與輸出,除了使用相同面值外,交易手續(xù)費(fèi)會(huì)從交易中移除,并且在獨(dú)立、不可鏈接的交易中支付。在匿名發(fā)送中,主節(jié)點(diǎn)承擔(dān)了保護(hù)隱私的責(zé)任,存在被攻擊的可能。通過(guò)引入 鏈?zhǔn)交旌?#xff08;chaining)技術(shù),用戶會(huì)隨機(jī)選擇多個(gè)主節(jié)點(diǎn),這些主節(jié)點(diǎn)構(gòu)成一條鏈,最后輸出混合后的交易;通過(guò)引入基于中繼系統(tǒng)的盲化技術(shù)(blinding),用戶可不直接向交易池提交交易,相反在全網(wǎng)中隨機(jī)選擇主節(jié)點(diǎn),然后要求該主節(jié)點(diǎn)將交易提交至目標(biāo)主節(jié)點(diǎn),這樣目標(biāo)主節(jié)點(diǎn)就難以獲取用戶的真實(shí)身份。但是達(dá)世幣的局限性在于,節(jié)點(diǎn)始終需要信任網(wǎng)絡(luò)挑選的主節(jié)點(diǎn)以及參與混幣服務(wù)的用戶,一旦主節(jié)點(diǎn)被控制,或者參與混幣的用戶是惡意的,都會(huì)在一定程度上導(dǎo)致用戶隱私泄露。
為了避免達(dá)世幣中存在的主節(jié)點(diǎn)信任風(fēng)險(xiǎn),門羅幣采用了一種不依賴于主節(jié)點(diǎn)的加密混合方案,其中涉及兩個(gè)關(guān)鍵的技術(shù)點(diǎn):一是隱秘地址技術(shù),另一個(gè)是環(huán)簽名技術(shù)。隱秘地址的基本原理是,當(dāng)發(fā)送者發(fā)送一筆資金時(shí),首先通過(guò)接收者地址,基于橢圓曲線生成一次性公鑰,然后發(fā)送者將交易連同附加信息廣播到區(qū)塊鏈網(wǎng)絡(luò)中,接收者時(shí)刻使用自己的私鑰監(jiān)測(cè)區(qū)塊鏈中的交易,如果能成功解析該交易,證明發(fā)送者已發(fā)送相關(guān)交易;當(dāng)接收者想要花費(fèi)交易時(shí),使用私鑰連同附加信息計(jì)算出簽名私鑰,對(duì)交易進(jìn)行簽名即可花費(fèi),保障了輸入與輸出地址不可關(guān)聯(lián)的特性。環(huán)簽名基本思想是利用自己的私鑰以及若干個(gè)用戶的公鑰對(duì)交易簽名,驗(yàn)證簽名時(shí),則使用其他人的公鑰以及簽名中包含的參數(shù),從而達(dá)成隱藏發(fā)送者信息的目的。但是門羅幣的局限性在于,用戶在使用環(huán)簽名技術(shù)時(shí),需要依賴其他用戶的公鑰,如果其他用戶是惡意的,則會(huì)在一定程度上導(dǎo)致用戶隱私泄露。
2016年11月,國(guó)際著名銀行區(qū)塊鏈聯(lián)盟 R3組織開源了其為金融機(jī)構(gòu)打造的商業(yè)級(jí)解決方案——Corda平臺(tái)。在金融機(jī)構(gòu)業(yè)務(wù)環(huán)境中,隱私保護(hù)是必不可少的一環(huán),Corda在這方面下了不少工夫。首先,傳統(tǒng)的區(qū)塊鏈中,所有節(jié)點(diǎn)都會(huì)維護(hù)一個(gè)共同的賬本,隱私泄露的可能性會(huì)大大增加,因此,Corda直接摒棄了交易進(jìn)行廣播的行為,只在交易相關(guān)方之間進(jìn)行交易的傳播與見(jiàn)證。其次,采取了敏感信息抽離(tear-off)技術(shù),即將敏感信息進(jìn)行散列,并且組成分層 Merkle樹,使得非敏感信息仍可以通過(guò) Merkle樹進(jìn)行分支驗(yàn)證,而一旦出現(xiàn)法律糾紛時(shí),可以申請(qǐng)披露敏感信息,進(jìn)行驗(yàn)證。最后,采用了復(fù)合簽名技術(shù),通過(guò)為每個(gè)簽名主體賦予協(xié)商好的權(quán)重,輔以簽名閾值設(shè)置,則可以設(shè)置靈活的簽名方案,從而保護(hù)簽名人的信息。
2016年 11月,以隱私為主要功能的零幣(Zcash)[2]區(qū)塊鏈系統(tǒng)進(jìn)行了開源,致力于打造一個(gè)完美的隱私保護(hù)平臺(tái)。零幣使用了零知識(shí)證明中最為著名的zkSNARKs[3-10]技術(shù),該技術(shù)具有非交互性、簡(jiǎn)潔性、公開可驗(yàn)證等特性。零幣系統(tǒng)中有透明地址與匿名地址之分,使用匿名地址可達(dá)到交易隱私保護(hù)的目的,包含匿名地址的交易稱為隱秘交易,隱秘交易將發(fā)送方、接收方、轉(zhuǎn)移金額全部隱藏在生成的零知識(shí)證據(jù)中,區(qū)塊鏈節(jié)點(diǎn)根據(jù)事先生成的零知識(shí)證據(jù)驗(yàn)證密鑰,可驗(yàn)證隱秘交易的真實(shí)性,保證只有真實(shí)的發(fā)送方在有真實(shí)資產(chǎn)的情況下才可以完成一筆有效的隱秘交易。由于隱秘交易不包含發(fā)送方、接收方、轉(zhuǎn)移金額等關(guān)鍵性信息,使得攻擊者無(wú)法根據(jù)交易追溯性獲取更多信息,從而有效地保護(hù)了用戶的隱私。
除上述已應(yīng)用到區(qū)塊鏈平臺(tái)進(jìn)行隱私保護(hù)的技術(shù)之外,區(qū)塊鏈研究人員還將同態(tài)加密技術(shù)列為隱私保護(hù)的關(guān)鍵性密碼學(xué)技術(shù)。同態(tài)加密的特性使得交易相關(guān)方見(jiàn)證明文,而交易無(wú)關(guān)方可以見(jiàn)證密文,即可驗(yàn)證交易的有效性。但是由于同態(tài)加密技術(shù)效率較為低下,與區(qū)塊鏈的結(jié)合還處于一個(gè)相對(duì)初級(jí)的階段。如果未來(lái)同態(tài)加密技術(shù)取得重大突破,將會(huì)大大促進(jìn)同態(tài)加密技術(shù)在區(qū)塊鏈系統(tǒng)中的應(yīng)用。
3 ?零知識(shí)證明應(yīng)用到區(qū)塊鏈中的技術(shù)挑戰(zhàn)
零知識(shí)證明是指一方(證明者)向另一方(驗(yàn)證者)證明一個(gè)陳述是正確的,而無(wú)需透露除該陳述正確以外的任何信息,適用于解決任何NP問(wèn)題。而區(qū)塊鏈恰好可以抽象成多方驗(yàn)證交易是否有效(NP問(wèn)題)的平臺(tái),因此,兩者是天然相適應(yīng)的。將零知識(shí)證明應(yīng)用到區(qū)塊鏈中需要考慮的技術(shù)挑戰(zhàn)分為兩大類:一類是適用于隱私保護(hù)的區(qū)塊鏈架構(gòu)設(shè)計(jì)方案,包括隱秘交易所花資產(chǎn)存在性證明、匿名資產(chǎn)雙花問(wèn)題、匿名資產(chǎn)花費(fèi)與轉(zhuǎn)移、隱秘交易不可區(qū)分等技術(shù)挑戰(zhàn);另一類是零知識(shí)證明技術(shù)本身帶來(lái)的挑戰(zhàn),包括參數(shù)初始化階段、算法性能以及安全問(wèn)題等技術(shù)挑戰(zhàn)。
3.1 ?隱秘交易所花資產(chǎn)存在性證明
在不使用零知識(shí)證明的區(qū)塊鏈系統(tǒng)中,證明交易所花資產(chǎn)存在有兩種模型:未花費(fèi)的交易輸出(unspent transaction outputs,UTXO)模型與賬戶模型。在UTXO模型中,每一筆交易的輸入會(huì)引用來(lái)自前一筆交易的輸出,區(qū)塊鏈節(jié)點(diǎn)會(huì)根據(jù)保存的UTXO集合來(lái)驗(yàn)證一筆交易花費(fèi)資產(chǎn)是否存在;在賬戶模型中,每一筆交易會(huì)指定發(fā)送方,區(qū)塊鏈節(jié)點(diǎn)會(huì)根據(jù)保存的賬戶信息驗(yàn)證一筆交易花費(fèi)資產(chǎn)是否存在并且足夠。如果在區(qū)塊鏈中使用零知識(shí)證明保證交易的隱私,首要解決的就是如何證明隱秘交易所花資產(chǎn)存在于區(qū)塊鏈上。由于隱秘交易隱藏了發(fā)送者地址信息,所以隱秘交易所花資產(chǎn)不能來(lái)源于區(qū)塊鏈中已存在的透明資產(chǎn),也就意味著不能明確地引用前一筆交易輸出或者賬戶。因此,隱秘交易花費(fèi)的資產(chǎn)應(yīng)該是匿名的,這就需要設(shè)計(jì)一套機(jī)制來(lái)發(fā)行匿名資產(chǎn),并對(duì)匿名資產(chǎn)進(jìn)行標(biāo)識(shí)。零幣系統(tǒng)中存在兩種匿名資產(chǎn)發(fā)行機(jī)制:一是花費(fèi)“挖礦”所得的獎(jiǎng)勵(lì),即將獎(jiǎng)勵(lì)轉(zhuǎn)換為匿名資產(chǎn),這樣做的目的是為了系統(tǒng)中有足夠多的匿名資產(chǎn),防止匿名資產(chǎn)被追蹤;二是通過(guò)正常的交易將透明資產(chǎn)轉(zhuǎn)換為匿名資產(chǎn)。那么,當(dāng)隱秘交易花費(fèi)匿名資產(chǎn)時(shí),如何讓區(qū)塊鏈節(jié)點(diǎn)相信該匿名資產(chǎn)的存在?零幣系統(tǒng)給鑄造的每一個(gè)匿名資產(chǎn)打上一個(gè)數(shù)字承諾的烙印,并將這些數(shù)字承諾組織成一棵Merkle樹,用來(lái)標(biāo)識(shí)系統(tǒng)中已出現(xiàn)過(guò)的所有匿名資產(chǎn)(包括花費(fèi)和未花費(fèi)的)。隱秘交易包含匿名資產(chǎn)所在的Merkle樹的根散列值以及證明該匿名資產(chǎn)確實(shí)存在于Merkle樹中的零知識(shí)證據(jù),區(qū)塊鏈節(jié)點(diǎn)通過(guò)公開的驗(yàn)證密鑰可驗(yàn)證隱秘交易所花費(fèi)的資產(chǎn)確實(shí)在區(qū)塊鏈的系統(tǒng)中出現(xiàn)過(guò),但是不知道具體是哪一個(gè)匿名資產(chǎn),也不能證明該匿名資產(chǎn)是否已經(jīng)被花費(fèi),因此會(huì)存在雙花問(wèn)題,接下來(lái)將會(huì)探討如何解決匿名資產(chǎn)雙花的問(wèn)題。綜上所述,區(qū)塊鏈交易隱私保護(hù)方案需要設(shè)計(jì)一套匿名資產(chǎn)發(fā)行機(jī)制及存在性證明機(jī)制(Merkle樹),確保其公開可驗(yàn)證特性。
3.2 ?匿名資產(chǎn)雙花問(wèn)題
區(qū)塊鏈要解決的一個(gè)最核心的問(wèn)題就是資金雙花,在UTXO模型的區(qū)塊鏈中,區(qū)塊鏈節(jié)點(diǎn)都要維護(hù)UTXO集合,當(dāng)驗(yàn)證一筆交易時(shí),將該交易引用的輸出從UTXO集合中移除,這樣當(dāng)驗(yàn)證另一筆花費(fèi)同樣輸出的交易時(shí),會(huì)因?yàn)樵赨TXO集合中無(wú)法查找到該輸出而變得無(wú)效。在賬戶模型中,區(qū)塊鏈節(jié)點(diǎn)皆維護(hù)賬戶狀態(tài),其中包括余額,當(dāng)驗(yàn)證交易時(shí),首先會(huì)判斷賬戶余額是否足夠,因此也可有效阻止雙花。為了實(shí)現(xiàn)區(qū)塊鏈交易隱私保護(hù),需要使用匿名資產(chǎn),然而會(huì)存在雙花問(wèn)題,所以需進(jìn)一步加強(qiáng)匿名資產(chǎn)在區(qū)塊鏈中的屬性。零幣系統(tǒng)賦予每一個(gè)匿名資產(chǎn)唯一的序列號(hào),區(qū)塊鏈節(jié)點(diǎn)將出現(xiàn)過(guò)的所有序列號(hào)保存起來(lái),當(dāng)發(fā)起一筆隱秘交易時(shí),需要披露序列號(hào),節(jié)點(diǎn)檢查該序列號(hào)是否已經(jīng)出現(xiàn)過(guò),這樣能夠有效地阻止匿名資產(chǎn)的雙花問(wèn)題。注意,應(yīng)選擇合適的散列函數(shù)以及隨機(jī)數(shù),編碼匿名資產(chǎn)數(shù)字承諾與序列號(hào),確保它們相互關(guān)聯(lián),并且一一對(duì)應(yīng)。
3.3 ?匿名資產(chǎn)花費(fèi)與轉(zhuǎn)移
在不使用零知識(shí)證明的區(qū)塊鏈系統(tǒng)中,資產(chǎn)花費(fèi)是通過(guò)公鑰私鑰對(duì)進(jìn)行的,資產(chǎn)轉(zhuǎn)移是通過(guò)在交易中指定接收方地址完成的。為了實(shí)現(xiàn)隱私保護(hù),隱秘交易需要隱藏發(fā)送者以及接收者,那么區(qū)塊鏈節(jié)點(diǎn)如何驗(yàn)證匿名資產(chǎn)被擁有的人花費(fèi),并且轉(zhuǎn)移到了合適的接收方?隱秘交易花費(fèi)的是匿名資產(chǎn),匿名資產(chǎn)應(yīng)至少包括金額、所屬公鑰地址等屬性,因此,在生成匿名資產(chǎn)時(shí),需要將金額、所屬公鑰地址編碼進(jìn)數(shù)字承諾。當(dāng)花費(fèi)一筆匿名資產(chǎn)時(shí),將私鑰、公鑰與數(shù)字承諾之間的生成關(guān)系編碼進(jìn)零知識(shí)證據(jù)中,結(jié)合匿名資產(chǎn)存在性證明,區(qū)塊鏈節(jié)點(diǎn)可使用零知識(shí)證明的公開驗(yàn)證密鑰來(lái)驗(yàn)證數(shù)字承諾確實(shí)存在,而且是通過(guò)相應(yīng)的公鑰地址、金額生成,并且發(fā)送交易的人擁有公鑰地址對(duì)應(yīng)的私鑰,確保只有匿名資產(chǎn)所屬者才擁有花費(fèi)的權(quán)利。
匿名資產(chǎn)所有權(quán)的轉(zhuǎn)移是如何發(fā)生的?由于隱秘交易中不含接收方,并且每一個(gè)匿名資產(chǎn)都與所屬者公鑰相關(guān)聯(lián),因此采用銷毀舊匿名資產(chǎn)、生成新匿名資產(chǎn)的策略保證匿名資產(chǎn)的轉(zhuǎn)移。匿名資產(chǎn)數(shù)字承諾的生成需要所屬公鑰地址、金額等信息,并且這些原始信息也要發(fā)送給接收方,因此接收方需要提供兩個(gè)公鑰,一個(gè)是支付公鑰,一個(gè)是加密公鑰。支付公鑰供發(fā)送者生成數(shù)字承諾,加密公鑰供發(fā)送者加密生成數(shù)字承諾過(guò)程中用到的信息。當(dāng)然,支付公鑰與加密公鑰可以是同一個(gè),但是為了安全著想,建議使用不同的公鑰。接收方需要監(jiān)聽(tīng)區(qū)塊鏈上的交易,嘗試用自己的私鑰解密隱秘交易中包含的加密信息,如果解密成功,則代表該隱秘交易的接收方是自己,將該匿名資產(chǎn)歸入自己的支付密鑰對(duì)賬戶下,便于以后花費(fèi)。
除匿名資產(chǎn)花費(fèi)以及轉(zhuǎn)移外,還應(yīng)將花費(fèi)的資產(chǎn)總額與轉(zhuǎn)移產(chǎn)生的資產(chǎn)總額之間的關(guān)系編碼進(jìn)零知識(shí)證據(jù),即花費(fèi)的資產(chǎn)總額應(yīng)該大于或等于轉(zhuǎn)移產(chǎn)生的資產(chǎn)總額,以保證隱秘交易的有效性。
綜上所述,零知識(shí)證明應(yīng)用到區(qū)塊鏈中需要設(shè)計(jì)一套合理的匿名資產(chǎn)所有權(quán)驗(yàn)證規(guī)則及轉(zhuǎn)移規(guī)則,將這些規(guī)則使用零知識(shí)證明技術(shù)編碼進(jìn)零知識(shí)證據(jù),從而達(dá)到區(qū)塊鏈公開可驗(yàn)證的特性。
3.4 ?隱秘交易不可區(qū)分特性
為達(dá)到交易隱私保護(hù)的目的,區(qū)塊鏈中的隱秘交易理應(yīng)是不可區(qū)分的,即無(wú)法通過(guò)對(duì)比、分析隱秘交易對(duì)其進(jìn)行聚類。另外,由于零知識(shí)證明需要電路(驗(yàn)證規(guī)則轉(zhuǎn)換而來(lái))是固定的,因此,在使用零知識(shí)證明的區(qū)塊鏈中,隱秘交易應(yīng)該具有固定的輸入與輸出數(shù)量,當(dāng)輸入與輸出數(shù)量無(wú)法滿足規(guī)定數(shù)量時(shí),應(yīng)該構(gòu)建隨機(jī)冗余的輸入與輸出,并且生成的零知識(shí)證據(jù)中應(yīng)包含判定輸入與輸出是冗余還是真實(shí)的條件,區(qū)塊鏈節(jié)點(diǎn)接收到隱秘交易時(shí),會(huì)根據(jù)輸入與輸出的真實(shí)與否決定是否處理對(duì)應(yīng)的匿名資產(chǎn),隱秘交易的不可區(qū)分特性進(jìn)一步加強(qiáng)了交易隱私的保護(hù)。
3.5 ?零知識(shí)證明初始化階段
零知識(shí)證明分交互式與非交互式兩種,而在區(qū)塊鏈的系統(tǒng)中,交互式是不適合的,因?yàn)閰^(qū)塊鏈中的每一個(gè)節(jié)點(diǎn)都要驗(yàn)證交易的有效性,而交互式需要發(fā)送方與區(qū)塊鏈系統(tǒng)全網(wǎng)驗(yàn)證節(jié)點(diǎn)進(jìn)行信息交換才能達(dá)到保護(hù)隱私的目的,所以在區(qū)塊鏈系統(tǒng)中應(yīng)該采取非交互式零知識(shí)證明。非交互式零知識(shí)證明中, zkSNARKs最為成熟。zkSNARKs算法需要一個(gè)中心化的初始化階段,用于創(chuàng)建生成零知識(shí)證據(jù)的證明密鑰以及驗(yàn)證零知識(shí)證據(jù)的驗(yàn)證密鑰。而區(qū)塊鏈本身是一個(gè)去中心化的系統(tǒng),那么zkSNARKs算法的初始化階段無(wú)疑給區(qū)塊鏈帶來(lái)了信任風(fēng)險(xiǎn),因此如何保證zkSNARKs算法可信地構(gòu)造初始化階段是應(yīng)用到區(qū)塊鏈中需要克服的關(guān)鍵性技術(shù)挑戰(zhàn)。零幣系統(tǒng)中設(shè)計(jì)了一種多方安全計(jì)算式的初始化階段[11],即多方在不泄露各自信息的前提下協(xié)同計(jì)算出證明密鑰與驗(yàn)證密鑰,但是證明密鑰與驗(yàn)證密鑰只需生成一次,后續(xù)可以反復(fù)使用。但是零幣系統(tǒng)使用的多方安全計(jì)算局限于少數(shù)人,無(wú)法讓更多人參與進(jìn)來(lái),因此后續(xù)需要進(jìn)一步改進(jìn)多方安全計(jì)算的性能,使zkSNARKs算法初始化的構(gòu)建方案更加去中心化。
3.6 ?zkSNARKs算法性能
zkSNARKs算法目前的性能較差,計(jì)算復(fù)雜度主要來(lái)自于底層依賴的橢圓曲線配對(duì)運(yùn)算,目前零幣系統(tǒng)使用的是BN254橢圓曲線[12],生成一筆隱秘交易對(duì)應(yīng)的零知識(shí)證據(jù)需要40 s左右,并占用約4 GB內(nèi)存,這導(dǎo)致無(wú)法在現(xiàn)有的移動(dòng)設(shè)備上使用 zkSNARKs算法,并且40 s的時(shí)間在高并發(fā)場(chǎng)景下也顯得很慢。因此需要精心設(shè)計(jì)對(duì)配對(duì)操作友好的橢圓曲線,目前已有相關(guān)研究進(jìn)展,例如零幣系統(tǒng)開發(fā)者已設(shè)計(jì)出BLS12-381[13]橢圓曲線,初步測(cè)試,可以將生成零知識(shí)證據(jù)的時(shí)間縮短到7 s,內(nèi)存占用縮減到40 MB左右,大大提高了zkSNARKs算法的可用性。
zkSNARKs算法安全性依賴于底層選取的橢圓曲線,BN254橢圓曲線實(shí)現(xiàn)的安全性約為128 bit,最近有研究[14]表明,BN類橢圓曲線的安全性實(shí)際為 110 bit左右。因此設(shè)計(jì)橢圓曲線時(shí),應(yīng)考慮該曲線對(duì)應(yīng)的安全性。
綜上所述,當(dāng)零知識(shí)證明算法應(yīng)用于區(qū)塊鏈隱私保護(hù)時(shí),需要滿足區(qū)塊鏈的核心功能特性,即資產(chǎn)確權(quán)及轉(zhuǎn)移和防止雙花。本文基于零知識(shí)證明算法,給出了一套匿名資產(chǎn)發(fā)行、轉(zhuǎn)移機(jī)制,在保護(hù)用戶隱私的同時(shí)有效地實(shí)現(xiàn)了資產(chǎn)確權(quán)和轉(zhuǎn)移以及防止雙花的功能特性。在零知識(shí)證明與區(qū)塊鏈實(shí)際結(jié)合中,建議使用成熟、高效、安全的zkSNARKs算法,并給出了zkSNARKs算法進(jìn)一步優(yōu)化的方向。
4 ?結(jié)束語(yǔ)
在數(shù)字經(jīng)濟(jì)全球化背景下,區(qū)塊鏈技術(shù)的出現(xiàn)使得通過(guò)互聯(lián)網(wǎng)進(jìn)行價(jià)值轉(zhuǎn)移成為可能,然而區(qū)塊鏈的公開透明特性也給人們的隱私保護(hù)帶來(lái)了巨大的挑戰(zhàn),因此如何實(shí)現(xiàn)隱私保護(hù)成為了阻礙區(qū)塊鏈進(jìn)一步發(fā)展的難題。
本文詳細(xì)講解了當(dāng)下區(qū)塊鏈平臺(tái)實(shí)現(xiàn)隱私保護(hù)采取的方法,重點(diǎn)圍繞零知識(shí)證明技術(shù)展開,闡述了零知識(shí)證明與區(qū)塊鏈結(jié)合需要考慮的幾個(gè)常見(jiàn)問(wèn)題,并且對(duì)零知識(shí)證明在區(qū)塊鏈中的技術(shù)挑戰(zhàn)做了說(shuō)明。未來(lái)區(qū)塊鏈的隱私保護(hù)仍然任重而道遠(yuǎn),如何實(shí)現(xiàn)快速高效、可信的零知識(shí)證明算法以及如何實(shí)現(xiàn)能夠抵抗量子計(jì)算的零知識(shí)證明算法,都是需要進(jìn)一步解決的問(wèn)題。
點(diǎn)擊下方?閱讀原文?即可獲取全文
作 者 簡(jiǎn) 介
李康(1992-),男,中國(guó)科學(xué)院計(jì)算技術(shù)研究所碩士生,主要研究方向?yàn)閰^(qū)塊鏈技術(shù)。
?
孫毅(1979-),男,博士,中國(guó)科學(xué)院計(jì)算技術(shù)研究所研究員,主要研究方向?yàn)閰^(qū)塊鏈、互聯(lián)網(wǎng)服務(wù)優(yōu)化。
?
張珺(1975-),女,博士,內(nèi)蒙古大學(xué)副教授,主要研究方向?yàn)槲磥?lái)互聯(lián)網(wǎng)、區(qū)塊鏈技術(shù)。
?
李軍(1974-),男,博士,布比(北京)網(wǎng)絡(luò)技術(shù)有限公司首席運(yùn)營(yíng)官,主要研究方向?yàn)閰^(qū)塊鏈技術(shù)。
?
周繼華(1979-),男,博士,重慶金美通信有限責(zé)任公司副總工程師,主要研究方向?yàn)橥ㄐ虐踩?/p>
?
李忠誠(chéng)(1962-),男,博士,中國(guó)科學(xué)院計(jì)算技術(shù)研究所研究員,主要研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)。
?
《大數(shù)據(jù)》期刊
《大數(shù)據(jù)(Big?Data?Research,BDR)》雙月刊是由中華人民共和國(guó)工業(yè)和信息化部主管,人民郵電出版社主辦,中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì)學(xué)術(shù)指導(dǎo),北京信通傳媒有限責(zé)任公司出版的科技期刊。
關(guān)注《大數(shù)據(jù)》期刊微信公眾號(hào),獲取更多內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的零知识证明应用到区块链中的技术挑战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 广播和多播
- 下一篇: 作者:李大中(1976-),男,中国联合