国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)的+HomElG零知識證明協(xié)議

2023-10-12 03:05:50楊少坤
工程科學(xué)與技術(shù) 2023年5期
關(guān)鍵詞:公鑰密文合法性

景 旭,楊少坤

(西北農(nóng)林科技大學(xué) 信息工程學(xué)院,陜西 楊凌 712100)

作為區(qū)塊鏈的應(yīng)用模式之一,聯(lián)盟鏈由多個機構(gòu)組成的聯(lián)盟構(gòu)成,聯(lián)盟指定的成員生成、共識、維護(hù)聯(lián)盟鏈賬本,節(jié)點的進(jìn)入與退出需要滿足一定條件并得到許可[1]。聯(lián)盟鏈有靈活的智能合約[2]定制機制可以滿足實際應(yīng)用中復(fù)雜多變的業(yè)務(wù)需求。聯(lián)盟鏈的賬本對聯(lián)盟所有參與方是透明的,當(dāng)用戶通過聯(lián)盟鏈執(zhí)行交易時,用戶的資金、交易金額等隱私信息均可能被暴露。因此,研究聯(lián)盟鏈隱私保護(hù)機制對于促進(jìn)聯(lián)盟鏈的應(yīng)用、推廣具有重要的意義。

目前,國內(nèi)外學(xué)者關(guān)于區(qū)塊鏈隱私保護(hù)研究已經(jīng)取得一些成果。Wang等[3]使用Рaillier算法加密交易金額,通過承諾證明輸入總額與輸出總額相等實現(xiàn)交易合法性驗證,但是密文和公鑰過長導(dǎo)致效率較低且沒有交易金額相關(guān)區(qū)間驗證。刁一晴等[4]基于群簽名和同態(tài)加密算法實現(xiàn)一種聯(lián)盟鏈雙重隱私保護(hù)方法,使用Рaillier算法和零知識證明實現(xiàn)交易金額的隱私保護(hù),但Рaillier算法效率相對較低且僅進(jìn)行了交易金額大于零的區(qū)間驗證。Narula等[5]使用Рedersen承諾和Schnorr型非交互式零知識證明方法實現(xiàn)交易金額的隱私保護(hù),但沒有交易余額大于零的區(qū)間驗證。She等[6]通過將敏感數(shù)據(jù)用Рaillier加密后上傳到聯(lián)盟鏈,實現(xiàn)了同態(tài)加狀態(tài)下的共識,保護(hù)敏感數(shù)據(jù)的隱私,但Рaillier算法效率相對較低。張小艷等[7]基于橢圓曲線同態(tài)加密的特性,根據(jù)公開可驗證承諾和零知識證明技術(shù)提出一種交易金額保密驗證方法,但僅能驗證交易金額相等,無法進(jìn)行區(qū)間驗證。李龔亮等[8]在Рaillier算法的基礎(chǔ)上,提出了一種基于零知識證明的隱私保護(hù)算法,在應(yīng)用端生成交易密文和零知識證明證據(jù)發(fā)送給智能合約端進(jìn)行合法性驗證,但基于復(fù)合剩余類困難問題,效率較低。綜上可以看出,現(xiàn)有文獻(xiàn)雖聲稱以區(qū)塊鏈為研究對象,但本質(zhì)上主要應(yīng)用模式采用聯(lián)盟鏈;雖然實現(xiàn)了隱私保護(hù),但大都存在沒有同時對交易金額相等,交易金額、交易余額的范圍進(jìn)行校驗,交易合法性驗證策略不夠完善,以及主要選用效率較低的加同態(tài)Рaillier作為基礎(chǔ)加密算法等問題。

針對上述問題,面向聯(lián)盟鏈轉(zhuǎn)賬中需要保護(hù)賬戶余額、交易金額等隱私的需求,本文提出一種+HomElG零知識證明協(xié)議。首先,面向聯(lián)盟鏈轉(zhuǎn)賬的需求,基于РBFT構(gòu)造具有拜占庭容錯的同態(tài)加密零知識證明共識交互場景;然后,根據(jù)聯(lián)盟鏈共識場景,設(shè)計一種同態(tài)加密的零知識證明協(xié)議,基礎(chǔ)加密算法選用高效的+HomElG算法,基于Σ協(xié)議和Fiat-Shamir算法的思想,構(gòu)造可以實現(xiàn)交易金額相等、交易金額大于零和交易余額不小于零的非交互式零知識證明,使得交易合法性驗證策略更加完善;最后,基于Hyperledger Fabric實現(xiàn)一個聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)原型系統(tǒng),對協(xié)議進(jìn)行測試與分析。

1 預(yù)備知識

G表示擁有大素數(shù)階p的乘法群,g為G的生成元,Zp表示模p的剩余類環(huán),表示Zp中對乘法可逆的元素構(gòu)成的乘法群, logg h表示在乘法群G中以g為底h的離散對數(shù),a?b表示做Hadamard乘積,H為安全哈希函數(shù)。

1.1 ElGamal承諾方案

1.2 DL關(guān)系的Σ協(xié)議

