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

?

基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案*

2022-03-01 06:08:40管哿浠馬兆豐葉可可羅守山段鵬飛
信息安全與通信保密 2022年10期
關(guān)鍵詞:數(shù)據(jù)源門限合約

管哿浠,馬兆豐,葉可可,羅守山,段鵬飛

(1.北京郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京 100876;2.中移動信息技術(shù)有限公司 研發(fā)創(chuàng)新中心,北京 102200)

0 引言

近年來,區(qū)塊鏈技術(shù)的飛速發(fā)展引起了國內(nèi)外的廣泛關(guān)注。區(qū)塊鏈深度融合分布式賬本、共識機(jī)制、密碼學(xué)、智能合約等前沿技術(shù)[1],憑借去中心化、多方共識、不可篡改、透明化、安全可信的特性在醫(yī)療[2]、人工智能[3]、大數(shù)據(jù)[4]、 貨幣加密[5]等領(lǐng)域有著廣泛的應(yīng)用前景,越來越多的基于區(qū)塊鏈技術(shù)的相關(guān)應(yīng)用隨之產(chǎn)生。隨著“十四五”規(guī)劃的提出[6],區(qū)塊鏈成為我國數(shù)字經(jīng)濟(jì)重點產(chǎn)業(yè),區(qū)塊鏈技術(shù)和相關(guān)產(chǎn)業(yè)飛速發(fā)展。

區(qū)塊鏈系統(tǒng)中涉及的數(shù)據(jù)分為鏈下數(shù)據(jù)和鏈上數(shù)據(jù)兩種類型[7]。在實際應(yīng)用當(dāng)中,數(shù)據(jù)不僅要從區(qū)塊鏈系統(tǒng)的鏈上數(shù)據(jù)中獲得,還要從鏈下的外部世界中獲得。對于鏈上數(shù)據(jù)而言,區(qū)塊鏈系統(tǒng)憑借其共識機(jī)制和密碼學(xué)技術(shù)保障了其真實性和可靠性。然而,外部世界的鏈下數(shù)據(jù)并沒有以賬本的形式存儲到區(qū)塊鏈系統(tǒng)中。因此,區(qū)塊鏈系統(tǒng)并不能保障鏈下數(shù)據(jù)的安全性和可靠性,這對區(qū)塊鏈數(shù)據(jù)上鏈提出了很高的要求。如何保障上鏈數(shù)據(jù)的正確性和隱私性,是區(qū)塊鏈技術(shù)發(fā)展的重要方向。隨著區(qū)塊鏈應(yīng)用產(chǎn)業(yè)的不斷擴(kuò)展,高效、安全、可靠的新型數(shù)據(jù)上鏈技術(shù)亟需被提出。

目前,區(qū)塊鏈數(shù)據(jù)上鏈有兩方面要求,一是過濾不可信數(shù)據(jù)源提供的污染數(shù)據(jù),防止臟數(shù)據(jù)完成上鏈,保障上鏈數(shù)據(jù)的正確性;二是隱藏可信數(shù)據(jù)源提供的有效數(shù)據(jù)的明文信息,在保證數(shù)據(jù)可用不可見的前提下,保障上鏈數(shù)據(jù)的隱私性和可用性。預(yù)言機(jī)是區(qū)塊鏈系統(tǒng)和外部世界連接的橋梁,是一種區(qū)塊鏈上寫入鏈下數(shù)據(jù)的機(jī)制,能夠?qū)崿F(xiàn)對上鏈數(shù)據(jù)的完整性和真實性驗證,保證上鏈數(shù)據(jù)的正確性。其主要工作是將外部應(yīng)用程序接口(Application Programming Interface,API)收集到的鏈下數(shù)據(jù)整合并提供給智能合約,憑借簽名算法認(rèn)證外界世界狀態(tài)的信息,從而允許確定的智能合約對不確定的外部世界做出反應(yīng)。通過預(yù)言機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)源認(rèn)證、數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)清洗[8]等過程完成可信數(shù)據(jù)上鏈。零知識證明作為傳統(tǒng)隱私保護(hù)技術(shù)在保證數(shù)據(jù)真實可用的前提下,有效保護(hù)上鏈數(shù)據(jù)的隱私信息,同時保障了數(shù)據(jù)的可用性和隱私性。

