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

?

面向獼猴桃產(chǎn)業(yè)鏈的聯(lián)盟鏈隱私交易方案

2023-05-28 13:32:48楊少坤
關(guān)鍵詞:公鑰密文余額

景 旭 楊少坤

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

0 引言

聯(lián)盟鏈由多個(gè)機(jī)構(gòu)聯(lián)盟構(gòu)成,由聯(lián)盟指定的成員生成、共識(shí)、維護(hù)聯(lián)盟鏈賬本,節(jié)點(diǎn)的進(jìn)入與退出需要滿(mǎn)足一定條件并得到許可[1],具有靈活的智能合約定制機(jī)制,可以快速處理事務(wù)以及可追溯、不可篡改等特性[2],天然滿(mǎn)足產(chǎn)業(yè)鏈中各生產(chǎn)環(huán)節(jié)之間通過(guò)交易形成的供應(yīng)鏈特性。獼猴桃產(chǎn)業(yè)鏈?zhǔn)且宰非蟾咂焚|(zhì)、低成本的獼猴桃生產(chǎn)為目的,以地方龍頭企業(yè)為核心,以資本為紐帶,上下游相關(guān)企業(yè)相互連接形成的鏈條,可以使相關(guān)企業(yè)之間利益共享、風(fēng)險(xiǎn)共擔(dān),促進(jìn)企業(yè)相互合作以及地方企業(yè)由單體優(yōu)勢(shì)轉(zhuǎn)化為區(qū)域特色產(chǎn)業(yè)優(yōu)勢(shì),形成整體核心競(jìng)爭(zhēng)力[3]。目前,基于聯(lián)盟鏈農(nóng)產(chǎn)品產(chǎn)業(yè)鏈研究大多以質(zhì)量溯源為主[4-6],尚無(wú)關(guān)于獼猴桃產(chǎn)業(yè)聯(lián)盟鏈隱私轉(zhuǎn)賬交易的相關(guān)研究。在實(shí)際應(yīng)用中,聯(lián)盟用戶(hù)企業(yè)為了維護(hù)自身利益,并不希望其它用戶(hù)企業(yè)通過(guò)鏈上公開(kāi)的交易數(shù)據(jù)獲取交易金額或確定其身份[7],因此,在保證產(chǎn)業(yè)鏈環(huán)境中實(shí)現(xiàn)聯(lián)盟用戶(hù)企業(yè)隱私保護(hù)逐漸成為聯(lián)盟鏈應(yīng)用的重要挑戰(zhàn)之一。

國(guó)內(nèi)外學(xué)者已經(jīng)開(kāi)展了一些相關(guān)研究[8-13]。這些研究中存在以下問(wèn)題:現(xiàn)有方案中大多沒(méi)有采用國(guó)密算法,不利于我國(guó)建設(shè)行業(yè)網(wǎng)絡(luò)安全環(huán)境及行業(yè)信息系統(tǒng)的安全、自主、可控;沒(méi)有同時(shí)實(shí)現(xiàn)交易金額與身份的雙重隱私保護(hù);Paillier零知識(shí)證明效率較低。

國(guó)家密碼管理局在2010年發(fā)布了SM2橢圓曲線公鑰密碼算法[14],2016年將其正式發(fā)布為中國(guó)國(guó)家密碼標(biāo)準(zhǔn)(GB/T 32918—2016)[15]。與基于有限域上困難問(wèn)題的數(shù)字簽名算法相比,在相同的安全強(qiáng)度下,SM2數(shù)字簽名具有存儲(chǔ)空間小、簽名速度快的優(yōu)勢(shì)。在基于SM2可鏈接環(huán)簽名方案[16]中,簽名者隨機(jī)選取無(wú)關(guān)地址連同簽名者構(gòu)成簽名集進(jìn)行環(huán)簽名,將真正簽名者隱藏到簽名集中,在簽名集其他成員無(wú)感知情況下實(shí)現(xiàn)身份匿名,環(huán)簽名的可鏈接性可用于幫助追溯簽名者身份,可以很好地契合聯(lián)盟鏈交易中匿名和可追溯的需求。與常用的加同態(tài)Paillier算法相比,在相同的安全級(jí)別下,+HomElG加同態(tài)算法[17]獲得了接近86.7%的加密加速比和接近73.4%的解密加速比。+HomElG零知識(shí)證明(+HomElG zero knowledge proof,+HomElG-ZKProof)[18]是基于+HomElG算法,面向聯(lián)盟鏈交易的一種非交互式零知識(shí)證明,可以在密文狀態(tài)下驗(yàn)證交易雙方交易金額相等、交易金額大于零、交易余額不小于零。

本文面向獼猴桃產(chǎn)業(yè)鏈提出一種基于+HomElG-ZKProof和SM2的聯(lián)盟鏈隱私交易方案。方案以獼猴桃產(chǎn)業(yè)鏈相關(guān)企業(yè)作為用戶(hù)節(jié)點(diǎn),獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)作為監(jiān)管節(jié)點(diǎn),用戶(hù)節(jié)點(diǎn)之間產(chǎn)生交易,監(jiān)管節(jié)點(diǎn)在交易過(guò)程中確認(rèn)交易雙方身份,其他用戶(hù)節(jié)點(diǎn)共識(shí)交易的有效性;轉(zhuǎn)賬方基于SM2和+HomElG-ZKProof生成機(jī)密交易信息,經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈,由監(jiān)管節(jié)點(diǎn)驗(yàn)證兩次環(huán)簽名及鏈接性確認(rèn)交易雙方身份;用戶(hù)節(jié)點(diǎn)間在應(yīng)用層使用PBFT共識(shí)驗(yàn)證環(huán)簽名及交易金額相關(guān)零知識(shí)證明確認(rèn)交易的有效性。

1 預(yù)備知識(shí)

1.1+HomElG同態(tài)加密

+HomElG算法[17]包含4個(gè)過(guò)程,具體如下:

(1)密鑰生成算法

(2)加密過(guò)程