關(guān)系R的Σ協(xié)議[10-11]定義了NР(noun phrase)語言LR,是一個由證明者和驗證者共同執(zhí)行的三輪證明系統(tǒng),證明了證明者知道一個共同輸入x∈LR期望的知識,具有完備性、特殊合理性和誠實驗證者零知識性。Damgard[12]提出了一種關(guān)系R為離散對數(shù)(discrete logarithm,DL)關(guān)系的Σ協(xié)議,DL關(guān)系式為:

式中,p為大素數(shù),q為p-1的最大素數(shù)因子,g為中階為q的元素,w為僅證明者可知的私有輸入,h=gwmodp,x=(p,q,g,h)是對證明者和驗證者均可見的公共輸入。

Σ協(xié)議的具體流程為:1)證明者選擇隨機數(shù)r∈Zq,計算a=grmodp并將a發(fā)送給驗證者;2)驗證者選擇t比特位的隨機數(shù)挑戰(zhàn)e∈Z2t(2t<q)并將e發(fā)送給證明者;3)證明者計算z=(r+ew)modq,并將z發(fā)送給驗證者判斷gz=ahemodp是否成立,若成立,則驗證者相信證明者知道正確的w值。

1.3 范圍協(xié)議

Bünz等[13]提出的Bulletproofs是最常用的范圍零知識證明方法之一,主要要求是有一個DL關(guān)系未知的公開承諾密鑰 (g,h),使用Fiat-Shamir[14]算法,可以轉(zhuǎn)化為一個安全的、在隨機預(yù)言模式下完全零知識的非交互式協(xié)議。在DDH困難問題的組 (G,g,p)中,對于 (V,g,h∈G;v,r∈Zp;V=gvhrmodp;v∈[0,2n-1]),其中g(shù)、h的DL關(guān)系是未知的,V=gvhrmodp可以被看作是一個Рedersen承諾[15],Bulletproofs協(xié)議將會使驗證者相信v∈[0,2n-1]。

1.4 +HomElG算法

+HomElG[16]算法包含3個過程,具體如下:

1) 密鑰生成

首先,選擇大素數(shù)q和正整數(shù) κ ,使p=2κq+1,選擇生成元g,使g生成一個q階子群;然后,從Zq中隨機選擇一個私鑰x,并計算相應(yīng)的公鑰y=gxmodp;最后,輸出系統(tǒng)公共參數(shù) (p,q,g) , 返回公私鑰對 (y,x)。

2)加密過程

對于明文m∈M,隨機選擇r∈Zq,加密過程如式(1)所示,得到密文C=(c1,c2)。

3)解密過程

對于密文C=(c1,c2),解密過程下:

2 基于PBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用

假設(shè)聯(lián)盟鏈中用戶Alice需要向用戶Bob轉(zhuǎn)賬v枚硬幣,需要聯(lián)盟鏈上節(jié)點共識但是都不希望其他成員知道v及Alice、Bob的賬戶余額等敏感信息。目前,主流研究是利用同態(tài)加密[17-18]和零知識證明[19-21]技術(shù)來實現(xiàn)。主要流程包括:首先,Alice用自己的公鑰pkA和Bob的公鑰pkB分別加密v得到CA和CB。然后,Alice為轉(zhuǎn)賬生成滿足以下條件的零知識證明證據(jù) π:1)在pkA和pkB下,CA和CB隱藏著相同的秘密值;2)轉(zhuǎn)賬金額大于零;3)轉(zhuǎn)賬后他的余額是不小于零的。最后,聯(lián)盟鏈上節(jié)點通過智能合約利用系統(tǒng)參數(shù)和零知識證明證據(jù) π,檢驗此次交易的有效性,但聯(lián)盟鏈中可能存在拜占庭節(jié)點,拜占庭故障節(jié)點的行為是任意的,可能導(dǎo)致產(chǎn)生錯誤的交易合法性驗證結(jié)果。

實用拜占庭容錯算法(practical Byzantine fault algorithm,РBFT)是一種確保分布式系統(tǒng)與拜占庭故障節(jié)點一致性的通用解決方案[22]。與傳統(tǒng)的拜占庭容錯算法相比,РBFT效率大大提高,可以抵抗一定數(shù)量的拜占庭節(jié)點[23]。由于無法排除聯(lián)盟鏈轉(zhuǎn)賬中拜占庭節(jié)點的存在,為了確保交易過程的合法性、交易結(jié)果的可靠性,本文協(xié)議在應(yīng)用層共識[24]中采用РBFT算法,設(shè)計基于РBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用如圖1所示。

圖1 基于PBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用Fig.1 Privacy protection application for consortium blockchain transfers based on PBFT

基于РBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用的交易流程包括:

1)交易發(fā)起階段。交易發(fā)起節(jié)點通過客戶端INIT CLIENT將交易信息發(fā)送給智能合約ENC CONTRACT,如圖1中的步驟①所示。

2)零知識證明證據(jù)生成階段。交易發(fā)起節(jié)點通過智能合約ENC CONTRACT加密交易敏感信息,生成相關(guān)零知識證明證據(jù) π;生成РBFT共識請求消息〈REQUEST,t,d,h,c〉,其中,t為時間戳,d為主體發(fā)送的包含交易密文信息及零知識證明證據(jù) π等請求內(nèi)容,h為d的消息摘要,c為主體的身份信息;將請求消息發(fā)布到聯(lián)盟鏈中,如圖1中的步驟②所示。