碳市場是全球為解決經(jīng)濟(jì)發(fā)展所帶來的環(huán)境外部性問題而產(chǎn)生的政策性市場[9]。為了平衡經(jīng)濟(jì)發(fā)展帶來的環(huán)境問題,碳市場成為世界環(huán)境保護(hù)的重點陣地。目前,我國的碳市場還處于初級發(fā)展階段,需要建立良好的碳排放機(jī)制,做好數(shù)據(jù)核查、企業(yè)碳排放量分配、碳交易市場、總體清算等工作。然而,我國原有的碳排放機(jī)制呈現(xiàn)參與方多、數(shù)據(jù)難以協(xié)同和各方信任缺乏等特點,其突出問題在于企業(yè)碳排放數(shù)據(jù)容易出現(xiàn)造假現(xiàn)象。這是因為企業(yè)碳排放量證明由第三方機(jī)構(gòu)給出,地方政府與企業(yè)之間不存在直接的信息通道。一旦企業(yè)與第三方機(jī)構(gòu)聯(lián)合進(jìn)行數(shù)據(jù)造假,地方政府將難以掌握企業(yè)碳排放真實情況,難以建立碳信息披露機(jī)制,不利于我國碳排放機(jī)制的實現(xiàn)。將區(qū)塊鏈技術(shù)應(yīng)用于碳排放機(jī)制,通過安全可信的區(qū)塊鏈數(shù)據(jù)上鏈機(jī)制,在企業(yè)碳排放數(shù)據(jù)報告上鏈前進(jìn)行數(shù)據(jù)認(rèn)證,保障企業(yè)碳排放數(shù)據(jù)報告的真實有效性,避免第三方核查機(jī)構(gòu)和企業(yè)勾結(jié)而導(dǎo)致的數(shù)據(jù)報告造假現(xiàn)象。同時,依靠區(qū)塊鏈技術(shù)的共識機(jī)制和防篡改特性還能有效減少原碳排放機(jī)制因信任機(jī)制缺乏、信息不對稱造成的相關(guān)問題。將區(qū)塊鏈技術(shù)運用于我國碳排放管理,構(gòu)建一個可追溯、可共享的碳排放流程的數(shù)據(jù)共享平臺并建立信任機(jī)制和協(xié)同關(guān)系,有利于提高交易效率,共同促進(jìn)碳市場發(fā)展[9]。

本文的研究工作如下文所述。

(1)提出基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈協(xié)議。零知識證明能夠保證在不暴露數(shù)據(jù)源明文數(shù)據(jù)的前提下,提供數(shù)據(jù)的有效性證明;預(yù)言機(jī)完成對數(shù)據(jù)的認(rèn)證,保障通過預(yù)言機(jī)上鏈的數(shù)據(jù)是真實有效的。

(2)針對我國碳排放場景,將上述協(xié)議與我國碳排放機(jī)制融合,提出一種基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案。該方案要上鏈的數(shù)據(jù)為企業(yè)碳排放合規(guī)性證明,由數(shù)據(jù)源利用零知識證明算法生成零知識證明,預(yù)言機(jī)系統(tǒng)進(jìn)行零知識證明驗證和預(yù)言機(jī)系統(tǒng)的數(shù)據(jù)認(rèn)證。通過預(yù)言機(jī)系統(tǒng)認(rèn)證的數(shù)據(jù)才可以完成最終的數(shù)據(jù)上鏈。

(3)實現(xiàn)本文提到的零知識證明算法和Schnorr簽名算法,并對其進(jìn)行功能性測試與性能分析。實驗結(jié)果表明,相比于BLS簽名算法,本文選擇的Schnorr算法效率更高,簽名驗證消耗時間更少;加入零知識證明算法后,雖然運行效率降低,但極大地增強(qiáng)了數(shù)據(jù)的隱私安全性,在數(shù)據(jù)可用不可見的前提下,保證了數(shù)據(jù)的可用性。

1 相關(guān)工作和背景知識

1.1 相關(guān)工作

憑借區(qū)塊鏈去中心化、多方共識、不可篡改、透明化、安全可信的特性,基于區(qū)塊鏈技術(shù)的碳排放研究越來越多。袁莉莉等人[9]對基于區(qū)塊鏈技術(shù)的碳排放機(jī)制進(jìn)行了研究,通過區(qū)塊鏈公開透明、可追溯、可共享等優(yōu)點解決了碳排放環(huán)節(jié)中信息不對稱和容易數(shù)據(jù)造假的痛點問題,實現(xiàn)了碳交易的可追溯、可共享,提高了碳交易效率,降低了碳交易成本。張澤[10]基于區(qū)塊鏈智能合約技術(shù)設(shè)計了一個碳排放交易系統(tǒng),實現(xiàn)了碳排放交易系統(tǒng)的基本功能,使交易數(shù)據(jù)能夠記錄到區(qū)塊鏈中,相比于傳統(tǒng)的碳交易平臺更加安全透明。劉林林[11]基于區(qū)塊鏈技術(shù)設(shè)計了一個碳排放交易模型,通過屬性基加密的密碼學(xué)技術(shù)提供了高強(qiáng)度的隱私保護(hù)能力。宋得民等人[12]提出了基于區(qū)塊鏈的智慧碳排放管理方案,通過區(qū)塊鏈技術(shù)進(jìn)行碳排放情況的智能化、數(shù)字化管理,并運用長短期記憶神經(jīng)網(wǎng)絡(luò)算法對碳配額的購買進(jìn)行合理規(guī)劃,從而降低交易風(fēng)險。吳花平等人[13]對基于區(qū)塊鏈的碳排放審計流程優(yōu)化進(jìn)行了研究,闡述了區(qū)塊鏈技術(shù)與碳排放審計結(jié)合的可行性,并對區(qū)塊鏈技術(shù)環(huán)境下的碳排放審計流程進(jìn)行了舉例說明。