對(duì)于明文m∈M,隨機(jī)選擇r∈Zq,加密過(guò)程為c1=grmodp,c2=yr2mmodp,得到加密后密文C(c1,c2)。

(3)解密過(guò)程

(4)同態(tài)運(yùn)算

對(duì)于給定的明文m1、m2,滿(mǎn)足m1,m2,m1+m2∈M,m1+m2的有效密文表示為C(y,m1)°C(y,m2)=(gr1,yr12m1)°(gr2,yr22m2)=(gr1+r2,yr1+r22m1+m2)。

1.2 零知識(shí)證明

(1) 相等性證明

(2)范圍證明

Bulletproofs[19]是最常用的范圍零知識(shí)證明方法之一,要求有一個(gè)離散對(duì)數(shù)(Discrete logarithm, DL)關(guān)系未知的公開(kāi)承諾密鑰(g,h)。使用相等性證明可將+HomElG加密后的密文C=(c1,c2)歸約為全局公鑰(g,h)下的Pedersen承諾。根據(jù)可證明安全理論,基于Bulletproofs證明Pedersen承諾的秘密值滿(mǎn)足范圍證明,從而證明密文C=(c1,c2)中隱藏的秘密值滿(mǎn)足范圍證明。

1.3 可鏈接環(huán)簽名

文獻(xiàn)[20]首次提出環(huán)簽名的概念,將簽名者隱藏到多用戶(hù)構(gòu)成的環(huán)中,實(shí)現(xiàn)簽名者的身份隱私。根據(jù)不同屬性特征,環(huán)簽名可分為可鏈接環(huán)簽名[21]、可否認(rèn)的環(huán)簽名[22]、門(mén)限環(huán)簽名[23]、可撤銷(xiāo)匿名性環(huán)簽名[24]等??涉溄迎h(huán)簽名因可以實(shí)現(xiàn)同一簽名者所生成簽名的鏈接,而得到了較為廣泛的應(yīng)用。

文獻(xiàn)[16]提出基于SM2數(shù)字簽名算法的可鏈接環(huán)簽名方案,以環(huán)簽名概念為基礎(chǔ),基于SM2數(shù)字簽名算法,通過(guò)嵌入安全的簽名標(biāo)簽,實(shí)現(xiàn)了可鏈接的環(huán)簽名方案。主要包括5個(gè)算法:系統(tǒng)初始化算法、密鑰生成算法、可鏈接環(huán)簽名生成算法、可鏈接環(huán)簽名驗(yàn)證算法、鏈接算法。

1.4 半誠(chéng)實(shí)模型

半誠(chéng)實(shí)模型[25]又稱(chēng)誠(chéng)實(shí)但好奇模型或被動(dòng)攻擊模型,協(xié)議參與方均嚴(yán)格執(zhí)行協(xié)議的規(guī)程,中途不會(huì)強(qiáng)行退出或惡意摻假,但某一參與方可能會(huì)保留所有能搜集到的另一方信息,并在協(xié)議執(zhí)行后試圖利用這些信息獲得更多其他參與者的隱私信息。

2 基于+HomElG-ZKProof和SM2的聯(lián)盟鏈隱私交易方案

2.1 基于聯(lián)盟鏈的獼猴桃產(chǎn)業(yè)鏈交易架構(gòu)

獼猴桃產(chǎn)業(yè)鏈一般包含農(nóng)資供應(yīng)、田間生產(chǎn)、企業(yè)加工和產(chǎn)品銷(xiāo)售等環(huán)節(jié),由農(nóng)資電商、農(nóng)業(yè)合作社、加工企業(yè)、電商平臺(tái)等單元承擔(dān)對(duì)應(yīng)的環(huán)節(jié),每個(gè)單元又可能包含眾多企業(yè)實(shí)體。產(chǎn)業(yè)鏈的企業(yè)實(shí)體間在現(xiàn)實(shí)中既存在競(jìng)爭(zhēng)關(guān)系,也有一定合作信任關(guān)系,構(gòu)成天然的聯(lián)盟組織鏈條[26]。獼猴桃產(chǎn)業(yè)鏈企業(yè)實(shí)體在交易時(shí),希望交易公開(kāi)可追溯,但為了維護(hù)自身利益可能不希望競(jìng)爭(zhēng)對(duì)手知道交易金額以及交易雙方的身份。因此,設(shè)計(jì)了基于聯(lián)盟鏈的獼猴桃產(chǎn)業(yè)鏈交易架構(gòu),如圖1所示。

圖1 基于聯(lián)盟鏈的獼猴桃產(chǎn)業(yè)鏈交易架構(gòu)

在圖1中,以不參與聯(lián)盟鏈具體交易的獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)作為監(jiān)管節(jié)點(diǎn),以產(chǎn)業(yè)鏈各環(huán)節(jié)不同的企業(yè)實(shí)體作為用戶(hù)節(jié)點(diǎn),在用戶(hù)節(jié)點(diǎn)間發(fā)生交易,監(jiān)管節(jié)點(diǎn)和用戶(hù)節(jié)點(diǎn)均向聯(lián)盟鏈CA中心登記注冊(cè),由CA中心生成并頒布節(jié)點(diǎn)證書(shū)。系統(tǒng)初始化時(shí),用戶(hù)節(jié)點(diǎn)將其受獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)監(jiān)管的賬戶(hù)余額加密后,發(fā)送給監(jiān)管節(jié)點(diǎn),監(jiān)管節(jié)點(diǎn)在本地?cái)?shù)據(jù)庫(kù)存儲(chǔ)用戶(hù)節(jié)點(diǎn)的賬戶(hù)余額密文。作為獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)的監(jiān)管節(jié)點(diǎn)是半誠(chéng)實(shí)的,聯(lián)盟鏈交易在用戶(hù)節(jié)點(diǎn)間匿名,對(duì)監(jiān)管節(jié)點(diǎn)不匿名,但交易過(guò)程中監(jiān)管節(jié)點(diǎn)無(wú)法得知具體的交易金額。當(dāng)用戶(hù)節(jié)點(diǎn)間發(fā)生交易時(shí),轉(zhuǎn)賬方用戶(hù)節(jié)點(diǎn)利用SM2簽名、SM2環(huán)簽名、同態(tài)加密、+HomElG-ZKProof等技術(shù)生成機(jī)密交易信息并經(jīng)系統(tǒng)層Raft共識(shí)打包上鏈;監(jiān)管節(jié)點(diǎn)在驗(yàn)證交易雙方身份通過(guò)后,向其他用戶(hù)節(jié)點(diǎn)發(fā)起交易有效性驗(yàn)證;由其他用戶(hù)節(jié)點(diǎn)在應(yīng)用層使用PBFT共識(shí)算法[27]驗(yàn)證區(qū)塊交易有效性并向監(jiān)管節(jié)點(diǎn)反饋共識(shí)結(jié)果;監(jiān)管節(jié)點(diǎn)收到共識(shí)反饋結(jié)果為驗(yàn)證通過(guò)(有效交易)后,將交易雙方交易余額密文經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后和區(qū)塊哈希編號(hào)一起經(jīng)系統(tǒng)層Raft共識(shí)打包上鏈,更新本地?cái)?shù)據(jù)庫(kù)中交易雙方的賬戶(hù)余額密文,交易完成。