3)PBFT請求階段。除交易發(fā)起節(jié)點外,聯(lián)盟鏈其他節(jié)點可從聯(lián)盟鏈中獲取PBFT共識請求消息〈REQUEST,t,d,h,c〉;獲得請求消息的節(jié)點向事先由全網(wǎng)節(jié)點選舉出的主節(jié)點0發(fā)送確認(rèn)消息;主節(jié)點0根據(jù)確認(rèn)消息統(tǒng)計參與本次共識的節(jié)點個數(shù),確定允許的最大拜占庭節(jié)點數(shù)f,如圖1中的步驟③所示。在圖1中,假設(shè)參與本次共識的節(jié)點個數(shù)為4,因此允許最大的拜占庭節(jié)點數(shù)為1。

4)PBFT預(yù)準(zhǔn)備階段。主節(jié)點0為本次請求d分配一個編號n,開始對本次請求交易的合法性進(jìn)行判決,如圖1中虛框中所示。

首先,節(jié)點0的客戶端PEER0 CLIENT根據(jù)請求消息中的d獲取交易密文及相關(guān)零知識證明證據(jù) π,并發(fā)送給智能合約VER CONTRACT,如圖1中的步驟④所示。

然后,智能合約VER CONTRACT從聯(lián)盟鏈中獲取相關(guān)系統(tǒng)參數(shù),利用交易密文、零知識證明證據(jù)π及系統(tǒng)參數(shù)進(jìn)行零知識證明,校驗交易的合法性,如圖1中的步驟⑤所示。

最后,智能合約VER CONTRACT將校驗結(jié)果發(fā)送給節(jié)點0的客戶端PEER0 CLIENT,如圖1中的步驟⑥所示。

本次請求交易的合法性判決完成后,向其他參與本次共識的從節(jié)點1、2、3發(fā)送預(yù)準(zhǔn)備消息〈PREPREPARE,v,n,t,h,f,i,r〉,其中,v為當(dāng)前視圖編號,i為當(dāng)前節(jié)點的編號,r為交易的合法性判決結(jié)果,如圖1中的步驟Pre-prepare所示。

5)PBFT準(zhǔn)備階段。收到主節(jié)點0發(fā)送的預(yù)準(zhǔn)備消息后,從節(jié)點1、2、3首先對比請求信息與預(yù)準(zhǔn)備消息的h、t,確保消息的完整性。其次,與主節(jié)點0的判決過程相同,判決本次請求交易的合法性。然后,向其他節(jié)點發(fā)送準(zhǔn)備消息 〈PREPARE,v,n,h,i,r〉。最后,收到其他從節(jié)點的準(zhǔn)備消息后,節(jié)點驗證準(zhǔn)備消息與預(yù)準(zhǔn)備消息中v、n、r、h一致性;當(dāng)有2f+1個一致時,進(jìn)入確認(rèn)階段,如圖1中的步驟Prepare所示。

6)PBFT確認(rèn)階段。每個節(jié)點向其他節(jié)點發(fā)送確認(rèn)消息 〈COMMIT,v,n,i,S(r)〉,其中,S(r)為本節(jié)點使用私鑰對交易合法性校驗結(jié)果的簽名;收到其他節(jié)點的確認(rèn)消息后,通過i查找本地索引表中相應(yīng)節(jié)點的公鑰,各節(jié)點驗證確認(rèn)消息的簽名、v、n、r;當(dāng)有2f+1個確認(rèn)消息一致時,驗證通過,如圖1中的步驟Commit所示。

7)PBFT響應(yīng)階段。各節(jié)點生成響應(yīng)消息〈REPLY,v,t,n,h,c,i,f,q〉,其中,q為本次交易合法性驗證結(jié)果,即確認(rèn)階段2f+1個一致的確認(rèn)消息中的r,并將響應(yīng)消息發(fā)布到聯(lián)盟鏈上,如圖1中的步驟Reply所示。

8)共識結(jié)果判定。記賬節(jié)點從聯(lián)盟鏈?zhǔn)占鞴?jié)點的響應(yīng)消息,當(dāng)收集到至少f+1個相同的響應(yīng)消息時,則根據(jù)響應(yīng)消息中的q判定本次交易合法性驗證是否通過,如圖1中的步驟⑦所示。

9)賬本更新。當(dāng)共識結(jié)果判定為通過時,記賬節(jié)點根據(jù)密文同態(tài)運算更新賬本和狀態(tài)數(shù)據(jù)庫;否則,拒絕本次交易,向交易發(fā)起節(jié)點發(fā)送本次交易失敗信息,如圖1中的步驟⑧所示。

3 基于Σ協(xié)議的+HomElG零知識證明協(xié)議

在基于PBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用中,采用同態(tài)加密技術(shù)保護(hù)轉(zhuǎn)賬交易雙方的交易敏感信息。與加法同態(tài)Paillier算法相比,在相同的安全級別下,+HomElG算法獲得了接近86.7%的加密加速比和接近73.4%的解密加速比,是綜合性能較優(yōu)的加法同態(tài)算法,因此,本文選擇+HomElG算法作為基礎(chǔ)密碼算法。

