姜軼涵 李 勇 朱 巖
1(北京交通大學(xué)電子信息工程學(xué)院 北京 100044) 2(北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院 北京 100083)
比特幣是中本聰在2009年提出的分布式密碼貨幣,其經(jīng)過共識(shí)將交易信息(發(fā)送方、接收方、交易金額)打包公開存儲(chǔ)在區(qū)塊鏈上,因此可以不需要第三方中介而確認(rèn)交易[1].在現(xiàn)代電子支付系統(tǒng)當(dāng)中,用戶必須信任銀行不會(huì)篡改系統(tǒng)、不會(huì)濫用用戶的隱私,而比特幣采用化名地址給用戶提供了隱私保護(hù).由于交易是公開存儲(chǔ)的,任何人都可以查看交易路徑,并可以向前追溯到該比特幣的起源.若交易與真實(shí)世界有關(guān),則可能會(huì)追蹤到用戶真實(shí)身份,因此更多、更復(fù)雜的密碼學(xué)技術(shù)被應(yīng)用在區(qū)塊鏈中以增強(qiáng)其隱私性.Zerocoin方案[2]通過非交互式零知識(shí)證明(non-interactive zero knowledge, NIZK)提供了發(fā)送方和接收方的不可關(guān)聯(lián)性,Zerocash方案[3]運(yùn)用ZK-SNARKs提供了匿名性程度極高的密碼貨幣隱私保護(hù)方案[4],Monero方案[5]基于Crypto Note協(xié)議[6]、環(huán)狀機(jī)密交易R(shí)ing CT[7]來隱藏交易金額和交易雙方地址.然而,隱私保護(hù)程度的加強(qiáng)會(huì)帶來另一個(gè)問題:缺乏和難以審計(jì),可能會(huì)讓地下錢莊洗錢、敲詐勒索等非法行為更加泛濫.文獻(xiàn)[8]中的機(jī)密交易方案,利用Pedersen承諾可隱藏交易金額,審計(jì)方無法確知區(qū)塊鏈中的交易情況,將導(dǎo)致網(wǎng)絡(luò)洗錢等違法交易行為難以控制.而若將交易數(shù)據(jù)直接對(duì)審計(jì)方公開,又與用戶隱私保護(hù)需求相悖,從而失去區(qū)塊鏈本身的意義.
本文針對(duì)機(jī)密交易中過度強(qiáng)調(diào)隱私保護(hù)所導(dǎo)致的對(duì)區(qū)塊鏈中的交易難以審計(jì)的問題,在保證用戶交易數(shù)據(jù)隱私的同時(shí),授權(quán)審計(jì)方獲知某時(shí)間段內(nèi)所有用戶的交易總額,提出可審計(jì)的機(jī)密交易方案.
對(duì)于區(qū)塊鏈中隱私數(shù)據(jù)進(jìn)行審計(jì)的嘗試目前主要有2類方法:1)在交易確認(rèn)中加入中心方;2)利用密碼學(xué)工具.2016年英國央行和倫敦大學(xué)學(xué)院共同開發(fā)了數(shù)字貨幣框架RSCoin,由央行控制法定貨幣的發(fā)行,商業(yè)銀行存儲(chǔ)各交易賬本,最終再由央行確認(rèn)放入鏈中[9].央行對(duì)交易享有最終確認(rèn)權(quán),以此達(dá)到監(jiān)管審計(jì)的目的.2017年Cecchetti等人提出了Solidus協(xié)議,該協(xié)議由若干個(gè)銀行控制所有賬戶并代表用戶完成交易[10].通過引入可公開驗(yàn)證的不經(jīng)意RAM機(jī)為交易提供機(jī)密性.審計(jì)方通過2種方式進(jìn)行審計(jì):1)銀行能夠證明鏈上數(shù)據(jù)的正確性,審計(jì)方可以按需獲取交易日志并驗(yàn)證其正確性和完整性;2)銀行共享其私有解密密鑰,審計(jì)方可以直接并主動(dòng)監(jiān)控銀行及其賬戶內(nèi)的活動(dòng).
在鏈中引入中心方干預(yù)交易的確認(rèn)很難兼容現(xiàn)有帶隱私保護(hù)的區(qū)塊鏈應(yīng)用,研究人員逐漸引入密碼學(xué)工具以達(dá)到鏈外審計(jì)的目標(biāo).2016年,Garman等人擴(kuò)展了Zerocash協(xié)議,通過引入追蹤密鑰追溯幣的交易歷史[11],為去中心化匿名支付提供追責(zé)功能.隨后,Naganuma等人提出可審計(jì)的Zerocoin方案,發(fā)送者在交易生成中嵌入審計(jì)信息,允許指定審計(jì)方獲得交易中的關(guān)聯(lián)信息[12].以上2類方案都是對(duì)逐條交易進(jìn)行審計(jì),需要較大的審計(jì)成本;同時(shí)方案更改了交易結(jié)構(gòu),使交易尺寸增大,導(dǎo)致區(qū)塊的傳輸性能降低.2018年,Narula等人提出即支持隱私保護(hù)又可審計(jì)的分布式賬本zkLedger[13].zkLedger采用多欄總分類賬結(jié)構(gòu),將銀行間所有交易保存在一個(gè)賬本上,一行代表一個(gè)交易,一列代表一個(gè)銀行的所有交易.由交易發(fā)送方產(chǎn)生交易(一行),使用Pedersen承諾隱藏金額,而對(duì)于未參與交易的銀行,發(fā)送方產(chǎn)生對(duì)金額值0的承諾,則可使交易參與方不被第三方知道[14].審計(jì)方通過賬本中的一列對(duì)銀行進(jìn)行查詢,得到一個(gè)銀行的某些交易統(tǒng)計(jì)信息如交易和、均值等.zkLedger通過Schnorr型[15]非交互式零知識(shí)證明提供審計(jì)功能.與Zerocash方案不同,zkLedger方案不依賴可信第三方進(jìn)行參數(shù)設(shè)置.與zkLedger粗粒度監(jiān)管方式不同,Wüst等人提出了既支持隱私保護(hù)又可監(jiān)管的密碼貨幣方案PRCash[16],其監(jiān)管粒度較細(xì),針對(duì)的是各節(jié)點(diǎn)之間的交易.PRCash改進(jìn)Mimblewimble方案來產(chǎn)生交易[17],每個(gè)輸出均需要范圍證明和監(jiān)管證明,監(jiān)管方作為第三方驗(yàn)證監(jiān)管證明.PRCash方案監(jiān)管的是交易額度,若超過限額,則通過監(jiān)管證明解密部分信息獲得接收方身份;若未超出限額,可通過監(jiān)管證明驗(yàn)證其交易額在額度之內(nèi)[14].但其只能監(jiān)管到交易額的范圍,如何設(shè)置一個(gè)通用的閾值進(jìn)行監(jiān)管是一個(gè)難點(diǎn),若頻繁采用小額度交易進(jìn)行洗錢,可能會(huì)監(jiān)管不當(dāng).2019年Li等人提出了可追溯的Monero方案[18].付款人在產(chǎn)生收款人一次性密鑰對(duì)時(shí),同時(shí)產(chǎn)生標(biāo)簽用于在收款人充當(dāng)惡意付款人時(shí)追溯收款人的長(zhǎng)期公鑰.審計(jì)方通過使用自己的私鑰解密標(biāo)簽中密文即可獲得付款人的長(zhǎng)期公鑰,而通過對(duì)交易中的密文進(jìn)行解密則可找到相應(yīng)的一次性公鑰,由此導(dǎo)致該方案的隱私性較弱.同年,Chen等人提出可審計(jì)追責(zé)的機(jī)密交易方案PGC[19],其將承諾形式的交易轉(zhuǎn)換成Elgamal加密的形式,無需對(duì)隨機(jī)數(shù)與金額保持追蹤來獲取信息;利用零知識(shí)證明確保其有效正確性;采用簽名證明賬戶所有權(quán).對(duì)于有爭(zhēng)議的交易,PGC通過用戶對(duì)該交易金額的正確性進(jìn)行零知識(shí)證明來達(dá)到審計(jì)問責(zé)的目的.但該方案的研究限于理論層面,在實(shí)際應(yīng)用中的性能有待考究.
本方案中交易的創(chuàng)建過程類似機(jī)密交易,輸入、輸出形式均為對(duì)金額的Pedersen承諾,同時(shí)輸入需要附帶發(fā)送方地址.以圖1為例介紹一個(gè)區(qū)塊的結(jié)構(gòu),該區(qū)塊中有2個(gè)交易:交易1為兩輸入單輸出,同時(shí)附帶一個(gè)范圍證明range proof(Out1);交易2為單輸入兩輸出,同時(shí)附帶2個(gè)輸出的聚合范圍證明range proof(Out2,Out3).通過Bulletproofs生成聚合的范圍證明,其具體構(gòu)建見文獻(xiàn)[20].
Fig. 1 Block structure圖1 區(qū)塊結(jié)構(gòu)
該系統(tǒng)由3種角色組成:審計(jì)方、區(qū)塊驗(yàn)證者(Leader)、用戶.
1) 審計(jì)方.區(qū)塊鏈外具有審計(jì)功能的參與方,可以查看所有區(qū)塊以及審計(jì)多個(gè)區(qū)塊中所有交易的和.
2) 區(qū)塊驗(yàn)證者.審計(jì)方、用戶相交互的媒介,設(shè)置為前一個(gè)區(qū)塊的記賬者,由共識(shí)協(xié)議(如PBFT共識(shí))選出.
3) 用戶.產(chǎn)生交易發(fā)送至區(qū)塊鏈網(wǎng)絡(luò)的參與方,分為發(fā)送方與接收方.
圖2為例闡述審計(jì)過程[14]:
Fig. 2 Audit framework圖2 審計(jì)框架
1) 審計(jì)方想審計(jì)區(qū)塊鏈中多個(gè)區(qū)塊中所有交易的和,先產(chǎn)生審計(jì)請(qǐng)求發(fā)送給上一個(gè)區(qū)塊驗(yàn)證者;
2) 區(qū)塊驗(yàn)證者收到請(qǐng)求后驗(yàn)證請(qǐng)求來源為審計(jì)方,則進(jìn)行下一步與用戶進(jìn)行交互,否則為非法請(qǐng)求,丟棄該請(qǐng)求;
3) 區(qū)塊驗(yàn)證者轉(zhuǎn)發(fā)審計(jì)請(qǐng)求給各用戶,每個(gè)用戶驗(yàn)證收到的審計(jì)請(qǐng)求,驗(yàn)證通過后開始計(jì)算審計(jì)令牌;
4) 各用戶將令牌發(fā)送給驗(yàn)證者,區(qū)塊驗(yàn)證者根據(jù)令牌進(jìn)行驗(yàn)證,將每個(gè)用戶的結(jié)果計(jì)算、整合,得到最終結(jié)果發(fā)送給審計(jì)方;
5) 審計(jì)方將收到的結(jié)果解密得到所有交易的總和,并驗(yàn)證其正確性.
ACT(auditable confidential transaction)方案由(Setup,Request,Verify_Request,Response,LDec,Add,Audit,Verify)8個(gè)算法組成[14]:
1)Setup(1λ)→(pubpara,secpara).參數(shù)生成算法,輸入安全參數(shù)λ,輸出公共參數(shù)pubpara、私有參數(shù)secpara.
2)Request(pubpara,req,ssk)→(req,sig).請(qǐng)求算法,由審計(jì)方執(zhí)行,輸入公共參數(shù)pubpara、請(qǐng)求消息req與簽名私鑰ssk,輸出審計(jì)請(qǐng)求req及簽名sig.
3)Verify_Request(pubpara,req,sig)→{0,1}.驗(yàn)證請(qǐng)求算法,由驗(yàn)證者和用戶執(zhí)行,輸入公共參數(shù)pubpara、審計(jì)請(qǐng)求req、簽名sig,輸出1代表審計(jì)請(qǐng)求驗(yàn)證通過,可以進(jìn)行后續(xù)步驟,0表示審計(jì)請(qǐng)求非法,丟棄該請(qǐng)求.
4)Response(pubpara,si,sri)→(Tokeni).響應(yīng)算法,由用戶i執(zhí)行,輸入公共參數(shù)pubpara、用戶i的交易和si、隨機(jī)數(shù)之和sri,輸出用戶i的審計(jì)令牌Tokeni.
5)LDec(pubpara,secpara,Tokeni)→(ci,msri).解密算法,由驗(yàn)證者執(zhí)行,輸入公共參數(shù)pubpara、secpara、審計(jì)令牌Tokeni,輸出每個(gè)用戶的交易和的密文ci以及每個(gè)用戶的隨機(jī)數(shù)和msri.
6)Add(pubpara,ci,msri)→(audit_data).求和算法,驗(yàn)證者輸入公共參數(shù)pubpara、每個(gè)用戶交易和的密文ci、每個(gè)用戶的隨機(jī)數(shù)和msri,輸出審計(jì)數(shù)據(jù)audit_data.
7)Audit(pubpara,ask,audit_data)→sum.審計(jì)算法,審計(jì)方輸入公共參數(shù)pubpara、審計(jì)私鑰ask、審計(jì)數(shù)據(jù)audit_data,輸出交易和sum.
8)Verify(pubpara,sum,audit_data)→{0,1}.驗(yàn)證算法,審計(jì)方輸入公共參數(shù)pubpara、上一步算法產(chǎn)生的交易和sum、審計(jì)數(shù)據(jù)audit_data,輸出0或1.1表示審計(jì)結(jié)果正確,用戶和驗(yàn)證者均誠實(shí);0表示驗(yàn)證者不誠實(shí).
本節(jié)介紹ACT方案所滿足的安全性質(zhì),分別為可審計(jì)性、審計(jì)可靠性以及交易金額隱私性[14].
定義1.可審計(jì)性.對(duì)于ACT方案,如果滿足如下條件,則審計(jì)方可以審計(jì)到所有用戶的交易總額.
Verify(pubpara,sum,audit_data)=1]≥1-v(λ),
其中,υ(λ)為可忽略函數(shù).
即對(duì)于誠實(shí)按照操作進(jìn)行交互的用戶和驗(yàn)證者,審計(jì)方可以正確審計(jì)到一段時(shí)間內(nèi)該網(wǎng)絡(luò)總的交易額.
定義2.審計(jì)可靠性.對(duì)于ACT方案,如果滿足條件,則該方案具有審計(jì)可靠性.
Verify(pubpara,sum,audit_data)=0]≥1-v(λ),
其中,RD指真實(shí)數(shù)據(jù),?RD表示偽造的數(shù)據(jù),enc_sum表示所有用戶交易總和的密文.即審計(jì)方可以檢測(cè)到偽造數(shù)據(jù),假數(shù)據(jù)無法通過審計(jì)驗(yàn)證.
ACT方案基本設(shè)計(jì)思想如下:利用數(shù)字簽名算法生成審計(jì)請(qǐng)求,確保只有審計(jì)方有權(quán)審計(jì).用戶對(duì)個(gè)人交易總額進(jìn)行雙重加密生成審計(jì)令牌:第1重加密采用同態(tài)加密,使得審計(jì)方和區(qū)塊驗(yàn)證者無法獲知各用戶各自的交易和;第2重加密附帶零知識(shí)證明,可檢測(cè)不誠實(shí)用戶偽造數(shù)據(jù),同時(shí)保證交易數(shù)據(jù)隱私和審計(jì)數(shù)據(jù)準(zhǔn)確性.審計(jì)令牌包含交易輸入承諾中的隨機(jī)數(shù)總和以及零知識(shí)證明.區(qū)塊驗(yàn)證者根據(jù)令牌解密外層密文,驗(yàn)證零知識(shí)證明有效性;隨后將各用戶的內(nèi)層密文相乘、以及將隨機(jī)數(shù)的和相加,同時(shí)發(fā)給審計(jì)方.審計(jì)方解密得到所有用戶的交易額總和,并利用Pedersen承諾的同態(tài)性可驗(yàn)證其正確性.
ACT方案具體構(gòu)造為:
1)Setup(1λ)→(apk,ask,lpk,lsk,spk,ssk).輸入安全參數(shù)λ,產(chǎn)生審計(jì)方公鑰apk=(N,g1),私鑰ask=μ;驗(yàn)證者私鑰為lsk,公鑰lpk=(f,g2),Elgamal加密體制模數(shù)k以及審計(jì)方簽名私鑰ssk,簽名公鑰spk.輸出pubpara=(k,apk,lpk,spk),secpara=(ask,lsk,ssk).
2)Request(pubpara,req,ssk)→(req,sig).請(qǐng)求信息req=(h_first,h_end)表示審計(jì)區(qū)塊高度從h_first到h_end的區(qū)塊交易和;對(duì)req生成數(shù)字簽名,簽名記作sig=(Ω,s),輸出審計(jì)請(qǐng)求req和簽名sig.
3)Verify_Request(pubpara,req,(Ω,s))→{0,1}.驗(yàn)證簽名sig,輸出1代表審計(jì)請(qǐng)求驗(yàn)證通過,可以進(jìn)行后續(xù)步驟,0表示審計(jì)請(qǐng)求非法,丟棄該請(qǐng)求.
4)Response(pubpara,si,sri)→(csumi,π1i,sri,csri,π2i).對(duì)于交易總額進(jìn)行雙重加密及證明,具體過程由3步組成:
π1i=NIZK{Enc(lpk,hsri)明文是hsri∧公鑰為lpk};
輸出Token=(csumi,sri,csri,π1i,π2i).
5)LDec(pubpara,secpara,csumi,sri,csri,π1i,π2i)→(ci,msri).驗(yàn)證者驗(yàn)證π1i,π2i的有效性后,將csumi和csri進(jìn)行解密.csumi的明文ci=cp2(cp1lsk)-1modk,csri的明文msri=ct2(ct1lsk)-1modk,計(jì)算hsri是否等于msri,相等則證明用戶誠實(shí),所發(fā)隨機(jī)數(shù)之和數(shù)據(jù)正確.
7)Audit(pubpara,ask,enc_sum)→sum.審計(jì)方利用私鑰ask=μ將驗(yàn)證者發(fā)來的密文enc_sum進(jìn)行解密,得到交易和sum=Dec[enc_sum]=L(enc_sumμmodN2)L(gμmodN2) modN,其中L(x)=(x-1)N.
以NIZK-π1i為例展示響應(yīng)算法Response(pubpara,si,sri)→(csumi,π1i,sri,csri,π2i)中零知識(shí)證明的具體構(gòu)建.NIZK-π1i=NIZK{Enc(lpk,hsri)中明文是hsri且公鑰為lpk},即證明用戶發(fā)給驗(yàn)證者的隨機(jī)數(shù)之和sri正確,與承諾中對(duì)應(yīng)隨機(jī)數(shù)之和相匹配.設(shè)群G=f=g=h,公鑰lpk=flsk,A,B,C∈G,用戶(證明者)使得驗(yàn)證者相信他知道使得A=fx,B=
本節(jié)對(duì)ACT方案的安全性進(jìn)行證明.
定理1.在用戶和驗(yàn)證者都是誠實(shí)的前提下,審計(jì)方能夠?qū)徲?jì)到一段時(shí)間內(nèi)所有交易的總消費(fèi)額.
證明. 假設(shè)用戶和驗(yàn)證者均誠實(shí),則審計(jì)方收到的數(shù)據(jù)信息是正確的.審計(jì)方收到enc_sum后,根據(jù)Pailliar加密同態(tài)性,
證畢.
定理2.如果零知識(shí)證明滿足可靠性,且承諾方案滿足綁定性,則ACT方案滿足審計(jì)可靠性.
證明. 可靠性指若審計(jì)方收到虛假數(shù)據(jù),則其通過驗(yàn)證算法的可能性極小.虛假數(shù)據(jù)來源于2方面:①用戶;②驗(yàn)證者.
情況2.假設(shè)存在不誠實(shí)的驗(yàn)證者對(duì)審計(jì)方進(jìn)行欺騙,即在Add(ci,msri)→(enc_sum,r_sum)算法產(chǎn)生輸出后,編造假數(shù)據(jù)通過審計(jì)方驗(yàn)證的概率不可忽略,則存在enc_sum′≠enc_sum,r_sum≠r_sum′,使得Pr{Dec[enc_sum′]=sum′:gsum′hr_sum′=gsumhr_sum}≥1-v(λ),v(λ)為可忽略函數(shù).與承諾方案的綁定性相矛盾,所以不誠實(shí)的驗(yàn)證者無法欺騙審計(jì)方.綜上,該方案具有可靠性.
證畢.
定理3.如果零知識(shí)證明是零知識(shí)的,且判定復(fù)合剩余問題是困難的,則該方案滿足交易金額隱私性.
證明. 通過游戲序列來證明本定理.
證畢.
證畢.
證明. 考慮圖5所示的區(qū)分算法D:
c=(1+N)sb×rNmodN2.
Pr[D(N,r)=1]=12.
因此,
由判定復(fù)合剩余假設(shè),可得:
|Pr[D(N,[rNmodN2])=1]-
Pr[D(N,r)=1]|≤v(λ).
因此,如果零知識(shí)證明是計(jì)算零知識(shí)的,且判定復(fù)合剩余問題是困難的,則該方案滿足交易金額隱私性.
證畢.
本節(jié)通過仿真實(shí)驗(yàn)對(duì)交易中范圍證明與審計(jì)中各算法進(jìn)行性能評(píng)估.實(shí)驗(yàn)環(huán)境配置為Mac OS操作系統(tǒng),8 GB RAM,CPU為Intel Core i5 2.3 GHz.實(shí)驗(yàn)程序采用C語言編寫,調(diào)用pbc,libsecp256k1等密碼學(xué)庫進(jìn)行雙線性映射、點(diǎn)乘等運(yùn)算.如圖6、圖7所示為PRCash與Bulletproofs范圍證明的生成與驗(yàn)證時(shí)間對(duì)比,PRCash范圍證明采用的是文獻(xiàn)[23]中基為4的證明形式,由于其采用了效率較低的雙線性映射,因此時(shí)間較長(zhǎng),隨著范圍的增加,使用Bulletproofs生成證明的效率可以提高3倍以上,而驗(yàn)證效率則可以提高8倍以上.
Fig. 6 Generation time for range proof圖6 范圍證明生成時(shí)間
Fig. 7 Verification time for range proof圖7 范圍證明驗(yàn)證時(shí)間
圖8所示為ACT方案中各算法在不同密鑰長(zhǎng)度下的執(zhí)行時(shí)間折線圖.實(shí)驗(yàn)中對(duì)Paillier密碼體制中的N分別應(yīng)用了4種長(zhǎng)度:512 b,1 024 b,2 048 b,3 072 b,在4種長(zhǎng)度下模擬得到了Response(分為encrypt與NIZK兩步)、LDec(分為decrypt與NIZK兩步)、Audit算法的執(zhí)行時(shí)間.結(jié)果顯示,算法中NIZK的生成時(shí)間約為加密的2倍,而驗(yàn)證者驗(yàn)證NIZK的時(shí)間則達(dá)到解密的10倍左右,占據(jù)了算法執(zhí)行的大部分時(shí)間.在2 048 b下,用戶生成審計(jì)令牌的時(shí)間大約需要0.66 s,驗(yàn)證者對(duì)于一個(gè)用戶發(fā)來的一個(gè)響應(yīng)執(zhí)行LDec算法大約需要0.6×2=1.2 s,若用戶數(shù)為100個(gè),則每次審計(jì)時(shí)驗(yàn)證者需要大約2 min.
Fig. 8 Execution time for ACT algorithm圖8 ACT算法的執(zhí)行時(shí)間
圖9所示為交易個(gè)數(shù)在10萬~100萬時(shí)審計(jì)方執(zhí)行Verify算法的時(shí)間.實(shí)驗(yàn)中模擬單個(gè)交易金額均為100密碼幣,由于運(yùn)行Verify算法需要將審計(jì)的區(qū)塊內(nèi)所有交易輸入承諾相乘,因此圖9中實(shí)線顯示交易數(shù)越多,算法執(zhí)行時(shí)間越長(zhǎng).若采取預(yù)先計(jì)算的形式,將交易乘積緩存,則審計(jì)時(shí)無需做大量的乘法運(yùn)算,如圖9中虛線所示,采用緩存形式的算法執(zhí)行時(shí)間基本獨(dú)立于交易個(gè)數(shù),且時(shí)間很短,約為3 ms.
Fig. 9 Execution time for Verify algorithm圖9 運(yùn)行Verify算法的執(zhí)行時(shí)間
針對(duì)機(jī)密交易金額隱私性強(qiáng)導(dǎo)致審計(jì)缺失和審計(jì)困難的問題,本文提出可審計(jì)交易總額的機(jī)密交易方案ACT,利用簽名對(duì)審計(jì)請(qǐng)求來源進(jìn)行身份認(rèn)證,確保審計(jì)方的合法身份.該方案在審計(jì)中引入Paillier同態(tài)加密,可以保護(hù)單個(gè)交易以及單個(gè)用戶的金額隱私,同時(shí)采用零知識(shí)證明在保證交易隱私性的同時(shí)可有效檢測(cè)到不誠實(shí)用戶偽造數(shù)據(jù),從而保障審計(jì)數(shù)據(jù)的準(zhǔn)確性.通過安全性分析及性能分析,該方案可以實(shí)現(xiàn)一段時(shí)間內(nèi)區(qū)塊鏈網(wǎng)絡(luò)中交易總額的審計(jì),同時(shí)可以有效保護(hù)交易金額隱私.且交易創(chuàng)建過程中利用Bulletproofs范圍證明技術(shù),使得交易創(chuàng)建與驗(yàn)證的效率提高.應(yīng)指出:由于交易和范圍有限,當(dāng)交易和較小時(shí),驗(yàn)證者有可能通過窮舉獲取到單個(gè)用戶的交易和,可通過調(diào)整審計(jì)區(qū)塊范圍提高金額總和,從而增加驗(yàn)證者通過窮舉獲知用戶交易和的時(shí)間成本.同時(shí)計(jì)算審計(jì)令牌時(shí)涉及的零知識(shí)證明占據(jù)了大部分時(shí)間,因此如何進(jìn)一步優(yōu)化審計(jì)策略、提高審計(jì)效率是下一步研究的方向.
致謝感謝審稿專家的寶貴意見讓本文更完善,比如指出驗(yàn)證者可能窮舉獲得單個(gè)用戶的交易和問題.