2.2 交易協(xié)議

2.2.1初始化

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

由聯(lián)盟鏈CA中心根據(jù)+HomElG算法的參數(shù)生成算法,輸入安全參數(shù)κ,生成系統(tǒng)公共參數(shù)Bparams;根據(jù)基于SM2可鏈接環(huán)簽名算法的系統(tǒng)初始化算法,輸入安全參數(shù)λ,生成系統(tǒng)公共參數(shù)Aparams;將Bparams和Aparams寫(xiě)入CA中心的證書(shū),其中,Bparams用于用戶(hù)節(jié)點(diǎn)的賬戶(hù)余額加解密和生成交易相關(guān)零知識(shí)證明證據(jù),Aparams用于用戶(hù)節(jié)點(diǎn)賬戶(hù)地址的加解密以及生成和驗(yàn)證簽名和環(huán)簽名。通過(guò)CA中心證書(shū)公開(kāi)發(fā)布,實(shí)現(xiàn)CA中心公鑰及系統(tǒng)公共參數(shù)的分發(fā)。

(2)節(jié)點(diǎn)密鑰生成與分發(fā)

用戶(hù)節(jié)點(diǎn)通過(guò)CA中心的證書(shū)獲得系統(tǒng)公共參數(shù),根據(jù)Bparams生成自身賬戶(hù)公私鑰對(duì)(sk,h),根據(jù)Aparams生成自身地址公私鑰對(duì)(x,y)。以安全的方式將用戶(hù)節(jié)點(diǎn)的賬戶(hù)公鑰h、地址公鑰y提交給CA中心。CA中心將用戶(hù)節(jié)點(diǎn)的賬戶(hù)公鑰h、地址公鑰y寫(xiě)入用戶(hù)節(jié)點(diǎn)的證書(shū),實(shí)現(xiàn)公鑰的安全分發(fā)。賬戶(hù)私鑰sk、地址私鑰x由用戶(hù)節(jié)點(diǎn)安全保存。

監(jiān)管節(jié)點(diǎn)只需生成地址公私鑰對(duì)(xS,yS),管理方式與用戶(hù)節(jié)點(diǎn)相似。

(3)用戶(hù)節(jié)點(diǎn)賬戶(hù)初始化

聯(lián)盟鏈用戶(hù)節(jié)點(diǎn)分別使用其賬戶(hù)公鑰加密自身受獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)監(jiān)管的賬戶(hù)余額,發(fā)送給監(jiān)管節(jié)點(diǎn)。監(jiān)管節(jié)點(diǎn)以用戶(hù)節(jié)點(diǎn)的地址公鑰作為聯(lián)盟鏈用戶(hù)節(jié)點(diǎn)身份,在本地?cái)?shù)據(jù)庫(kù)中存儲(chǔ)用戶(hù)節(jié)點(diǎn)的賬戶(hù)余額密文。

2.2.2交易協(xié)議過(guò)程

本方案基于+HomElG-ZKProof實(shí)現(xiàn)交易金額的隱私,基于環(huán)簽名實(shí)現(xiàn)用戶(hù)節(jié)點(diǎn)之間的身份隱私。用戶(hù)節(jié)點(diǎn)之間發(fā)生交易,交易對(duì)監(jiān)管節(jié)點(diǎn)不匿名,監(jiān)管節(jié)點(diǎn)負(fù)責(zé)確認(rèn)交易雙方身份、發(fā)起交易有效性共識(shí)驗(yàn)證以及維護(hù)雙方交易余額密文,用戶(hù)節(jié)點(diǎn)在應(yīng)用層經(jīng)PBFT算法共識(shí)交易有效性,交易協(xié)議過(guò)程如圖2所示。

圖2 交易協(xié)議過(guò)程

(1)符號(hào)說(shuō)明

符號(hào)說(shuō)明如表1所示。

表1 符號(hào)說(shuō)明

(2) 轉(zhuǎn)賬方發(fā)起交易

(3)接收方確認(rèn)交易

Bob接收到BEncB(m)和OrderNum后,使用賬戶(hù)私鑰skB解密BEncB(m),確認(rèn)雙方交易金額;交易金額確認(rèn)后,Bob查詢(xún)自己的賬戶(hù)余額密文,經(jīng)同態(tài)計(jì)算后,得到交易后賬戶(hù)余額密文BEncB(b),即BEncB(b)=BEncB(b′)°BEncB(m);Bob用地址私鑰xB對(duì)BEncB(m)‖BEncB(b)‖OrderNum‖yA簽名,將簽名SignB(BEncB(m)‖BEncB(b)‖OrderNum‖yA)發(fā)送給Alice,如圖2中步驟②所示。