為了驗證轉(zhuǎn)賬的合法性,需要聯(lián)盟鏈成員采用零知識證明技術(shù)在應(yīng)用層對轉(zhuǎn)賬交易過程進(jìn)行PBFT共識。在PBFT共識過程中,驗證節(jié)點需要在隱私條件下驗證轉(zhuǎn)賬雙方的交易金額相等、交易金額大于零、轉(zhuǎn)賬方的交易余額不小于零等,所以需要為最基本的轉(zhuǎn)賬正確性策略構(gòu)造出相應(yīng)的零知識證明證據(jù)[25]。Σ協(xié)議能夠以模塊化的方式為事務(wù)的基本正確性設(shè)計零知識證明,且可通過Fiat-Shamir算法轉(zhuǎn)換為非交互式零知識證明。因此,本文提出基于Σ協(xié)議+HomElG零知識證明協(xié)議,滿足基于PBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用的需求。

3.1 初始化

1)系統(tǒng)參數(shù)生成

由聯(lián)盟鏈CA中心選擇大素數(shù)q和正整數(shù) κ,使p=2κq+1 ;選擇生成元g,使g生成一個q階子群;選擇擁有大素數(shù)階p0的乘法群G,并選擇生成元h、g0,h和g0的DL關(guān)系未知;將 (p,q,g,g0,h,p0)作為系統(tǒng)公共參數(shù)寫入CA中心的證書,其中, (p,q,g)用于加解密, (g0,h,p0)用于零知識證明生成ElGamal承諾。

2)節(jié)點密鑰對的生成與分發(fā)

聯(lián)盟鏈節(jié)點從Zq中隨機選擇私鑰x,計算公鑰y=gxmodp。以安全的方式將公鑰提交給CA中心,以便將公鑰寫入節(jié)點的證書,實現(xiàn)公鑰的安全分發(fā)。私鑰由節(jié)點安全保存。

3)賬戶初始化

聯(lián)盟鏈用戶使用自己的公鑰加密賬戶余額,發(fā)送給記賬節(jié)點。在聯(lián)盟鏈賬本中,以(用戶公鑰,用戶賬戶余額密文)對的形式存儲。

3.2 零知識證明

在基于PBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用中,應(yīng)用端(發(fā)起方的客戶端)為智能合約端(聯(lián)盟鏈節(jié)點)產(chǎn)生密文交易信息,并提供零知識證明證據(jù);智能合約端基于PBFT共識算法驗證交易的合法性。對于給定的消息m∈M,隨機數(shù)r∈Zq,經(jīng)+HomElG算法加密得到密文Cpk(m;r)。因為+HomElG算法滿足如下條件:1)給定pk對應(yīng)的sk,Cpk(m;r)不能被解密成兩個不同的消息;2)對于任意兩個消息 (m0,m1),對手無法區(qū)分Cpk(m0;r0)和Cpk(m1;r1);3)相同公鑰下的密文滿足Cpk(m0)?Cpk(m1)=Cpk(m0+m1)。因此,經(jīng)+HomElG加密后密文滿足綁定性、隱藏性和加性同態(tài)。

3.2.1 相等性證明

應(yīng)用端使用交易雙方的公鑰和系統(tǒng)參數(shù),從Zq中選擇加密過程中的隨機數(shù)r0vA、r0vB,加密交易金額v得到密文CvA=(c1vA,c2vA)和CvB=(c1vB,c2vB)?;讦矃f(xié)議思想的相等性證明過程如下:

智能合約端根據(jù)接收到的數(shù)據(jù)使用安全哈希函數(shù)生成 η′=H(c1vA,c2vA,c1vB,c2vB,e1,f1,e2,f2) ,驗證η與η′是否相等,防止應(yīng)用端欺騙智能合約端;若相等,繼續(xù)驗證式(3)是否均成立;若成立,則相信密文CvA、CvB中隱藏著同一秘密值;否則,本次交易不合法。

3.2.2 范圍證明

本文將+HomElG加密后的密文C=(c1,c2)的范圍證明歸約到全局公鑰 (g,h)下的ElGamal承諾的范圍證明。根據(jù)可證明安全理論,基于Bulletproofs證明El-Gamal承諾的秘密值滿足范圍證明,從而證明C=(c1,c2)中隱藏的秘密值滿足范圍證明。

1)交易金額大于零

應(yīng)用端使用系統(tǒng)參數(shù) (g0,h,p0),交易金額v,選擇rvE∈Zp0,對v做出在公鑰 (g0,h)下的ElGamal承諾。根據(jù)Σ協(xié)議思想將交易金額密文歸約到ElGamal承諾的過程:

在將交易金額密文歸約到ElGamal承諾基礎(chǔ)上,交易金額大于零的證明過程包括:應(yīng)用端對公開承諾密鑰 (g,h) 下的ElGamal承諾Ev運行Bulletproofs,產(chǎn)生范圍證明的證據(jù) πv發(fā)送給智能合約端。智能合約端根據(jù) πv驗證Ev隱藏秘密值的范圍,若驗證通過,則交易金額大于零;否則,本次交易不合法。

2)交易余額不小于零

在將交易余額密文歸約到ElGamal承諾基礎(chǔ)上,交易余額不小于零的證明過程包括:對公開承諾密鑰 (g,h) 下的ElGamal承諾Eb運行Bulletproofs,產(chǎn)生范圍證明的證據(jù) πb發(fā)送給智能合約端;智能合約端根據(jù) πb驗證Eb隱藏秘密值的范圍,若驗證通過,則相信交易余額大于0;否則,本次交易不合法。