1.2 區(qū)塊鏈技術(shù)

區(qū)塊鏈技術(shù)最初源于中本聰在2008年發(fā)表的題為Bitcoin:A Peer-to-Peer Electronic Cash System的論文[14]。其并非憑空出現(xiàn)的新技術(shù),而是由密碼學(xué)技術(shù)、點對點網(wǎng)絡(luò)(Peer to Peer,P2P)以及時間戳技術(shù)等現(xiàn)有技術(shù)整合而成。經(jīng)過多年的技術(shù)創(chuàng)新,區(qū)塊鏈已經(jīng)進(jìn)入到了第三階段。最初是用于記錄比特幣等數(shù)字貨幣交易的數(shù)據(jù)結(jié)構(gòu)[15]。之后隨著以太坊的出現(xiàn),一個開源的有智能合約功能的公共區(qū)塊鏈平臺帶來了更多的應(yīng)用實現(xiàn)。到如今,具有公開透明、可追溯特點[16]的區(qū)塊鏈技術(shù)正在擴(kuò)展到人們生活的各個方面,逐漸將去中心化的思想帶到人們的生活。

1.3 零知識證明

零知識證明(Zero-Knowledge Proof,ZKP)是由S.Goldwasser、S.Micali及C.Rackoff提出的一種密碼協(xié)議[17]。它能在不向驗證者透露消息內(nèi)容的前提下,證明消息含有某個值或者處于某個區(qū)間[18]。零知識證明可以用于解決區(qū)塊鏈隱私保護(hù)以及數(shù)據(jù)的合法性驗證等問題。本文的零知識證明協(xié)議是基于Paillier算法,用于解決碳排放合規(guī)的合法性證明。Alice需要在不透露c和C具體值的前提下向Bob證明兩數(shù)之間的大小關(guān)系,其中c和C為Alice擁有的隱私信息。證明流程如下文所述。

(1)系統(tǒng)初始化:利用Paillier密鑰生成算法,為Alice和Bob分別生成公私鑰對。

(2)零知識證明生成:Alice獲取Bob的公鑰PKBob,根據(jù)要證明大小關(guān)系的兩數(shù)c和C生成零知識證明π,并將零知識證明π發(fā)送給Bob。

(3)零知識證明驗證:Bob用自己的私鑰SKBob對零知識證明π進(jìn)行驗證,通過驗證結(jié)果可以知道兩數(shù)c和C之間的大小關(guān)系。

1.4 Paillier算法

Paillier算法[19]是Pascal Paillier在1999年發(fā)明的概率公鑰加密算法,滿足加法同態(tài)。該算法可以進(jìn)行零知識證明計算。Paillier算法具體包括以下步驟。

(1)密鑰生成:選擇兩個隨機(jī)的大素數(shù)p和q,保證gcd(pq,(p? 1)(q?1))=1,gcd(,) 為兩個參數(shù)的最大公約數(shù)。計算n=pq,λ=lcm((p? 1,q? 1),n為素數(shù)的乘積,λ為最小公倍數(shù),lcm(,)可以計算兩個參數(shù)的最小公倍數(shù)。選取隨 機(jī)正整數(shù)且存在其中函數(shù)L(x)的定義。此時,公鑰為(n,g),私鑰為(λ,μ)。

(2)加密過程:對于明文m,m∈Zn,選擇隨機(jī)數(shù)r,滿足0

(3)解密過程:利用私鑰(λ,μ)進(jìn)行解密,明文m=L(cλmodn2) ?μmodn。

1.5 預(yù)言機(jī)

區(qū)塊鏈[20-25]系統(tǒng)通過智能合約代碼將數(shù)據(jù)寫入?yún)^(qū)塊中,智能合約代碼會根據(jù)預(yù)先設(shè)定的條件自動執(zhí)行,保障寫入數(shù)據(jù)的過程是透明的、可追蹤、不可篡改。然而,區(qū)塊鏈?zhǔn)且粋€確定性的、封閉的系統(tǒng)環(huán)境,智能合約中不允許存在不確定的因素。因此,區(qū)塊鏈無法主動獲取鏈下數(shù)據(jù)。為了建立外部數(shù)據(jù)和區(qū)塊鏈鏈上數(shù)據(jù)之間的橋梁,可以通過區(qū)塊鏈預(yù)言機(jī)進(jìn)行外部數(shù)據(jù)的數(shù)據(jù)上鏈。

區(qū)塊鏈預(yù)言機(jī)(Blockchain Oracle)是一種連接現(xiàn)實數(shù)據(jù)源和鏈上用戶智能合約的數(shù)據(jù)服務(wù)機(jī)制。發(fā)送到區(qū)塊鏈的數(shù)據(jù)或交易事件需要通過預(yù)言機(jī)作為確定性輸入才能觸發(fā)用戶的智能合約。預(yù)言機(jī)是區(qū)塊鏈與真實數(shù)據(jù)源之間的唯一數(shù)據(jù)交互接口,外部數(shù)據(jù)源的數(shù)據(jù)首先提交預(yù)言機(jī)進(jìn)行聚合和匯總,然后由預(yù)言機(jī)觸發(fā)用戶智能合約進(jìn)行數(shù)據(jù)上鏈。預(yù)言機(jī)的工作流程如圖1所示。