(4)轉(zhuǎn)賬方提交交易

Alice對(duì)yA、yB、OrderNum和SignB(BEncB(m)‖BEncB(b)‖OrderNum‖yA)使用相同環(huán)成員再次生成可鏈接環(huán)簽名Q′,σ(a′)=(c′1,s′1,s′2,…,s′n);通過(guò)CAs獲得監(jiān)管節(jié)點(diǎn)的公鑰yS分別加密yA、yB、Q′以及OrderNum,與再次生成的可鏈接環(huán)簽名σ(a′)、接收自Bob的簽名SignB()一起構(gòu)成了此次交易的身份證明相關(guān)信息,即AEncS(yA)‖AEncS(yB)‖AEncS(Q′)‖AEncS(OrderNum)‖σ(a′)‖SignB()。

Alice將交易金額相關(guān)信息和身份證明相關(guān)信息經(jīng)系統(tǒng)層Raft共識(shí)后打包成區(qū)塊上鏈,如圖2中步驟③所示。

(5)監(jiān)管節(jié)點(diǎn)確認(rèn)交易雙方身份

監(jiān)管節(jié)點(diǎn)在聯(lián)盟鏈上獲取用戶(hù)節(jié)點(diǎn)Alice提交的交易信息后,首先,使用私鑰xs解密AEncS(yA)‖AEncS(yB)‖AEncS(Q′)‖AEncS(OrderNum);其次,對(duì)交易金額相關(guān)信息和身份證明相關(guān)信息中的環(huán)簽名進(jìn)行驗(yàn)證和鏈接驗(yàn)證,通過(guò)后查詢(xún)本地?cái)?shù)據(jù)庫(kù)中Alice的賬戶(hù)余額密文,并與交易金額相關(guān)信息中的交易金額密文進(jìn)行同態(tài)運(yùn)算,得到結(jié)果與交易金額相關(guān)信息中的賬戶(hù)余額密文進(jìn)行比較,若相等,則Alice身份確認(rèn);然后,通過(guò)后查詢(xún)本地?cái)?shù)據(jù)庫(kù)中Bob的賬戶(hù)余額密文BEncB(b′),并與交易金額相關(guān)信息中的交易金額密文BEncB(m)進(jìn)行同態(tài)運(yùn)算得到BEncB(b),利用yA、yB、BEncB(m)、BEncB(b)以及OrderNum對(duì)Bob確認(rèn)交易的簽名SignB(BEncB(m)‖BEncB(b)‖OrderNum‖yA)進(jìn)行驗(yàn)證,若通過(guò),Bob身份確認(rèn);最后,由監(jiān)管節(jié)點(diǎn)發(fā)起交易有效性共識(shí)驗(yàn)證并等待用戶(hù)節(jié)點(diǎn)反饋,如圖2中步驟④所示。

(6)用戶(hù)節(jié)點(diǎn)共識(shí)交易有效性

用戶(hù)節(jié)點(diǎn)根據(jù)新生區(qū)塊中交易雙方的交易金額密文BEncB(m)‖BEncA(m)和交易金額相等的零知識(shí)證明證據(jù)EP(m)驗(yàn)證交易金額相等;根據(jù)BEncA(m)和交易金額大于零的零知識(shí)證明證據(jù)RP(m)驗(yàn)證交易金額大于零;根據(jù)轉(zhuǎn)賬方交易余額BEncA(b)和交易余額不小于零的零知識(shí)證明證據(jù)RP(b)驗(yàn)證轉(zhuǎn)賬方交易余額不小于零;根據(jù)L和σ(a)驗(yàn)證環(huán)簽名。用戶(hù)節(jié)點(diǎn)之間利用PBFT共識(shí)算法對(duì)交易有效性驗(yàn)證結(jié)果進(jìn)行共識(shí),向監(jiān)管節(jié)點(diǎn)反饋驗(yàn)證交易有效性共識(shí)結(jié)果,如圖2中步驟⑤所示。

(7)更新賬本

當(dāng)監(jiān)管節(jié)點(diǎn)至少收到2f+1(f為系統(tǒng)允許最大拜占庭節(jié)點(diǎn)數(shù))個(gè)用戶(hù)節(jié)點(diǎn)發(fā)送的交易有效性共識(shí)驗(yàn)證結(jié)果為通過(guò)的反饋信息后,將交易雙方交易余額密文經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后和區(qū)塊哈希編號(hào)一起經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈,更新監(jiān)管節(jié)點(diǎn)本地?cái)?shù)據(jù)庫(kù)中Alice和Bob的賬戶(hù)余額密文,如圖2中步驟⑥所示,交易結(jié)束。

當(dāng)交易發(fā)生糾紛需要追責(zé)時(shí),所有用戶(hù)節(jié)點(diǎn)均可對(duì)區(qū)塊信息進(jìn)行溯源;當(dāng)追溯到某一交易時(shí),由監(jiān)管節(jié)點(diǎn)負(fù)責(zé)解密身份證明信息中的相關(guān)密文,得到可以證明交易雙方身份的信息yA‖yB‖OrderNum‖Q′‖BEncB(b);糾紛各方均可根據(jù)此信息對(duì)區(qū)塊中的交易金額信息和身份證明信息中的環(huán)簽名進(jìn)行驗(yàn)證和鏈接驗(yàn)證,對(duì)身份證明信息中Bob的簽名進(jìn)行驗(yàn)證,確定交易雙方的身份,完成追責(zé)。

2.3 方案分析