3.3 協(xié)議分析

3.3.1 正確性分析

定理1 在聯(lián)盟鏈共識時通過執(zhí)行本文協(xié)議,驗證者可以確信密文CvA、CvB下隱藏著同一秘密值。

證明:應(yīng)用端向智能合約端發(fā)送證據(jù)(e1,f1,e2,f2,Zv,Zx,Zr1,η),并執(zhí)行零知識證明式(6)。智能合約通過證據(jù)和系統(tǒng)參數(shù)驗證式(3),過程如式(7)所示。若CvA、CvB隱藏著同一秘密值,式(7)中各等式均會成立,則誠實驗證者確信密文CvA、CvB下隱藏著同一秘密值。

定理2 在聯(lián)盟鏈共識時通過執(zhí)行本文協(xié)議,驗證者可以確信密文CvA與承諾Ev下隱藏著同一秘密值,CbA與承諾Eb下隱藏著同一秘密值。

證明:應(yīng)用端向智能合約端發(fā)送證據(jù)(e11,f11,e21,f21,,Zx1,Zrv,η1),并執(zhí)行零知識證明式(8)。智能合約端驗證式(8),通過證據(jù)和系統(tǒng)參數(shù)驗證式(4),過程如式(9)所示。若密文CvA與承諾Ev下隱藏著同一秘密值,式(9)中各等式均會成立,則誠實的驗證者確信密文CvA與承諾Ev下隱藏著同一秘密值。同理可驗證零知識證明式(10),使誠實的驗證者確信密文CbA與承諾Eb下隱藏著同一秘密值。

定理3 在聯(lián)盟鏈共識時通過執(zhí)行本文協(xié)議,驗證者可以確信承諾Ev中隱藏秘密值大于零,承諾Eb中隱藏秘密值不小于零。

證明:應(yīng)用端向智能合約端發(fā)送證據(jù) πv并執(zhí)行式(11)。智能合約端通過證據(jù) πv和系統(tǒng)參數(shù)驗證式(11),若承諾Ev中隱藏秘密值大于零,由于Bulletproofs范圍證明是完備的[13],則誠實的驗證者確信承諾Ev隱藏秘密值大于零。同理可驗證式(12),若承諾Eb中隱藏秘密值不小于零時,則誠實的驗證者確信承諾Eb隱藏秘密值不小于零。

定理4 本文協(xié)議同態(tài)加法運算是正確的,即在密文條件下的同態(tài)加法運算與明文加法運算結(jié)果一致。

由式(13)、(14)可以看出,在密文狀態(tài)下同態(tài)運算后解密的明文與先解密再計算得到的明文是一致的,因此,本文協(xié)議同態(tài)加法運算是正確的。

3.3.2 完備性分析

誠實的證明者執(zhí)行本文協(xié)議未能通過驗證概率為零知識證明式(6)、(8)、(10)、(11)或(12)失敗的概率,根據(jù)正確性分析,誠實的證明者執(zhí)行協(xié)議,零知識證明式(6)、(8)、(10)、(11)和(12)一定能被誠實驗證者驗證通過。

假設(shè)上述情況證明者不能欺騙驗證者時,證明者要攻破零知識證明式(6)、(8)、(10)、(11)和(12)才能成功欺騙誠實的驗證者,即:證明者破解了安全哈希函數(shù),在計算上是不可行的,因此證明者很難成功欺騙驗證者。

3.3.3 零知識性分析

定理5 攻擊者由交易雙方公鑰推導(dǎo)出私鑰是困難的,根據(jù)密文和已知參數(shù)恢復(fù)相應(yīng)的明文信息也是困難的。

證明:由于本文協(xié)議選取的+HomElG算法的生成元g∈,且p-1包含大素數(shù)因子,若攻擊者可由交易雙方公鑰y求出對應(yīng)的私鑰x,則說明其攻破了在上的離散對數(shù)困難問題,在計算上并不可行。因此驗證者由交易雙方的公鑰推導(dǎo)出私鑰是困難的。

由式(1)可以看出,從gr和y求出yr是DDH困難問題[16]。在沒有私鑰的條件下,若攻擊者根據(jù)密文和已知參數(shù)恢復(fù)了相應(yīng)的明文信息,則相當(dāng)于破解了DDH困難問題。因此,驗證者根據(jù)密文和已知參數(shù)恢復(fù)相應(yīng)的明文信息也是困難的。

定理6 通過公開承諾密鑰 (g,h)的ElGamal承諾,攻擊者根據(jù)已知參數(shù)求出隱藏的明文信息是困難的。

由式(15)可知, logg0h可被計算,而 (g0,h)的DL關(guān)系是未知的。在多項式算法中,根據(jù)已知參數(shù)求解離散對數(shù)大概需要次群運算,因此驗證者從已知參數(shù)和公開承諾密鑰 (g0,h)下ElGamal承諾求出隱藏的明文信息是困難的。