圖1 預(yù)言機(jī)工作流程

門限預(yù)言機(jī)屬于分布式預(yù)言機(jī)的一種,是多點部署預(yù)言機(jī)的機(jī)制,數(shù)據(jù)上鏈不由任何單一的節(jié)點所控制,沒有單點失效的風(fēng)險。在門限預(yù)言機(jī)中,采用門限簽名算法對預(yù)言機(jī)的上傳數(shù)據(jù)進(jìn)行匯總,普通預(yù)言機(jī)節(jié)點可以對與其相連的任何數(shù)據(jù)源進(jìn)行認(rèn)證。設(shè)系統(tǒng)中參與數(shù)據(jù)源認(rèn)證的預(yù)言機(jī)數(shù)量為n,簽名門限為t,當(dāng)提交相同數(shù)據(jù)的預(yù)言機(jī)數(shù)量超過門限值t時,則認(rèn)為該數(shù)據(jù)是正確的,同時,可以通過設(shè)置積分獎懲機(jī)制管理預(yù)言機(jī)節(jié)點,減少惡意預(yù)言機(jī)作惡的可能。如果預(yù)言機(jī)節(jié)點提供了不正確的數(shù)據(jù),就會被扣除相應(yīng)的積分,而積分也會對門限預(yù)言機(jī)的選取具有重要意義。

2 方案設(shè)計

2.1 方案模型

本文的基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案的模型如圖2所示。該方案是針對碳排放應(yīng)用場景提出的一種基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案,包括以下實體:用戶節(jié)點、用戶智能合約、預(yù)言機(jī)智能合約、預(yù)言機(jī)群、數(shù)據(jù)源。

圖2 方案模型

(1)用戶節(jié)點:將用戶數(shù)據(jù)上傳到區(qū)塊鏈系統(tǒng),并通過請求用戶智能合約進(jìn)行鏈下數(shù)據(jù)上鏈,獲取所需的鏈下實時數(shù)據(jù)。

(2)用戶智能合約:接受用戶節(jié)點的鏈下數(shù)據(jù)上鏈的請求,并向預(yù)言機(jī)智能合約請求相關(guān)數(shù)據(jù)。

(3)預(yù)言機(jī)智能合約:驗證預(yù)言機(jī)群傳來的數(shù)據(jù)和簽名,上傳相關(guān)用戶數(shù)據(jù),并完成預(yù)言機(jī)群的積分管理。

(4)預(yù)言機(jī)群:向數(shù)據(jù)源請求鏈下實時數(shù)據(jù),驗證數(shù)據(jù)源傳來的數(shù)據(jù)和零知識證明,對于正確有效的數(shù)據(jù)生成簽名并上傳給預(yù)言機(jī)智能合約。

(5)數(shù)據(jù)源:收到預(yù)言機(jī)的數(shù)據(jù)請求,通過傳感器收集相關(guān)實時數(shù)據(jù),并生成對應(yīng)的零知識證明,上傳到對應(yīng)預(yù)言機(jī)。

2.2 方案描述

在該方案中,數(shù)據(jù)上鏈工作流程可以分為系統(tǒng)初始化、數(shù)據(jù)請求、數(shù)據(jù)證明、數(shù)據(jù)簽名、數(shù)據(jù)上鏈5個階段。各個階段詳細(xì)描述如下文所述。

(1)系統(tǒng)初始化:預(yù)言機(jī)節(jié)點啟動服務(wù)程序,該服務(wù)可以調(diào)用第三方API,獲取鏈下實時數(shù)據(jù),并構(gòu)造提供交易給智能合約。每個預(yù)言機(jī)節(jié)點還要利用安全參數(shù)產(chǎn)生全局參數(shù),將全局參數(shù)公開,生成各自的公私鑰對。

(2)數(shù)據(jù)請求:用戶節(jié)點向區(qū)塊鏈系統(tǒng)發(fā)出實時數(shù)據(jù)請求,通過請求用戶智能合約進(jìn)行鏈下實時數(shù)據(jù)上鏈,獲取相關(guān)數(shù)據(jù)信息。

(3)數(shù)據(jù)證明:數(shù)據(jù)源處的傳感器收集到原始數(shù)據(jù)后,根據(jù)數(shù)據(jù)請求來源的預(yù)言機(jī)的公鑰,生成對應(yīng)的零知識證明。將實時數(shù)據(jù)和零知識證明上傳到對應(yīng)的預(yù)言機(jī)。預(yù)言機(jī)通過自己的私鑰進(jìn)行零知識證明驗證,核查驗證結(jié)果與實時數(shù)據(jù)是否相符,若相符則認(rèn)為該數(shù)據(jù)正確。