本文方案由用戶(hù)節(jié)點(diǎn)經(jīng)系統(tǒng)層Raft共識(shí)將交易信息打包上鏈,監(jiān)管節(jié)點(diǎn)通過(guò)鏈上信息確認(rèn)交易雙方身份通過(guò)后,在應(yīng)用層向用戶(hù)節(jié)點(diǎn)發(fā)起PBFT共識(shí)請(qǐng)求;當(dāng)用戶(hù)節(jié)點(diǎn)共識(shí)交易有效性后,向監(jiān)管節(jié)點(diǎn)反饋共識(shí)結(jié)果;當(dāng)監(jiān)管節(jié)點(diǎn)至少收到2f+1個(gè)用戶(hù)節(jié)點(diǎn)反饋的共識(shí)驗(yàn)證結(jié)果為通過(guò)時(shí),將交易雙方交易余額密文經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后和區(qū)塊哈希編號(hào)一起經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈,更新本地?cái)?shù)據(jù)庫(kù)中交易雙方的賬戶(hù)余額密文。

2.3.1安全性分析

本文方案基于+HomElG-ZKProof、SM2橢圓曲線算法(SM2加解密、SM2數(shù)字簽名、SM2可鏈接環(huán)簽名)。+HomElG-ZKProof中的+HomElG同態(tài)加密算法基于離散對(duì)數(shù)困難問(wèn)題,在私鑰未知條件下,攻擊者從密文推測(cè)出明文是困難的。SM2橢圓曲線算法基于橢圓曲線上的離散對(duì)數(shù)困難問(wèn)題,加解密算法在私鑰未知條件下,攻擊者從密文推測(cè)出明文是困難的;SM2數(shù)字簽名算法具有正確性、獨(dú)特性、可驗(yàn)證性和不可偽造性;SM2可鏈接環(huán)簽名算法具有正確性、不可偽造性、無(wú)條件匿名性以及可鏈接性。

(1)篡改攻擊

本文方案由Alice向Bob發(fā)起交易。Alice如果在交易發(fā)起時(shí)篡改了交易金額,Bob在確認(rèn)交易時(shí)解密Alice發(fā)送的交易金額后就會(huì)發(fā)現(xiàn)交易金額被篡改;Alice如果在交易提交時(shí)篡改了自己賬戶(hù)公鑰加密的交易金額或者自己的交易余額,監(jiān)管節(jié)點(diǎn)在確認(rèn)Alice身份時(shí),會(huì)查詢(xún)本地?cái)?shù)據(jù)庫(kù)中Alice的賬戶(hù)余額,通過(guò)同態(tài)計(jì)算得到交易余額密文,再與Alice提交的交易余額密文比對(duì)會(huì)失敗,確認(rèn)Alice的身份失敗;Alice如果在交易提交時(shí)同時(shí)篡改自己賬戶(hù)公鑰加密的交易金額和自己的交易余額,雖然監(jiān)管節(jié)點(diǎn)會(huì)確認(rèn)身份通過(guò),但用戶(hù)節(jié)點(diǎn)根據(jù)零知識(shí)證明在驗(yàn)證交易雙方交易金額相等時(shí),將無(wú)法通過(guò);監(jiān)管節(jié)點(diǎn)是半誠(chéng)實(shí)的,不會(huì)篡改交易雙方的賬戶(hù)余額密文,且鏈上數(shù)據(jù)包含交易雙方對(duì)自己交易余額密文的簽名,假如監(jiān)管節(jié)點(diǎn)篡改交易雙方交易余額,該攻擊依然可以被發(fā)現(xiàn)。因此,本文方案可以抵抗篡改攻擊。

(2)公鑰替換攻擊

公鑰替換攻擊,即攻擊者用自己選定的假公鑰替換公鑰目錄中真實(shí)的公鑰,當(dāng)用戶(hù)使用假公鑰加密一個(gè)消息時(shí),攻擊者就可以截獲消息并正確解密。

本文方案選取的CA身份認(rèn)證服務(wù)依賴(lài)于PKI (Public key infrastructure)體系,聯(lián)盟鏈中的任何成員都可以驗(yàn)證CA證書(shū)的合法性來(lái)認(rèn)證公鑰,因此攻擊者無(wú)法實(shí)施公鑰替換。因此,本文方案可有效抵抗公鑰替換攻擊。

(3)假冒攻擊

對(duì)于本文方案的簽名算法,當(dāng)攻擊者截獲Alice交易發(fā)起階段向Bob發(fā)送的信息,可能偽造簽名消息假冒Bob向Alice發(fā)送確認(rèn)交易的虛假簽名,監(jiān)管節(jié)點(diǎn)在確認(rèn)接收方身份時(shí),會(huì)使用Bob的地址公鑰驗(yàn)證Bob確認(rèn)交易的簽名,偽造簽名消息的驗(yàn)證將不會(huì)通過(guò);當(dāng)攻擊者截獲Alice向監(jiān)管節(jié)點(diǎn)發(fā)送的交易提交信息,偽造關(guān)于接收方的相關(guān)信息,假冒Alice向監(jiān)管節(jié)點(diǎn)提交交易,若攻擊者將接收方信息完全修改,監(jiān)管節(jié)點(diǎn)確認(rèn)交易雙方身份可能會(huì)通過(guò),但由于交易金額是密文,攻擊者直接猜中交易金額可規(guī)約為離散對(duì)數(shù)困難問(wèn)題,在用戶(hù)節(jié)點(diǎn)共識(shí)交易有效性,對(duì)雙方交易金額相等進(jìn)行驗(yàn)證時(shí),將不會(huì)通過(guò)。因此,本文方案可抵抗假冒攻擊。

2.3.2匿名性分析