零知識證明式(6)、(8)、(10)都是類似的相等性證明,下面將以零知識證明式(6)為例分析零知識性。攻擊者可獲得的公開數(shù)據(jù)為η、CvA、CvB、 (e1,f1) 、 (e2,f2)、Zv、Zr1、Zr2以及相應(yīng)的系統(tǒng)參數(shù),由定理5可知,攻擊者從CvA、CvB、 (e1,f1) 、 (e2,f2) 獲取關(guān)于v的相關(guān)知識是困難的; η為安全哈希函數(shù),攻擊者從 η中獲取關(guān)于v的有效信息是困難的;Zr1、Zr2是關(guān)于未知數(shù)(r0vA,)和 (r0vB,) 的式子,Zv是關(guān)于未知數(shù)v和v′的式子,攻擊者很難從一個含有兩個未知數(shù)的式子確定其中一個未知數(shù)的值。因此驗證者從零知識證明式(6)的證明中獲得關(guān)于v的更多信息是困難的。在零知識證明式(8)、(10)中,由定理6可知,攻擊者從公開承諾密鑰 (g0,h)下的ElGamal承諾中獲取關(guān)于v的相關(guān)知識是困難的,因此驗證者從零知識證明式(8)、(10)的證明中獲得關(guān)于v的更多信息是困難的。

零知識證明式(11)、(12)是兩個Bulletproofs范圍證明,由于Bulletproofs是統(tǒng)計零知識證明[13],因此驗證者從零知識證明式(11)、(12)的證明中獲得關(guān)于v的更多信息同樣是困難的。

綜上,本文協(xié)議在隨機預(yù)言模式下是統(tǒng)計零知識證明。

4 測試與分析

4.1 測試環(huán)境

1)系統(tǒng)環(huán)境:ubuntu虛擬機18.04,8 GB內(nèi)存,50 GB存儲磁盤,處理器內(nèi)核總數(shù)為4,帶寬為1 000 Mb/s。

2)聯(lián)盟鏈網(wǎng)絡(luò):使用Hyperledger Fabric 1.4.0搭建;部署peer0.coop.itcast.cn、peer1.coop.itcast.cn、peer0.nz.itcast.cn、peer1.nz.itcast.cn等4個peer節(jié)點充當(dāng)記賬節(jié)點,部署節(jié)點Orderer為排序節(jié)點;狀態(tài)數(shù)據(jù)庫采用levelDB;區(qū)塊的最大交易數(shù)為10筆,最大打包時間間隔為2 s,最大字節(jié)數(shù)為10 MB。

3)共識協(xié)議:采用corgi-kx的РBFT算法(具體請查閱https://github.com/corgikx/blockchain_consensus_algorithm,2019-12-01),N0、N1、N2、N3充當(dāng)驗證節(jié)點。

4)Bulletproofs范圍證明采用yjjnls的包(具體請查閱https://github.com/yjjnls/awesome-blockchain/tree/master/src/ConfidentialTx/zkproofs),其他運算主要采用go自帶的math和math/big包。

5)編程語言:GO語言。

4.2 功能測試

假設(shè)聯(lián)盟鏈的兩個用戶Alice和Bob之間存在一筆交易,即Alice向Bob轉(zhuǎn)賬100。首先,分別為Alice和Bob初始化500的賬戶余額;其次,Alice需要為交易生成零知識證明證據(jù)并上傳到聯(lián)盟鏈;然后,聯(lián)盟鏈節(jié)點從鏈上獲取零知識證明證據(jù),通過PBFT算法共識交易合法性,共識交易合法通過后,記賬節(jié)點更新Alice和Bob賬戶密文;最后,檢查Alice和Bob的賬戶更新情況。

1)賬戶初始化。

在測試過程中,對鏈碼實例化時,會為Alice和Bob初始化500的賬戶余額,經(jīng)+HomElGamal加密后上傳到聯(lián)盟鏈,賬戶結(jié)構(gòu)為賬戶標(biāo)識(用戶公鑰)和賬戶余額密文,如圖2所示。由圖2可以看出,在鏈碼mycc-1.0的Log中輸出了初始化后Alice和Bob的賬戶情況,用戶Alice的賬戶標(biāo)識為Alice的公鑰,賬戶余額為密文(c1,c2),用戶Bob的賬戶同理。

圖2 初始化賬戶余額Fig.2 Initialize account balance

2)Alice為交易生成零知識證明證據(jù)并上傳到聯(lián)盟鏈。Alice從聯(lián)盟鏈CA中心獲取系統(tǒng)公共參數(shù),從CABob獲取Bob的公鑰,根據(jù)自己的公、私鑰和賬戶余額、Bob的公鑰、系統(tǒng)公共參數(shù)、轉(zhuǎn)賬金額等,按照第3.2節(jié)的過程,生成本次交易相關(guān)零知識證明證據(jù)并上傳到聯(lián)盟鏈,包括EqualEvidence(交易雙方交易金額相等證據(jù))、AmountEqualEvidence(交易金額大于零中相等性證明證據(jù))、AmountRangeEvidence(交易金額大于零中Bulletproof范圍證明證據(jù))、BalanceEqual-EvidEnce(交易余額不小于零中相等性證明證據(jù))、Balance-RangeEvidence(交易余額不小于零中Bulletproof范圍證明證據(jù)),如圖3所示。

圖3 零知識證明證據(jù)上鏈Fig.3 Zero-knowledge proof evidence on the chain

3)聯(lián)盟鏈節(jié)點從鏈上獲取零知識證明證據(jù),通過PBFT算法共識交易合法性。