(4)數(shù)據(jù)簽名:各個預(yù)言機(jī)對正確的數(shù)據(jù)根據(jù)自己的私鑰生成簽名,上傳到門限預(yù)言機(jī)。門限預(yù)言機(jī)進(jìn)行簽名驗證,驗證通過的數(shù)據(jù)才能夠進(jìn)行門限統(tǒng)計。當(dāng)驗證通過的相同數(shù)據(jù)的數(shù)量達(dá)到門限值時,則認(rèn)為該數(shù)據(jù)已經(jīng)通過預(yù)言機(jī)群的驗證。將正確的數(shù)據(jù)生成簽名并上傳到預(yù)言機(jī)智能合約,由預(yù)言機(jī)智能合約進(jìn)行簽名驗證,允許驗證通過的數(shù)據(jù)進(jìn)行數(shù)據(jù)上鏈。同時預(yù)言機(jī)智能合約還要完成預(yù)言機(jī)群的積分管理。

(5)數(shù)據(jù)上鏈:若用戶智能合約將預(yù)言機(jī)智能合約傳來的數(shù)據(jù)進(jìn)行上鏈,則認(rèn)為該數(shù)據(jù)已經(jīng)通過驗證。

2.3 算法設(shè)計

2.3.1 零知識證明算法設(shè)計

本文將零知識證明算法用于兩數(shù)的大小關(guān)系證明,對于兩數(shù)c和C進(jìn)行大小比較,生成并上傳大小關(guān)系證明E,算法流程具體如下文所述。

(1)密鑰初始化GenKey(p,q,i)。

Step1 該算法由預(yù)言機(jī)節(jié)點i執(zhí)行,大素數(shù)p和q的選擇要保證gcd(pq,(p? 1)(q? 1))=1,且n=pq。

Step2 選取隨機(jī)正整數(shù)g,且存在μ=(L(gλmodn2))?1,其中函數(shù)L(x)的定義為。

Step3 輸出私鑰SKi= (λ,μ)和公鑰PKi,并將公鑰進(jìn)行公開。

(2)證明生成Prove(c,C,PKi)。

Step1 該算法由數(shù)據(jù)源節(jié)點執(zhí)行,傳感器收集碳排放量數(shù)據(jù)c,與碳排放量閾值C和預(yù)言機(jī)i的公鑰PKi作為輸入。

Step2 拆分c=I1/J1,C=I2/J2。

Step3 選擇隨機(jī)數(shù)r1,滿足 0

Step4 選擇隨機(jī)數(shù)r2,滿足 0

Step5 用上述參數(shù)生成零知識證明E,計算:

式中:I1,J1,I2,J2為整數(shù),是拆分過程的中間值;EPKi(I1)是對I1的數(shù)據(jù)加密結(jié)果;是對n?J1的數(shù)據(jù)加密結(jié)果;PKi為預(yù)言機(jī)節(jié)點i的公鑰。

(3)證明驗證Verify(E,SKi,m)。

Step1 該算法由預(yù)言機(jī)節(jié)點i執(zhí)行,由零知識證明E、私鑰SKi和碳排放量合規(guī)性信息m作為輸入,進(jìn)行零知識證明驗證。

Step2 利用私鑰SKi,計算:

式中:X為零知識證明的驗證結(jié)果;DSKi(E)是對E的數(shù)據(jù)解密結(jié)果;SKi為預(yù)言機(jī)節(jié)點i的私鑰。

Step3 驗證兩數(shù)的大小關(guān)系,若X> 0,則表示c>C;若X< 0,則表示c

Step4 通過驗證結(jié)果X來判斷碳排放量合規(guī)性信息m的正確性。

2.3.2 門限簽名算法設(shè)計

門限簽名算法適用于分布式預(yù)言機(jī)的場景,用于預(yù)言機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)認(rèn)證,防止惡意預(yù)言機(jī)節(jié)點上傳臟數(shù)據(jù)到區(qū)塊鏈系統(tǒng)。本文選擇Schnorr簽名算法用于單個預(yù)言機(jī)節(jié)點對數(shù)據(jù)的簽名,簽名生成后上傳至門限預(yù)言機(jī)。門限預(yù)言機(jī)收到超過門限值個相同數(shù)據(jù)后,認(rèn)為該數(shù)據(jù)是正確的。此時,門限預(yù)言機(jī)對該數(shù)據(jù)簽名并上傳到區(qū)塊鏈中進(jìn)行上鏈。算法具體流程如下文所述。

(1)密鑰生成initPara。

Step1 此算法由預(yù)言機(jī)節(jié)點i執(zhí)行,選擇兩個隨機(jī)的大素數(shù)p和q,且q是p的素因子。選取整數(shù)a,使得aq= 1 (modp),a,p,q被系統(tǒng)所有節(jié)點共同擁有,是系統(tǒng)的初始參數(shù)。

Step2 預(yù)言機(jī)節(jié)點i生成私鑰ski,0

(2)數(shù)據(jù)簽名GenSign。

Step1 此算法由預(yù)言機(jī)節(jié)點i執(zhí)行,選擇隨機(jī)整數(shù)r,0