本文方案在用戶(hù)節(jié)點(diǎn)之間發(fā)生交易,由監(jiān)管節(jié)點(diǎn)確認(rèn)交易雙方身份和維護(hù)用戶(hù)節(jié)點(diǎn)的賬戶(hù)余額密文,因此,交易對(duì)于用戶(hù)節(jié)點(diǎn)是匿名的,對(duì)于監(jiān)管節(jié)點(diǎn)不匿名。交易發(fā)起節(jié)點(diǎn)Alice將交易金額相關(guān)信息和身份證明等相關(guān)信息打包生成新生區(qū)塊,在監(jiān)管節(jié)點(diǎn)確認(rèn)交易雙方身份后,由用戶(hù)節(jié)點(diǎn)共識(shí)交易有效性。身份證明相關(guān)信息中的AEncS(yA)‖AEncS(yB)‖AEncS(Q′)‖AEncS(OrderNum)是經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后的密文,用戶(hù)節(jié)點(diǎn)無(wú)法從身份證明相關(guān)信息獲取交易雙方身份的有用信息;由于用戶(hù)節(jié)點(diǎn)無(wú)法得知身份證明相關(guān)信息中Bob確認(rèn)交易簽名SignB(BEncB(m)‖BEncB(b)‖OrderNum‖yA)中的消息,無(wú)法獲取交易雙方身份的有用信息;同理,用戶(hù)節(jié)點(diǎn)無(wú)法得知σ(a′)中的消息無(wú)法驗(yàn)證σ(a′),同樣無(wú)法獲取交易雙方身份的有用信息。在交易金額相關(guān)信息中,用戶(hù)節(jié)點(diǎn)可以驗(yàn)證信息中的環(huán)簽名,可以確定轉(zhuǎn)賬方為環(huán)中成員,但無(wú)法確定具體成員;信息中的交易金額、交易余額均為經(jīng)+HomElG加密后的密文,確保了交易金額的隱私,由于交易余額密文隨著交易在不斷動(dòng)態(tài)變化,用戶(hù)節(jié)點(diǎn)無(wú)法根據(jù)信息中的賬戶(hù)余額密文推斷轉(zhuǎn)賬方的身份。因此,本文方案可以在用戶(hù)節(jié)點(diǎn)間實(shí)現(xiàn)匿名交易。

2.3.3共識(shí)分析

Raft共識(shí)屬于強(qiáng)領(lǐng)導(dǎo)者型共識(shí)機(jī)制,即使在節(jié)點(diǎn)規(guī)模擴(kuò)大的情況下仍能保持算法的高共識(shí)效率,但不具備拜占庭容錯(cuò)能力。PBFT共識(shí)算法提供(n-1)/3(n是系統(tǒng)參與共識(shí)的節(jié)點(diǎn)數(shù))的拜占庭容錯(cuò)性,但是O(n2)消息復(fù)雜度使得隨著節(jié)點(diǎn)的增加,交易性能大幅下降。聯(lián)盟鏈應(yīng)用中的共識(shí)機(jī)制需要兼顧高效、安全與可拓展性,尤其是在大規(guī)模網(wǎng)絡(luò)環(huán)境下仍需保持高吞吐量和低時(shí)延。

在本項(xiàng)目整體研究中,對(duì)于一般業(yè)務(wù)采用Fabric聯(lián)盟鏈系統(tǒng)自帶的崩潰容錯(cuò)共識(shí)算法[28-29],以提高系統(tǒng)的性能。作為整體研究的一部分,本文方案在系統(tǒng)層仍然使用Fabric聯(lián)盟鏈自帶的Raft共識(shí)。但本文主要研究用戶(hù)之間的資金交易信息,屬于需要公開(kāi)驗(yàn)證的敏感業(yè)務(wù),因此,在應(yīng)用層添加了能夠抵抗拜占庭問(wèn)題的PBFT共識(shí),即本文方案使用Fabric底層Raft共識(shí)將相關(guān)交易信息打包上鏈,在應(yīng)用層使用PBFT共識(shí)由用戶(hù)節(jié)點(diǎn)公開(kāi)驗(yàn)證交易有效性。

相比于獨(dú)立采用系統(tǒng)層Raft共識(shí),本文雙共識(shí)方案雖然弱化了部分性能,但提高了敏感業(yè)務(wù)的安全性,實(shí)現(xiàn)了交易金額和交易身份的雙重隱私保護(hù)。相對(duì)于獨(dú)立采用系統(tǒng)層PBFT共識(shí),本文方案從項(xiàng)目總體上提高了系統(tǒng)整體性能,特別是當(dāng)敏感業(yè)務(wù)在總體業(yè)務(wù)中占比較少的時(shí)候,使得系統(tǒng)的總體性能接近于獨(dú)立采用Raft共識(shí)。因此,在平衡系統(tǒng)性能和安全性基礎(chǔ)上,本研究采用了系統(tǒng)層Raft共識(shí)和應(yīng)用層PBFT的雙共識(shí)方案。

3 測(cè)試與分析

3.1 測(cè)試環(huán)境

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

(2)聯(lián)盟鏈網(wǎng)絡(luò):使用Hyperledger Fabric 1.4.0搭建;部署NZ.itcast.cn、HZS.itcast.cn、JGC.itcast.cn、DS.itcast.cn等4個(gè)組織,每個(gè)組織部署節(jié)點(diǎn)peer0、peer1、peer2充當(dāng)記賬節(jié)點(diǎn),部署 4 個(gè) Orderer節(jié)點(diǎn)作為排序節(jié)點(diǎn),部署節(jié)點(diǎn)SV.itcast.cn為監(jiān)管節(jié)點(diǎn);系統(tǒng)層共識(shí)采用Raft;狀態(tài)數(shù)據(jù)庫(kù)采用levelDB;區(qū)塊的最大交易數(shù)為10筆,最大打包時(shí)間間隔為2 s,最大字節(jié)為10 MB。

(3)初始化:系統(tǒng)初始化過(guò)程中,CA中心選擇合適的安全參數(shù)生成系統(tǒng)公共參數(shù)后,寫(xiě)入CA中心證書(shū);用戶(hù)節(jié)點(diǎn)及監(jiān)管節(jié)點(diǎn)選取合適的私鑰生成公鑰,將公鑰發(fā)送給CA中心生成各節(jié)點(diǎn)證書(shū);賬戶(hù)初始化過(guò)程中,各用戶(hù)節(jié)點(diǎn)將自身賬戶(hù)余額使用自身賬戶(hù)公鑰經(jīng)+HomElG加密后,發(fā)送給監(jiān)管節(jié)點(diǎn)。