首先,聯(lián)盟鏈節(jié)點獲取本次交易的相關(guān)零知識證明證據(jù),如圖4所示。

圖4 獲取零知識證明證據(jù)Fig.4 Obtain zero-knowledge proof evidence

由圖4可以看出,通過鏈上交易TXID,Alice從“864bca7d7ed5c81b8843cc9dcbb5901d919f68123fc6f8 10e74ac2219d78a203”獲得本次交易Transcation1的相關(guān)零知識證明證據(jù)。

然后,調(diào)用PBFT算法對交易合法性進(jìn)行共識。聯(lián)盟鏈節(jié)點根據(jù)相關(guān)零知識證明證據(jù)驗證交易合法性時包括5個部分:VerifyEqual(交易雙方交易金額相等驗證)、VerifyAmountEqual(交易金額大于零中相等性證明驗證)、VerifyAmountRange(交易金額大于零中Bullet-proof范圍證明驗證)、VerifyBalanceEqual(交易余額不小于零中相等性證明驗證)、VerifyBalance-Range(交易余額不小于零中Bulletproof范圍證明驗證)。每個部分驗證通過返回1,驗證失敗返回0;若節(jié)點的響應(yīng)消息為“11111”時,則本節(jié)點驗證本次交易合法。

參與本次共識測試的節(jié)點共4個,分別為N0、N1、N2、N3,允許的最大拜占庭節(jié)點數(shù)f為1,其中N0為主節(jié)點。由于共識過程中節(jié)點處理過程類似,下面以N0節(jié)點為例分析共識過程:

①主節(jié)點N0在獲取到Request之后,根據(jù)零知識證明證據(jù)判決此次交易合法性并處理后生成Pre-prepare消息后,廣播給其他從節(jié)點,如圖5(a)所示。

圖5 PBFT共識過程Fig.5 PBFT consensus process

②從節(jié)點在接受到Pre-prepare消息后,首先,比對Request與Pre-prepare的消息摘要,確保消息完整性;然后,根據(jù)零知識證明證據(jù)判決此次交易合法性并處理后,生成Prepare消息并廣播給其他節(jié)點,如圖5(b)所示。

③N0節(jié)點在收到其他節(jié)點(N1,N2)發(fā)送的Prepare消息后,首先,比對消息中的交易合法性驗證結(jié)果,如果至少3(即2f+1,本次測試f=1)個節(jié)點的Prepare消息的交易合法性驗證結(jié)果一致(包括本地節(jié)點),使用自己的私鑰對交易合法性驗證結(jié)果簽名;然后,經(jīng)過處理生成Commit消息,廣播給其他節(jié)點,如圖5(c)所示。

④N0節(jié)點在收到其他發(fā)送節(jié)點(N1,N3)的Commit消息后,根據(jù)各節(jié)點公鑰驗證確認(rèn)消息的簽名,至少3個節(jié)點的Commit消息的驗證通過后(包括本地節(jié)點),確認(rèn)本次交易合法性驗證結(jié)果,經(jīng)處理生成Reply消息,回復(fù)到聯(lián)盟鏈上,如圖5(d)所示。

⑤當(dāng)記賬節(jié)點收集到的Reply消息中至少2(即f+1,本次測試f=1)個合法性驗證結(jié)果為“11111”時,本次交易合法性驗證通過,記賬節(jié)點根據(jù)密文同態(tài)運算更新賬本和狀態(tài)數(shù)據(jù)庫。

4)檢查Alice和Bob賬戶更新。

分別通過Alice和Bob的公鑰查詢賬戶余額密文,私鑰解密判斷賬戶是否已經(jīng)更新。獲取Alice的賬戶余額密文結(jié)果并解密,如圖6所示。

圖6 獲取Alice的賬戶余額密文并解密Fig.6 Get Alice’s account balance ciphertext and decrypt it

由圖6可以看出,通過鏈上交易TXID,“ab35eeb 31426f93711fc798b8698c6738968cc34d9799b192b6a4a 99c9e39b02”是上一次Alice賬戶的鏈上交易TXID,Alice從“f9039bb9b6c2124ed33195497ebc7ca6cbdd1f12 3f5f263a8c19a26c2773c914”獲得本次交易賬戶更新后自己的賬戶余額密文C(c1,c2)。Alice根據(jù)獲取到的密文C(c1,c2)和自己的私鑰x解密賬戶余額,得到賬戶余額為400。

獲取Bob的賬戶余額并解密過程與獲取Alice賬戶余額并解密過程類似,得到賬戶余額為600,如圖7所示。

圖7 獲取Bob的賬戶余額密文并解密Fig.7 Get Bob’s account balance ciphertext and decrypt it

4.3 性能測試與分析

4.3.1 不同密鑰長度下的性能測試

使用不同密鑰長度測試本文協(xié)議的效率如表1所示。為了降低實驗偶然性,表1中數(shù)據(jù)均為50次測試的平均值,密鑰長度越長,表明協(xié)議安全性越高。

表1 不同密鑰長度下的效率對比Tab.1 Comparison efficiency under the different key length

由表1可以看出,隨著密鑰長度的增大,協(xié)議各階段效率都會降低,但總體時間均在ms級,可根據(jù)實際情況選擇合適的安全參數(shù),一般情況下設(shè)置密鑰長度為3 072位。