Step2 將R附在消息m后面進(jìn)行Hash計算,h=H(m|R),h為哈希值。

Step3 利用預(yù)言機(jī)節(jié)點i的私鑰ski,計算s= (r+ski×h) (modp),s為簽名中間值。

Step4 生成對消息m的簽名(m,h,s)。

(3)簽名驗證CheckSign。

Step1 此算法由門限預(yù)言機(jī)執(zhí)行,獲取預(yù)言機(jī)節(jié)點i的公鑰pki。

(4)門限觸發(fā)。

Step1 該算法由門限預(yù)言機(jī)執(zhí)行,設(shè)定該算法門限值為t。

Step2 當(dāng)簽名驗證通過的相同數(shù)據(jù)的個數(shù)達(dá)到門限值t時,則認(rèn)為該數(shù)據(jù)是正確的,經(jīng)過了預(yù)言機(jī)群認(rèn)證。

Step3 通過門限預(yù)言機(jī)的私鑰sk對該數(shù)據(jù)進(jìn)行簽名,并上傳到區(qū)塊鏈系統(tǒng)進(jìn)行上鏈。

2.4 算法正確性驗證

2.4.1 零知識證明算法正確性驗證

由同態(tài)加密方案的性質(zhì),可以計算出:

式中:E(I1)是對I1的數(shù)據(jù)加密結(jié)果;E(n?J1)是對n?J1的數(shù)據(jù)加密結(jié)果;g為生成元;n為加密參數(shù)。

將上述結(jié)果進(jìn)行解密可以得到:

因為

上述結(jié)果對模n取余可得:

又因為

由于J1J2> 0,所以若m> 0,則c>C;若m< 0,則c

2.4.2 Schnorr簽名算法正確性驗證

簽名驗證者收到(m,h,s)后,可以計算:

式中:R′為驗證過程的中間值;a為系統(tǒng)參數(shù);r為隨機(jī)數(shù)。

所以

由此可驗證消息m沒有在傳輸過程中被篡改,且消息m的發(fā)送方一定為擁有對應(yīng)私鑰的用戶。

2.5 具體應(yīng)用方案

在碳排放應(yīng)用場景中,政府部門需要向碳排放企業(yè)獲取碳排放合規(guī)性報告,完成監(jiān)管和審查企業(yè)碳排放數(shù)據(jù)的工作。我國碳排放數(shù)據(jù)的報告對象是溫室氣體,主要分為二氧化碳、甲烷、一氧化二氮。碳排放企業(yè)需要通過傳感器收集核查所有溫室氣體排放數(shù)據(jù),并與國家規(guī)定企業(yè)碳排放限額作比較,生成對應(yīng)的碳排放量合規(guī)性證明并進(jìn)行數(shù)據(jù)上鏈,接受政府部門的監(jiān)管和審查。

針對碳排放應(yīng)用,本文詳細(xì)設(shè)計基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案。方案中涉及的相關(guān)參數(shù)由表1給出。具體應(yīng)用方案流程如圖3所示。

圖3 方案流程

表1 方案相關(guān)參數(shù)

首先,政府部門向碳排放企業(yè)請求碳排放合規(guī)性證明。碳排放企業(yè)向用戶智能合約發(fā)出碳排放量合規(guī)信息的數(shù)據(jù)請求,調(diào)用預(yù)言機(jī)系統(tǒng)收集企業(yè)碳排放量數(shù)據(jù);然后,預(yù)言機(jī)系統(tǒng)將積分值最高者選為門限預(yù)言機(jī),多個預(yù)言機(jī)向數(shù)據(jù)源處請求數(shù)據(jù)信息;數(shù)據(jù)源處的傳感器收集原始數(shù)據(jù)并生成零知識證明,上傳給對應(yīng)預(yù)言機(jī);預(yù)言機(jī)收到信息后驗證零知識證明的正確性,選擇正確的信息進(jìn)行簽名,發(fā)送正確的數(shù)據(jù)和簽名給簽名門限預(yù)言機(jī);門限預(yù)言機(jī)接收數(shù)據(jù)后先進(jìn)行簽名驗證,然后在收到門限值個相同數(shù)據(jù)時認(rèn)為該數(shù)據(jù)可以進(jìn)行上鏈,生成對應(yīng)的簽名,最后將收集的鏈下正確數(shù)據(jù)和簽名返回到鏈上智能合約,并傳遞給碳排放企業(yè)和政府部門。方案具體流程如下文所述。

(1)碳排放企業(yè)和政府部門請求鏈下碳排放數(shù)據(jù)。觸發(fā)用戶智能合約,請求獲取數(shù)據(jù)源處碳排放量的合規(guī)情況。

(2)向預(yù)言機(jī)系統(tǒng)請求鏈下數(shù)據(jù)。用戶智能合約向預(yù)言機(jī)群發(fā)起數(shù)據(jù)請求,收集企業(yè)碳排放量的合規(guī)信息。

(3)預(yù)言機(jī)獲取鏈下數(shù)據(jù)。預(yù)言機(jī)接收到用戶智能合約消息后,向多個外部數(shù)據(jù)源獲取碳排放量合規(guī)信息。