(4)應(yīng)用層共識(shí):采用corgi-kx的PBFT算法(https:∥github.com/corgikx/blockchain_consensus_algorithm,2019-12-01),由12個(gè)用戶(hù)節(jié)點(diǎn)共識(shí)驗(yàn)證,最大拜占庭節(jié)點(diǎn)數(shù)f為3個(gè)。

(5)環(huán)簽名:環(huán)簽名集公鑰個(gè)數(shù)12個(gè)。

3.2 功能測(cè)試

聯(lián)盟鏈用戶(hù)Alice(加工廠用戶(hù)節(jié)點(diǎn))向聯(lián)盟鏈用戶(hù)Bob(合作社用戶(hù)節(jié)點(diǎn))購(gòu)買(mǎi)了16 t中華獼猴桃,Alice因訂單O14271375ffe71bf86b4(訂單生成過(guò)程詳見(jiàn)文獻(xiàn)[28])需向Bob轉(zhuǎn)賬40萬(wàn)元,訂單如圖3所示。

圖3 訂單詳情

圖4 發(fā)起交易

圖5 確認(rèn)交易

圖6 生成交易信息并打包上鏈

訂單O14271375ffe71bf86b4的交易流程如下:

(1)轉(zhuǎn)賬方Alice向Bob發(fā)起交易,Alice使用Bob的賬戶(hù)公鑰加密交易金額,將交易金額密文以及訂單號(hào)OrderNum發(fā)送給Bob,如圖4所示。

(2)Bob使用其賬戶(hù)私鑰解密確認(rèn)交易金額通過(guò)后,查詢(xún)其賬戶(hù)余額密文并計(jì)算交易后的賬戶(hù)余額,基于SM2對(duì)BEncBm、BEncB(b)、yA和OrderNum簽名,將簽名發(fā)送給Alice,如圖5所示。

(3)Alice收到簽名信息后,首先,生成交易金額相關(guān)密文及環(huán)簽名,如圖6a所示;其次,生成交易金額相關(guān)零知識(shí)證明證據(jù),如圖6b所示;然后,生成交易的身份證明相關(guān)信息,如圖6c所示;最后,經(jīng)系統(tǒng)層Raft共識(shí)后打包交易上鏈,如圖6d所示。

(4)監(jiān)管節(jié)點(diǎn)從鏈上“8ce9741829cd82b5759 b338be842fda4ec9999d983a23f395a27b1198e4196f6”獲取Alice打包的交易,如圖7a所示;監(jiān)管節(jié)點(diǎn)確認(rèn)交易雙方身份通過(guò)后,向用戶(hù)節(jié)點(diǎn)發(fā)起交易有效性共識(shí)驗(yàn)證,等待用戶(hù)節(jié)點(diǎn)的反饋,如圖7b所示。

圖7 監(jiān)管節(jié)點(diǎn)確認(rèn)交易并發(fā)起共識(shí)驗(yàn)證

(5)用戶(hù)節(jié)點(diǎn)根據(jù)零知識(shí)證明證據(jù)和環(huán)簽名驗(yàn)證交易的有效性,使用PBFT算法達(dá)成共識(shí),向監(jiān)管節(jié)點(diǎn)反饋共識(shí)結(jié)果。用戶(hù)節(jié)點(diǎn)驗(yàn)證交易有效性時(shí)包括4個(gè)部分,分別為VerifyEp(m)(交易雙方交易金額相等驗(yàn)證)、VerifyRp(m)(交易金額大于零驗(yàn)證)、VerifyRp(b)(交易余額不小于零驗(yàn)證)以及環(huán)簽名驗(yàn)證。每個(gè)部分驗(yàn)證通過(guò)返回1,驗(yàn)證失敗返回0。用戶(hù)節(jié)點(diǎn)間在應(yīng)用層使用PBFT共識(shí)算法共識(shí)交易的有效性并向監(jiān)管節(jié)點(diǎn)反饋共識(shí)結(jié)果,如圖8所示。

圖8 共識(shí)驗(yàn)證區(qū)塊

(6)當(dāng)監(jiān)管節(jié)點(diǎn)至少收到2f+1個(gè)(f=3)用戶(hù)節(jié)點(diǎn)發(fā)送的反饋共識(shí)結(jié)果為“1111”時(shí),該區(qū)塊交易有效,將交易雙方交易余額密文經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后和區(qū)塊哈希編號(hào)一起經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈,更新本地?cái)?shù)據(jù)庫(kù)中交易雙方的賬戶(hù)余額密文,完成交易,如圖9所示。

圖9 有效交易區(qū)塊哈希編號(hào)上鏈

3.3 方案效率分析

本文方案中將交易分為發(fā)起交易、確認(rèn)交易、提交交易、生成區(qū)塊、確認(rèn)交易雙方身份以及共識(shí)交易有效性等階段,使用不同的安全參數(shù)κ測(cè)試各個(gè)階段的效率,如表2所示。

表2 不同安全參數(shù)交易各階段效率

為了降低實(shí)驗(yàn)偶然性,表2中數(shù)據(jù)均為50次測(cè)試的平均值。安全參數(shù)κ越大,表明方案安全性越高。由表2可以看出,隨著安全參數(shù)κ的增大,方案各階段除新生區(qū)塊生成外,效率都會(huì)降低,但總體交易時(shí)間均在毫秒級(jí),可根據(jù)具體情況選擇合適的安全參數(shù),一般情況下設(shè)置κ為2 048 bit,交易時(shí)間為4.495 s,可以滿(mǎn)足獼猴桃產(chǎn)業(yè)聯(lián)盟鏈交易的實(shí)際需要。

3.4 方案特性分析