4.3.2 與其他協(xié)議性能的對比與分析

協(xié)議[3-4]的基礎(chǔ)加密算法采用Рaillier的效率為1 500.6 ms;協(xié)議[3]交易合法性通過驗證交易輸入輸出金額相等實現(xiàn),即交易金額相等性零知識證明;協(xié)議[4]驗證交易合法性時僅驗證交易金額大于零[8]。協(xié)議[5]通過Рedersen承諾實現(xiàn)交易金額的隱藏,交易合法性通過驗證交易金額相等和交易金額大于零實現(xiàn)。協(xié)議[7]基礎(chǔ)加密算法采用橢圓曲線同態(tài)加密,交易合法性通過交互式零知識證明驗證交易金額相等實現(xiàn)。協(xié)議[8]基礎(chǔ)加密算法采用改進(jìn)型paillier算法,驗證交易合法性時需驗證交易金額相等、交易金額大于零和交易余額大于零。為了方便比較性能,統(tǒng)一選擇密鑰長度為3 072 bit,測試數(shù)據(jù)為12 bit的十進(jìn)制整數(shù),保密算法效率包括密鑰生成時間以及加、解密時間;將本文協(xié)議的范圍證明的證據(jù)生成和驗證時間相加后表示各階段的范圍證明時間。在相同密鑰 長度下,各協(xié)議的效率對比結(jié)果如表2所示。

表2 相同密鑰長度下的效率對比Tab.2 Comparison efficiency under the same key length

由表2可以看出:與協(xié)議[3-5,7]相比,本文協(xié)議不僅對交易金額相等進(jìn)行零知識證明,而且對交易金額大于零、交易余額不小于零進(jìn)行了零知識證明,交易合法性驗證策略更完善;與協(xié)議[3-4,7-8]相比,本文協(xié)議在加解密算法效率、驗證交易合法性的零知識證明效率均有優(yōu)勢。

5 結(jié) 論

本文提出了一個面向聯(lián)盟鏈轉(zhuǎn)帳隱私保護(hù)的+HomElG零知識證明協(xié)議。首先,設(shè)計了基于РBFT的聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)應(yīng)用,詳細(xì)論述了共識交互場景,通過同態(tài)加密和零知識證明技術(shù),將交易敏感信息加密并生成相關(guān)零知識證明證據(jù)公布到聯(lián)盟鏈上,供聯(lián)盟鏈驗證節(jié)點在共識過程中公開驗證。然后,選用高效的+HomElG同態(tài)加密算法,基于Σ協(xié)議和Fiat-Shamir算法的思想,構(gòu)造一種非交互式零知識證明協(xié)議,通過+HomElG算法加密交易金額及賬戶余額,根據(jù)密文生成相關(guān)零知識證明證據(jù),可以對轉(zhuǎn)賬雙方的交易金額相等、交易金額大于零、轉(zhuǎn)賬方的交易余額不小于零進(jìn)行零知識證明,使得交易合法性驗證策略更完善;在DDH前提下的分析可以看出,本文協(xié)議具有正確性、完備性、零知識性。最后,通過構(gòu)建聯(lián)盟鏈轉(zhuǎn)賬交易隱私保護(hù)原型系統(tǒng),測試結(jié)果表明本文協(xié)議可以保護(hù)聯(lián)盟鏈用戶交易金額、交易余額等隱私信息,與同類協(xié)議相比,本文協(xié)議的效率更高、策略更完善。因此,本文協(xié)議可應(yīng)用于聯(lián)盟鏈轉(zhuǎn)賬隱私保護(hù)場景中,對于促進(jìn)聯(lián)盟鏈的應(yīng)用與推廣具有重要意義。

本文所設(shè)計零知識證明協(xié)議,在范圍證明時使用了Bulletproofs,但采用了可證明安全理論,規(guī)約過程增加了相等性證明。聯(lián)盟鏈轉(zhuǎn)賬過程中的隱私保護(hù)應(yīng)包括身份信息的保護(hù),是下一步的研究方向。

猜你喜歡
公鑰密文合法性
一種針對格基后量子密碼的能量側(cè)信道分析框架
組織合法性的個體判斷機制
一種支持動態(tài)更新的可排名密文搜索方案
基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯恢復(fù)
Westward Movement
一種基于混沌的公鑰加密方案
HES:一種更小公鑰的同態(tài)加密算法
SM2橢圓曲線公鑰密碼算法綜述
云存儲中支持詞頻和用戶喜好的密文模糊檢索
淺談汽車養(yǎng)護(hù)品生產(chǎn)的合法性
尚义县| 汉源县| 客服| 平远县| 商洛市| 舟曲县| 嘉义县| 尖扎县| 望城县| 祁连县| 神池县| 兴宁市| 卓资县| 金寨县| 凤山市| 杨浦区| 诏安县| 鄱阳县| 乌拉特前旗| 津市市| 桂阳县| 中山市| 慈利县| 静宁县| 巴南区| 湖口县| 陵川县| 巴东县| 扎鲁特旗| 什邡市| 南涧| 烟台市| 博客| 荆州市| 宝鸡市| 崇礼县| 东乌珠穆沁旗| 道孚县| 临沧市| 汕尾市| 惠安县|