(4)上傳零知識證明。接受來自編號為i的預(yù)言機(jī)的請求,傳感器收集當(dāng)月碳排放量c,并根據(jù)碳排放量閾值C和預(yù)言機(jī)i的公鑰PKi生成對應(yīng)的零知識證明,向預(yù)言機(jī)i上傳碳排放量合規(guī)信息m和零知識證明E。

(5)預(yù)言機(jī)驗證零知識證明。預(yù)言機(jī)i根據(jù)私鑰SKi對零知識證明E進(jìn)行驗證,計算。如果e≤ 0,則證明該數(shù)據(jù)源處碳排放量合規(guī);如果e> 0,則證明該數(shù)據(jù)源處碳排放量不合規(guī)。當(dāng)零知識證明的結(jié)果與碳排放量合規(guī)信息m保持一致時,則認(rèn)為該信息m正確。

(6)預(yù)言機(jī)發(fā)送數(shù)據(jù)和簽名。用積分制度來規(guī)范預(yù)言機(jī)的行為(每個預(yù)言機(jī)的積分初始值為0,每發(fā)送一次正確數(shù)據(jù)積分值加1),選出積分值最高的節(jié)點,將其稱為門限預(yù)言機(jī)。預(yù)言機(jī)i對驗證通過的信息m生成簽名,根據(jù)私鑰ski和隨機(jī)整數(shù)ri,計算Ri=ari(modp),。將簽名(m,hi,si,i)發(fā)送給門限預(yù)言機(jī)。(7)門限預(yù)言機(jī)將正確的數(shù)據(jù)和簽名上鏈。門限預(yù)言機(jī)不斷地接收預(yù)言機(jī)傳送來的數(shù)據(jù)和簽名等信息。接收預(yù)言機(jī)i發(fā)送來的數(shù)據(jù)和簽名(m,hi,si,i),進(jìn)行驗證,獲取預(yù)言機(jī)i的公鑰pki,計算,驗證是否等于hi。若通過驗證的數(shù)據(jù)m數(shù)量達(dá)到t,則認(rèn)為該數(shù)據(jù)m是正確的,根據(jù)門限預(yù)言機(jī)的私鑰sk,生成簽名(m,h,s,ID,ID”)發(fā)送給預(yù)言機(jī)智能合約。

(8)預(yù)言機(jī)智能合約調(diào)用用戶智能合約。預(yù)言機(jī)智能合約獲取門限預(yù)言機(jī)的公鑰pk, 對發(fā)送來的簽名和數(shù)據(jù)(m,h,s,ID,ID”)進(jìn)行驗證。若驗證正確,則發(fā)送正確數(shù)據(jù)和簽名(,,)mhs給用戶智能合約。對發(fā)送正確數(shù)據(jù)的預(yù)言機(jī)積分值加1,對發(fā)送錯誤數(shù)據(jù)的預(yù)言機(jī)積分值減1。

(9)用戶智能合約將數(shù)據(jù)返回給碳排放企業(yè)和政府部門。預(yù)言機(jī)智能合約觸發(fā)用戶智能合約后,用戶智能合約接收到數(shù)據(jù)和簽名(,,)mhs, 隨后將數(shù)據(jù)返回給碳排放企業(yè)和政府部門,碳排放企業(yè)和政府部門收到所需的鏈下實時碳排放量合規(guī)數(shù)據(jù)。

3 安全性與可行性分析

通過方案設(shè)計部分提出的方案,傳感器收集的碳排放量具體值在上傳到預(yù)言機(jī)節(jié)點之前,會先生成針對碳排放合規(guī)性的零知識證明。通過僅上傳該零知識證明,可以在避免向預(yù)言機(jī)節(jié)點透露企業(yè)碳排放量具體值的前提下,證明該企業(yè)碳排放量符合規(guī)定,保護(hù)了企業(yè)碳排放數(shù)據(jù)的隱私性。在預(yù)言機(jī)系統(tǒng)中,通過門限簽名的方式,只有在門限預(yù)言機(jī)收到達(dá)到門限值數(shù)量的相同數(shù)據(jù)時,才認(rèn)定該數(shù)據(jù)是正確的。將該數(shù)據(jù)用門限預(yù)言機(jī)的私鑰進(jìn)行簽名,代表正確性經(jīng)過了預(yù)言機(jī)系統(tǒng)的認(rèn)證。門限預(yù)言機(jī)在上傳數(shù)據(jù)和簽名的同時還要分別上傳提供正確數(shù)據(jù)和錯誤數(shù)據(jù)的預(yù)言機(jī)編號,通過積分管理制度來激勵懲罰預(yù)言機(jī)節(jié)點,可以篩選出可信的預(yù)言機(jī)節(jié)點并且提高預(yù)言機(jī)節(jié)點的效率。零知識證明和相關(guān)簽名的密鑰采用隱蔽信道傳輸,可實現(xiàn)密鑰的不可篡改性、安全性和完整性。區(qū)塊鏈系統(tǒng)通過該數(shù)據(jù)上鏈方案,保障了數(shù)據(jù)的保密性、完整性、可用性、不可篡改性。