文獻(xiàn)[8]面向聯(lián)盟鏈?zhǔn)褂肧M9算法和群簽名技術(shù)實(shí)現(xiàn)了身份匿名,但未實(shí)現(xiàn)交易金額的隱私保護(hù);文獻(xiàn)[9]和文獻(xiàn)[10]面向聯(lián)盟鏈?zhǔn)褂猛瑧B(tài)加密和零知識(shí)證明技術(shù)實(shí)現(xiàn)了交易金額的隱私保護(hù),但未實(shí)現(xiàn)身份匿名;文獻(xiàn)[11]使用環(huán)簽名和Pedersen承諾實(shí)現(xiàn)了全匿名,但因切斷了交易關(guān)聯(lián)性導(dǎo)致可追溯性較差;文獻(xiàn)[12]使用聚合簽名實(shí)現(xiàn)了全匿名,但面向比特幣基于交易的區(qū)塊鏈模型,不適用于聯(lián)盟鏈。本文方案與其它相關(guān)研究的特性對(duì)比如表3所示。

表3 本文方案與其它方案的特性對(duì)比

由表3可以看出,相較于只實(shí)現(xiàn)單一隱私方向的方案,本文方案提升了對(duì)用戶(hù)以及交易整體的隱私保護(hù)程度,滿(mǎn)足了面向獼猴桃產(chǎn)業(yè)聯(lián)盟鏈交易時(shí)企業(yè)實(shí)體對(duì)身份隱私和交易金額的隱私保護(hù)需要;相較于面向公有鏈的方案,本文方案有更快的區(qū)塊生成及事務(wù)處理速度,可以提高交易效率;且本文方案具有可追溯性,更加滿(mǎn)足獼猴桃產(chǎn)業(yè)聯(lián)盟鏈交易的實(shí)際需求。

4 結(jié)束語(yǔ)

本文面向獼猴桃產(chǎn)業(yè)鏈隱私交易的需求,利用+HomElG-ZKProof和SM2的特性,提出了一種聯(lián)盟鏈隱私交易方案。以獼猴桃產(chǎn)業(yè)鏈相關(guān)企業(yè)作為用戶(hù)節(jié)點(diǎn),以獼猴桃產(chǎn)業(yè)鏈協(xié)會(huì)作為監(jiān)管節(jié)點(diǎn),設(shè)計(jì)了基于聯(lián)盟鏈的獼猴桃產(chǎn)業(yè)鏈交易架構(gòu)。根據(jù)產(chǎn)業(yè)鏈企業(yè)實(shí)體在交易時(shí)希望交易金額和身份的雙重隱私需求,設(shè)計(jì)了具體的交易協(xié)議。當(dāng)用戶(hù)節(jié)點(diǎn)間發(fā)生交易時(shí),轉(zhuǎn)賬方利用+HomElG加密交易金額后發(fā)送給接收方,接收方基于SM2簽名確認(rèn)交易后發(fā)送給轉(zhuǎn)賬方;轉(zhuǎn)賬方利用SM2加密、SM2可鏈接環(huán)簽名、同態(tài)加密、零知識(shí)證明等技術(shù)生成機(jī)密交易信息和接收方SM2簽名一起經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈;監(jiān)管節(jié)點(diǎn)在解密相關(guān)密文后,通過(guò)驗(yàn)證SM2簽名、兩次環(huán)簽名及鏈接性確認(rèn)交易雙方身份后,向其他用戶(hù)節(jié)點(diǎn)發(fā)起交易有效性驗(yàn)證;由其他用戶(hù)節(jié)點(diǎn)在應(yīng)用層使用PBFT共識(shí)算法,通過(guò)驗(yàn)證交易金額相關(guān)密文的環(huán)簽名及交易金額相關(guān)零知識(shí)證明證據(jù)確認(rèn)區(qū)塊交易有效性并向監(jiān)管節(jié)點(diǎn)反饋共識(shí)結(jié)果;監(jiān)管節(jié)點(diǎn)收到共識(shí)反饋結(jié)果為驗(yàn)證通過(guò)后,將交易雙方交易余額密文經(jīng)監(jiān)管節(jié)點(diǎn)公鑰加密后和區(qū)塊哈希編號(hào)一起經(jīng)系統(tǒng)層Raft共識(shí)后打包上鏈,更新本地?cái)?shù)據(jù)庫(kù)中交易雙方的賬戶(hù)余額密文,完成交易?;贖yperledger Fabric實(shí)現(xiàn)了一個(gè)面向獼猴桃產(chǎn)業(yè)鏈隱私交易原型系統(tǒng),對(duì)方案進(jìn)行了分析與測(cè)試。分析表明,本文方案具有抗篡改攻擊、抗公鑰替換攻擊、抗假冒攻擊以及匿名性,安全性較高;測(cè)試結(jié)果表明,本文方案可以實(shí)現(xiàn)獼猴桃產(chǎn)業(yè)聯(lián)盟鏈用戶(hù)交易金額和身份雙重隱私保護(hù),且交易時(shí)間相對(duì)較短,可以滿(mǎn)足獼猴桃產(chǎn)業(yè)聯(lián)盟鏈交易的實(shí)際需要。

猜你喜歡
公鑰密文余額
一種針對(duì)格基后量子密碼的能量側(cè)信道分析框架
央行:2022年三季度末個(gè)人住房貸款余額38.91萬(wàn)億元
一種支持動(dòng)態(tài)更新的可排名密文搜索方案
基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯(cuò)恢復(fù)
2020,余額不足
一種基于混沌的公鑰加密方案
HES:一種更小公鑰的同態(tài)加密算法
SM2橢圓曲線公鑰密碼算法綜述
余額寶的感知風(fēng)險(xiǎn)
滬港通一周成交概況 (2015.5.8—2015.5.14)
中超| 织金县| 宁晋县| 玛纳斯县| 敦煌市| 永城市| 英吉沙县| 鄄城县| 屯门区| 奉化市| 六枝特区| 通州区| 栖霞市| 五莲县| 汝城县| 西昌市| 连山| 锦屏县| 澄迈县| 剑阁县| 道真| 宁远县| 古田县| 安庆市| 通化县| 卢龙县| 凤冈县| 舞阳县| 南皮县| 江孜县| 启东市| 马龙县| 邳州市| 天水市| 广德县| 岑巩县| 沾益县| 铜川市| 榕江县| 龙门县| 诸城市|