4 實驗分析

4.1 實驗環(huán)境

本方案的仿真實驗在虛擬機(jī)中進(jìn)行,采用的虛擬機(jī)是VMware Workstation Pro。在虛擬機(jī)中,采用Ubuntu20.04操作系統(tǒng),處理器內(nèi)核4個,內(nèi)存8 GB。智能合約在Remix上編譯,環(huán)境選擇Injected Web3鏈接MetaMask的賬戶,將智能合約在本地Ganache私有鏈上部署。仿真數(shù)據(jù)源為5臺搭載SQL Server的數(shù)據(jù)庫服務(wù)器。使用Java語言對零知識證明算法、Schnorr算法進(jìn)行模擬仿真。

4.2 加入零知識證明后的運行效率對比

為了測試本文方案中,加入零知識證明后的Schnorr簽名算法的運行效率,將加入零知識證明的Schnorr簽名算法與普通Schnorr簽名算法在相同硬件條件下,分別設(shè)置預(yù)言機(jī)節(jié)點為5、10、15、20,對兩種算法進(jìn)行多次模擬仿真實驗,對比結(jié)果如圖4所示。

圖4 兩種算法的運行時間

從圖4中可以看出,加入零知識證明后的Schnorr算法運行時間明顯變高,這是因為零知識證明生成需要一定的時間。但與此同時,零知識證明算法可以帶來對數(shù)據(jù)隱私安全的保護(hù),讓數(shù)據(jù)在可用不可見的情況下,保留數(shù)據(jù)的可用性。

4.3 與BLS簽名算法的簽名驗證效率對比

為了驗證Schnorr簽名算法的可行性,設(shè)計了Schnorr簽名算法與BLS簽名算法的對照實驗,在同等硬件條件下,分別測試兩種簽名算法的簽名驗證效率,對比結(jié)果如表2所示。

表2 兩種簽名算法效率對比

在預(yù)言機(jī)節(jié)點為15個,簽名數(shù)據(jù)大小為64 Byte的情況下,相比于BLS簽名算法,Schnorr簽名算法在相同硬件條件下的平均簽名時間和平均驗證時間都更少,所以Schnorr簽名算法的運行效率更高。

5 結(jié)語

本文在碳排放的應(yīng)用場景下,引入?yún)^(qū)塊鏈技術(shù)平臺,針對碳排放量合規(guī)性信息收集,提出了一種基于預(yù)言機(jī)和零知識證明的區(qū)塊鏈數(shù)據(jù)上鏈方案。引入零知識證明算法,生成碳排放量合規(guī)性證明,解決了區(qū)塊鏈信息明文存儲造成的隱私相關(guān)問題,讓企業(yè)在不透露具體碳排放量數(shù)據(jù)的前提下,證明企業(yè)碳排放量合規(guī)。通過預(yù)言機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)認(rèn)證和數(shù)據(jù)清洗,避免單一預(yù)言機(jī)可能存在惡意節(jié)點,上傳臟數(shù)據(jù)到區(qū)塊鏈系統(tǒng)。區(qū)塊鏈系統(tǒng)利用該方案進(jìn)行數(shù)據(jù)上鏈,保障了數(shù)據(jù)的保密性、完整性、可用性、不可篡改性。據(jù)實驗結(jié)果表明,相比于BLS簽名算法,本文選擇的Schnorr算法效率更高,簽名驗證消耗時間更少,加入零知識證明算法后,雖然運行效率降低,但極大地增強(qiáng)了數(shù)據(jù)的隱私安全性,在數(shù)據(jù)可用不可見的前提下,保證了數(shù)據(jù)的可用性。

猜你喜歡
數(shù)據(jù)源門限合約
基于規(guī)則的HEV邏輯門限控制策略
地方債對經(jīng)濟(jì)增長的門限效應(yīng)及地區(qū)差異研究
中國西部(2021年4期)2021-11-04 08:57:32
隨機(jī)失效門限下指數(shù)退化軌道模型的分析與應(yīng)用
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
生產(chǎn)性服務(wù)業(yè)集聚與工業(yè)集聚的非線性效應(yīng)——基于門限回歸模型的分析
湖湘論壇(2015年3期)2015-12-01 04:20:17
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢設(shè)計與實現(xiàn)
合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
霞浦县| 壤塘县| 积石山| 前郭尔| 兰考县| 内丘县| 云安县| 巴林右旗| 成安县| 夏津县| 万盛区| 永胜县| 扎鲁特旗| 瑞昌市| 丰城市| 汉源县| 永川市| 龙山县| 虎林市| 洪洞县| 花莲县| 洛浦县| 敦煌市| 凤翔县| 临沂市| 瓦房店市| 财经| 石阡县| 诸城市| 凤山市| 水城县| 杭锦旗| 衡南县| 乌鲁木齐县| 东兴市| 梁河县| 汪清县| 永清县| 图木舒克市| 墨江| 西宁市|