• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于安全多方計算的區(qū)塊鏈智能合約執(zhí)行系統(tǒng)*

      2019-06-10 06:43:58宋曉旭薛顯斌秦博涵劉國偉
      密碼學(xué)報 2019年2期
      關(guān)鍵詞:參與方合約計算結(jié)果

      朱 巖,宋曉旭,薛顯斌,秦博涵,劉國偉

      1.北京科技大學(xué) 計算機與通信工程學(xué)院,北京 100083

      2.北京市經(jīng)濟和信息化委員會,北京 100029

      1 引言

      區(qū)塊鏈技術(shù)作為一種不可更改、去中心、公開可訪問的交易系統(tǒng),已經(jīng)被認為是未來金融、醫(yī)療、保險、政府等領(lǐng)域的一種潛在革新性的技術(shù).越來越多的研究學(xué)者已認識到了區(qū)塊鏈技術(shù)的顛覆性,并對區(qū)塊鏈的安全性進行分析[1].而近年來一種被稱為智能合約(smart contract)的區(qū)塊鏈技術(shù)已被提出,它作為一種兩方或多方締結(jié)的、具有法律效力的可執(zhí)行計算機協(xié)議,正受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.1994年密碼學(xué)家Nick Szabo[2]首次提出“智能合約”這個術(shù)語,指出“智能合約就是執(zhí)行合約條款的可計算交易協(xié)議”,他指出計算機代碼可以代替手工操作,進行自動化的復(fù)雜數(shù)字財產(chǎn)交易,因此在債券、眾籌、物流、金融、計算法律學(xué)等領(lǐng)域具有廣泛的應(yīng)用前景.

      在概念上,智能合約是各方對數(shù)字資產(chǎn)轉(zhuǎn)移的一種約定.現(xiàn)有的區(qū)塊鏈技術(shù)僅支持特定指令集上簡單的腳本式語言,不足以支持復(fù)雜合約的執(zhí)行.為了最大限度的保證協(xié)議方的權(quán)益,避免數(shù)字資產(chǎn)由于合約執(zhí)行而受到非法侵害或包含其中的秘密被泄露,某些情況下要求智能合約的參與方輸入具有隱私性以及合約執(zhí)行過程中對敵手攻擊具有抵抗能力.然而,現(xiàn)有的交易指令集僅限制在對合約數(shù)據(jù)的完整性和所有權(quán)認證方面,對于參與方數(shù)據(jù)的隱私性尚不存在必要的安全措施,同時,腳本運行安全也存在安全風(fēng)險,例如,2014年3月發(fā)生的Mt.Gox 事件中,敵手針對Bitcoin 腳本程序進行攻擊,使得85 萬個Bitcoin 被盜取.因此,現(xiàn)有交易指令集很難達到上述目標.而針對這一問題已有學(xué)者展開研究,例如,文獻[3]中提出一種“沙箱” 式的智能合約系統(tǒng),通過在區(qū)塊鏈上存儲金融交易的特殊加密形式,從而保護交易隱私不被泄露,但必須保證“沙箱” 的安全,分布式沙箱的構(gòu)造仍是一個未解決的問題;文獻[4]中提出了一種被稱為Zerocoin 的比特幣加密擴展方案,它通過引入零知識證明來擴展交易協(xié)議,以允許完全匿名的貨幣交易,從而保證貨幣的隱私性,但此方法不能夠支持復(fù)雜的業(yè)務(wù);類似工作又如文獻[5],通過采用數(shù)據(jù)加密方式,構(gòu)建了一種擁有隱私保護的基于分類賬本的數(shù)字貨幣.文獻[6]提出將數(shù)字資產(chǎn)創(chuàng)建視為評估行為的過程,搭建基于信譽值的區(qū)塊鏈系統(tǒng),但評估不等于具體的安全措施.總之,上述工作對數(shù)字貨幣的隱私性進行了有益探索,但并沒有根本性地解決智能合約的執(zhí)行安全問題.

      安全多方計算(secure multi-party computation,SMPC)理論及實現(xiàn)技術(shù)是解決上述問題的一種較好的候選技術(shù).在密碼學(xué)上,SMPC 是指多方能以協(xié)同方式完成一項計算任務(wù),并保持計算過程中各方輸入的私密性,以及最終計算結(jié)果忠誠方的一致性.文獻[7]提出了基于同態(tài)加密方式設(shè)計求解分布式線性方程組的安全兩方計算協(xié)議和安全多方計算協(xié)議;文獻[8]中,作者使用SMPC 以及密鑰共享協(xié)議構(gòu)造多租賃用戶模型下的外包計算協(xié)議.薦于智能合約是對兩方或多方交易的程序?qū)崿F(xiàn),因此,本文將智能合約的執(zhí)行視為多租賃用戶模型下的外包計算.

      已有一些文獻提出采用安全多方計算實現(xiàn)智能合約,例如,文獻[9]針對Bitcoin 中的貨幣交易中的忠實性和隱私性問題,提出一種時間相關(guān)的承諾(timed commitments)擴展Bitcoin 中的指令集,進一步保證了貨幣交易的安全.文獻[10]擴展了前述工作,實現(xiàn)了一種更加一般化的安全兩方計算協(xié)議.文獻[11]采用Bitcoin 網(wǎng)絡(luò)設(shè)計了一種支持“索賠或退款”(claim-or-refund)的兩方公平協(xié)議,并將其擴展到帶有處罰(penalties)的安全多方計算協(xié)議設(shè)計中.然而,上述工作主要是針對Bitcoin 網(wǎng)絡(luò)及其指令集開展的研究,并沒有對常用的智能合約開發(fā)與安全執(zhí)行進行研究,因此需要進一步開展安全智能合約執(zhí)行系統(tǒng)領(lǐng)域的研究.

      本文針對區(qū)塊鏈中智能合約執(zhí)行安全問題開展了研究,通過提出基于SMPC 的智能合約框架、面向線性秘密共享的公平安全多方計算算法設(shè)計,以及非阻塞信息傳遞接口(non-blocking MPI),系統(tǒng)性地給出了基于SMPC 的智能合約執(zhí)行流程、語言結(jié)構(gòu)以及語法規(guī)范,實現(xiàn)了具有輸入隱私性和計算正確性的公平SMPC 方法,保障了計算節(jié)點錯誤下的安全群組通信,上述工作將為未來智能合約語言的設(shè)計開發(fā)和執(zhí)行安全提供理論基礎(chǔ).

      2 智能合約系統(tǒng)模型

      區(qū)塊鏈技術(shù)的核心是對交易的支持,通過區(qū)塊鏈交易可實現(xiàn)數(shù)字資產(chǎn)的創(chuàng)建、轉(zhuǎn)移、變更、終止等過程.文獻[12]中概述了現(xiàn)有加密貨幣中所使用的指令集.現(xiàn)有的交易指令集僅限制在對合約數(shù)據(jù)的完整性和所有權(quán)認證方面,對于參與方數(shù)據(jù)的隱私性尚不存在必要的安全措施,同時,腳本運行也存在安全風(fēng)險.交易指令集是為保證比特幣中交易安全而提出,它是一種基于棧的腳本式語言,具有以下特點:簡單、緊湊、容易理解;不帶有循環(huán)結(jié)構(gòu);支持各種密碼操作;有限的時間和存儲開銷;非Turing 完全的.

      智能合約是執(zhí)行合約條款的可計算交易協(xié)議,智能合約不是一段簡單的可執(zhí)行程序,在程序中包含財務(wù)和法律屬性.所以智能合約的制定,需要多個行業(yè)的參與,例如金融、法律以及計算機行業(yè)等.為了保證用戶的數(shù)據(jù)隱私和數(shù)據(jù)安全,用戶希望在自身信息不被他人獲取的情況下協(xié)作完成計算任務(wù).基于這些要求,本文提出了一種新的智能合約執(zhí)行架構(gòu),稱為基于SMPC 的智能合約執(zhí)行架構(gòu)(SMPC-SC).SMPC-SC 將單方執(zhí)行合約擴展到多方共同完成合約的執(zhí)行.

      圖1 基于安全多方計算的智能合約執(zhí)行系統(tǒng)Figure 1 Execution system of smart contract based on SMPC

      當合約運行時,根據(jù)合約參與方的要求,智能合約的多方執(zhí)行環(huán)境被建立,SMPC 被用來完成智能合約的安全執(zhí)行.本文搭建的智能合約執(zhí)行腳本將智能合約的運行環(huán)境配置為SMPC 的執(zhí)行環(huán)境.SMPCSC 的基礎(chǔ)架構(gòu)如圖1 所示.系統(tǒng)由合約層、計算層和群組通信層組成,分別對應(yīng)了區(qū)塊鏈結(jié)構(gòu)中的交易層、數(shù)據(jù)層[13]和共識層.

      (1)合約層:合約層封裝了合約的調(diào)度算法、編輯器以及智能合約.它是實現(xiàn)區(qū)塊鏈系統(tǒng)的靈活編程和運行數(shù)據(jù)的基礎(chǔ).

      (2)安全計算層:安全計算層封裝了SMPC 的算法以及密鑰共享算法,在執(zhí)行智能合約的計算任務(wù)時調(diào)用SMPC 算法.

      (3)群組通信層:群組通信層封裝了P2P 協(xié)議、MPI 以及拜占庭協(xié)議.P2P 協(xié)議強調(diào)每個節(jié)點地位對等,不存在任何中心化特殊節(jié)點.系統(tǒng)的數(shù)據(jù)傳播協(xié)議使用的是MPI 協(xié)議.共識算法采用的是拜占庭協(xié)議.

      智能合約的整個執(zhí)行過程是建立在區(qū)塊鏈網(wǎng)絡(luò)之上的,當智能合約進行計算時,調(diào)用計算層的SMPC計算協(xié)議,在SMPC 計算協(xié)議執(zhí)行過程中,多方之間使用非阻塞MPI 群組通信協(xié)議進行通信.

      3 合約層

      執(zhí)行系統(tǒng)中的合約層封裝了執(zhí)行合約的調(diào)度算法,解釋器以及智能合約的相關(guān)算法.在合約層中我們給出了基于SMPC 的智能合約模型,在合約執(zhí)行過程中將調(diào)用安全計算層的SMPC 算法.

      3.1 智能合約

      區(qū)塊鏈是維護數(shù)字貨幣交易的基礎(chǔ)技術(shù)[14],區(qū)塊鏈的核心技術(shù)是對交易的支持,通過使用區(qū)塊鏈技術(shù),數(shù)字資產(chǎn)能夠進行創(chuàng)建、交易、更改等操作.區(qū)塊鏈對數(shù)字資產(chǎn)交易的支持經(jīng)歷了從交易到合約、再到智能合約的過程,三者之間既存在聯(lián)系也存在差異:

      (1)交易:是數(shù)字資產(chǎn)轉(zhuǎn)移的記錄,以腳本代碼的方式在區(qū)塊鏈上被體現(xiàn).區(qū)塊鏈依據(jù)時間排序記錄了系統(tǒng)中所有的交易信息,因此每個有效的交易都能夠追溯到上一個交易.

      (2)合約:涉及到兩方或者多方之間自愿的具有法律效益的協(xié)議,合約通常是記錄未來數(shù)字資產(chǎn)交易的協(xié)議.包括具體交易時間、交易流程等.

      (3)智能合約:是一種數(shù)字形式的承諾,包括合約參與方執(zhí)行這些承諾的協(xié)議,或者說它是能夠自動執(zhí)行合約條款的計算程序.

      智能合約不是傳統(tǒng)的計算機程序,它的本質(zhì)是合約.傳統(tǒng)的計算機程序是單方執(zhí)行的,合約是多方達成的協(xié)議.智能合約是多方共同完成一個具有法律效益的計算任務(wù),需要中立的公正機構(gòu)或仲裁機構(gòu)參與監(jiān)督合約的運行,確立其合法性.智能合約需要一種安全運行機制保證合約的運行安全,智能合約應(yīng)該具有以下特性:

      (1)公平性:其他參與方不能比忠誠方獲取任何優(yōu)勢(忠誠方是指執(zhí)行過程完全按照指定過程執(zhí)行的參與方).

      (2)正確性:在合約執(zhí)行結(jié)束后,忠誠方的結(jié)果是一致的,并且與預(yù)期結(jié)果相同(預(yù)期結(jié)果是指單個誠實節(jié)點在沒有任何攻擊的情況下執(zhí)行整個智能合約所得到的執(zhí)行結(jié)果).

      (3)隱私性:對于每個參與方的輸入,在合約執(zhí)行期間,任何參與方不能夠獲得他人的敏感信息,并且每個參與方獲得的輸出只包含計算后應(yīng)該獲得的信息.

      滿足上述特性的智能合約對于區(qū)塊鏈來說是很重要的.原因在于數(shù)字資產(chǎn)被記錄在區(qū)塊鏈中,只有這樣一種足夠安全可靠的合約才能被信任去操作區(qū)塊鏈.為此,我們引入了一種密碼技術(shù)安全多方計算(SMPC),以保證智能合約執(zhí)行的安全性.SMPC 的引入能夠使智能合約滿足上述三種特性:

      (1)SMPC 強調(diào)多方共同參與完成一項計算任務(wù),以及每一方的計算任務(wù)相同,這滿足了公平性.

      (2)正確性體現(xiàn)在SMPC 中所有忠誠方得到的最終結(jié)果是一致的.

      (3)每一個SMPC 的參與方都不能獲得其他參與方的輸入,這滿足了隱私性.

      3.2 智能合約模型

      本文通過一個簡單的Alice 給Bob 轉(zhuǎn)賬的實例來介紹基于SMPC 的智能合約模型.假設(shè)Alice 的賬戶余額為AliceVal;Bob 的賬戶余額是BobVal;Alice 給Bob 的轉(zhuǎn)賬金額是X.整個交易過程是多方參與計算,Bob 將自己的賬戶余額進行秘密共享給參與方,Alice 將自己的賬戶余額以及轉(zhuǎn)賬金額進行秘密共享給參與方,參與方拿到密文后,直接對密文進行運算,然后將計算結(jié)果發(fā)送給重構(gòu)方,重構(gòu)方進行重構(gòu)得到最終的計算結(jié)果.圖2 是以轉(zhuǎn)賬智能合約實例展示了基于SMPC 的智能合約的整體框架.

      本文在智能合約模型中引入了一個可信方Dealer,它是來管理和監(jiān)督智能合約的執(zhí)行過程.事實上,Dealer 不會參與智能合約的計算,Dealer 在執(zhí)行過程中只是起到了驗證和通知的作用,因此Dealer 的存在并不影響智能合約的公平性.為了完成智能合約的執(zhí)行,本文在智能合約語言中引入了幾個控制字符,在轉(zhuǎn)賬智能模型中有以下四種控制字符:

      (1)@SMPCConfig 定義了基礎(chǔ)的操作環(huán)境,并建立了操作參數(shù),例如,變量ParmSMPC 定義了SMPC 的參數(shù).

      (2)@execute··· 用來規(guī)定下面的函數(shù)執(zhí)行者,其他的參與方來驗證執(zhí)行者的身份(例如@execte Dealer 表示,下面的函數(shù)由Dealer 完成執(zhí)行,其他的參與方在函數(shù)執(zhí)行之前,負責(zé)驗證Dealer的身份).

      (3)@before 和@after 表示下面的函數(shù)在特定函數(shù)之前或者之后執(zhí)行.

      圖2 轉(zhuǎn)賬智能合約模型Figure 2 Model of transfer smart contract

      圖3 展示了整個智能合約在運行時的時序和狀態(tài)轉(zhuǎn)換.智能合約的執(zhí)行過程要經(jīng)歷四個階段:初始化階段,對合約的調(diào)用方進行身份驗證,初始化合約的執(zhí)行環(huán)境并對合約的數(shù)據(jù)進行初始化;秘密分享階段,調(diào)用方將計算值進行秘密分發(fā)給計算節(jié)點;SMPC 階段,計算節(jié)點執(zhí)行自己的計算任務(wù),最后將計算結(jié)果發(fā)給Dealer;秘密重構(gòu)階段,Dealer 收集計算結(jié)果并對其進行重構(gòu)得出最終結(jié)果并將結(jié)果傳到賬本中.

      圖3 合約的狀態(tài)轉(zhuǎn)換圖Figure 3 Transfer graph of contract state

      初始化:驗證付款方以及收款方的身份,征集參與計算的節(jié)點并對執(zhí)行環(huán)境和數(shù)據(jù)進行初始化.

      (1)身份認證.智能合約使用secp256kl 橢圓曲線[15]派生的公鑰導(dǎo)出地址,通過使用相應(yīng)的私鑰和橢圓曲線數(shù)字簽名算法生成簽名,證明地址所有權(quán),從而來驗證Alice 和Bob 的身份.認證Alice的身份,驗證者Dealer 向Alice 發(fā)送一個挑戰(zhàn)(challenge),Alice 對挑戰(zhàn)進行簽名,給Dealer 發(fā)送響應(yīng)(response),Dealer 對Alice 發(fā)送的response 用公鑰進行認證,從而認證Alice 身份;同樣的,認證Bob 的身份.

      (2)征集計算節(jié)點.這里需要至少征集100 個節(jié)點,從100 個節(jié)點中隨機選取10 個節(jié)點作為參與者參與計算(此處征集結(jié)點數(shù)以及隨機選取節(jié)點數(shù)并非定值,本文為方便描述將其賦值為100 和10);將參與者ip 存入公共存儲區(qū)的“machines” 文件中.

      (3)環(huán)境和數(shù)據(jù)的初始化.連接machines 文件中列出的機器并啟動每臺機器的守護進程,以及獲取參與運算機器的數(shù)量,并計算門限t=2 num/3.

      當上面三個動作全部完成后,Dealer 通知調(diào)用者Alice 和Bob 進入秘密分享階段.

      秘密分享:對于Alice 來說,轉(zhuǎn)賬動作是付款,是用Alice 賬戶余額減去轉(zhuǎn)賬金額X;對于Bob 來說,轉(zhuǎn)賬動作是收款,是將X加到Bob 賬戶余額中.Alice 和Bob 將參與計算的值進行秘密分享.

      (1)Alice 將自己的賬戶余額AliceVal 以及轉(zhuǎn)賬金額X 進行秘密分享,這里需要保證至少t個節(jié)點成功接收秘密分享片段(這里調(diào)用第4 節(jié)安全多方計算模型中的SPSharingProtocol( )函數(shù)來進行秘密共享).

      (2)Bob 將自己的賬戶余額BobVal 進行秘密分享,和Alice 密鑰分享過程相同,這里需要保證至少t個節(jié)點成功接收秘密分享片段.當Alice 和Bob 秘密分享結(jié)束,Dealer 通知所有參與節(jié)點進行SMPC.如果少于t個節(jié)點成功接收了秘密片段,Dealer 通知Alice 和Bob 重新進行秘密共享.

      SMPC:計算節(jié)點調(diào)用安全計算層的SMPC 算法去完成合約的計算過程,當自己的計算任務(wù)完成之后,將結(jié)算結(jié)果發(fā)送給重構(gòu)方,如果重構(gòu)方收到的正確的計算結(jié)果少于t個,那么計算節(jié)點重新進行計算階段.

      秘密重構(gòu):重構(gòu)方收到計算節(jié)點發(fā)送的計算結(jié)果,進行秘密重構(gòu)得到最終的結(jié)果.秘密重構(gòu)要求至少有門限值t個正確的結(jié)果,才能重構(gòu)出正確的最終結(jié)果.在重構(gòu)階段,調(diào)用安全計算層中的秘密重構(gòu)算法.除此之外,智能合約的計算結(jié)果上傳到區(qū)塊鏈上,這里涉及到簽名和認證過程.

      智能合約是存儲在區(qū)塊鏈中,一旦有人調(diào)用智能合約,區(qū)塊鏈節(jié)點開始執(zhí)行上述操作,完成智能合約的調(diào)用.

      4 安全多方計算

      安全多方計算(SMPC)是n個參與者P1,P2,···,Pn,需要共同執(zhí)行某一個計算任務(wù)

      每一方Pi只能得到自己的輸入xi,并且只能獲得自己的輸出yi,SMPC 有以下安全要求:

      (1)忠誠性,大部分的參與方是忠誠的,忠誠是指參與方完全按照規(guī)定執(zhí)行任務(wù).

      (2)終止性,在有限的時間中,忠誠方能夠終止執(zhí)行計算任務(wù).

      (3)隱私性,任何參與方Pi不能夠得到其他參與方的輸入xj(ij).

      (4)一致性,所有忠誠方最終得到相同的輸出y1=y2=···=yn.

      如果對于大小為n的域中,少于t個參與方是不誠實的(多數(shù)參與方式忠誠的,例如t

      由于智能合約需要中立的公正機構(gòu)或仲裁機構(gòu)參與監(jiān)督合約的運行,在這里引入SMPC,使公正機構(gòu)或仲裁機構(gòu)不僅僅起到一個監(jiān)督作用,而且還讓它們參與智能合約的執(zhí)行.SMPC 的執(zhí)行過程中,每一方的計算任務(wù)是一致的,不存在任何中心化特殊節(jié)點,由此特性可以保證引入SMPC 的智能合約的公平性.SMPC 隱私性的特性體現(xiàn)到智能合約中,保護合約各方的輸入信息的私密性,保證了智能合約的隱私性.

      由于MPI 支持非阻塞通信,可以滿足SMPC 中門限是t的要求.如圖4 所示是SMPC 加減法的流程圖.根據(jù)SMPC 的加減法流程圖給出的數(shù)據(jù)流圖,假設(shè)參與方為n個,以計算a與b的和為例,整體數(shù)據(jù)的流向圖如圖5 所示.

      SMPC 算法的執(zhí)行過程是建立在MPI 多方通信機制上,但進行秘密分享時,由于需要發(fā)送給每方的密鑰片段是不同的,所以調(diào)用MPI 中的散發(fā)函數(shù),將密鑰片段發(fā)送給參與計算的參與方.當各方通過MPI非阻塞通信收到密鑰片段后,對其進行計算,然后通過MPI 非阻塞通信將計算結(jié)果發(fā)送給重構(gòu)方.重構(gòu)方通過MPI 中的收集函數(shù)收集其它方的計算結(jié)果,將收到的結(jié)果進行秘密重構(gòu)得出最終結(jié)果.

      SMPC 的加減法運算主要分為以下三個階段:

      (1)秘密分享:利用Shamir 的秘密共享方案[16]使用拉格朗日插值公式完成了基本的(t,n)門限秘密共享,其過程如下:在Fp中,對于給定的秘密a,隨機選取t?1 個隨機數(shù)(r1,r2,···,rt?1),令r0=a構(gòu)成多項式方程.對于分布式計算中的任意具有標識的成員Pi(其中,i∈[1,n])所獲得秘密a的共享值為ai=fa(xi);同樣地,對于給定的秘密b,隨機選取t?1個隨機數(shù)(l1,l2,···,lt?1),令l0=b構(gòu)成多項式方程對于分布式計算中的任意具有標識xi的成員Pi所獲得秘密b的共享值為bi=fb(xi);

      (2)計算階段:每個成員Pi通過MPI 非阻塞通信中的接收函數(shù)接收需要計算的數(shù)值,分別進行各自的計算,得出計算結(jié)果ci,將計算結(jié)果通過MPI 非阻塞通信中的發(fā)送函數(shù)發(fā)送;

      (3)秘密重構(gòu):成員使用MPI 通信中的收集函數(shù),收集其他節(jié)點發(fā)送來的結(jié)果,然后進行秘密重構(gòu).如果由m(mt)名成員所計算的結(jié)果{c1,c2,···,cm} 恢復(fù)出原始秘密值c,那么可求解出其中稱(α1,α2,···,αn)為一個重組向量.偽代碼中使用MPI 通信函數(shù)中的收集函數(shù),收集成員Pi的發(fā)來的ci,然后進行秘密重構(gòu),得出最終的結(jié)果.

      圖4 安全多方計算加減法流程圖Figure 4 Flow chart of SMPC addition and subtraction

      圖5 安全多方計算加法數(shù)據(jù)流圖Figure 5 Data flow chart of SMPC addition and subtraction

      為了保證上述安全多方計算過程的抗攻擊性,進一步引入可驗證秘密共享機制如下:取乘法群的一個p階生成元為g獲得循環(huán)子群,采用可驗證秘密分享對a進行分享,將(其中p|(q?1))進行廣播,那么通過驗證等式是否成立即可驗證分享fa(x)是否正確.同樣的采用可驗證密鑰分享對b進行分享,將進行廣播,那么通過驗證等式是否成立,即可驗證分享fb(x)是否正確.通過驗證是否成立即可驗證fa(x)+fb(x)的計算結(jié)果是否正確.這至少有t方計算結(jié)果正確才能重構(gòu)出最終正確的計算結(jié)果,即門限值為t.

      5 基于MPI的多方通信機制

      安全多方計算中實現(xiàn)多名參與者之間的高效通信問題是極其重要的,本文采用MPI[17,18]通信機制,滿足在安全多方計算過程中的通信要求.

      表1 中的函數(shù)屬于MPI 系統(tǒng)函數(shù),其中Init()初始化MPI 執(zhí)行環(huán)境,建立多個MPI 進程之間的聯(lián)系,為后續(xù)通信做準備;Finalize()函數(shù)來終止MPI 的執(zhí)行環(huán)境.Size()函數(shù)返回在給定通信域中所包含的進程個數(shù),即參與方個數(shù);Rank()函數(shù)返回給定通信域中的進程號,即給定參與方id.

      表1 MPI 中的系統(tǒng)函數(shù)Table 1 System functions in MPI

      表2 中描述的是調(diào)用的MPI 中的通信函數(shù),MPI 應(yīng)用于多方安全計算通信時,主要應(yīng)用的函數(shù)是廣播,收集,散發(fā)以及全交換函數(shù).將任務(wù)進行秘密的分發(fā)調(diào)用Scatter()函數(shù),將生成的分享片段分發(fā)給參與方;各方調(diào)用Gather()函數(shù)收集密鑰片段;調(diào)用Alltoall()函數(shù)來完成各方之間的完全消息交換.

      表2 MPI 中的通信函數(shù)Table 2 Communication functions in MPI

      在本文的SMPC-SC 執(zhí)行系統(tǒng)中,主要使用上述功能來實現(xiàn)底層通信.在系統(tǒng)中可能存在兩種攻擊:截斷攻擊以及通信私密性攻擊.在MPI 中為防止截斷攻擊,這里采用非阻塞范式來解決,而通信私密性問題主要是通過計算層中的安全多方計算解決.

      本文通過時間約束以及門限限制來防止截斷攻擊:

      (1)時間約束:在一定的時間內(nèi),完成通信或者結(jié)束通信.

      (2)門限限制:在時間約束的前提下,增加門限限制.在通信被關(guān)閉之前消息正確傳輸?shù)臄?shù)量必須不少于門限值.

      在MPI-2.2 版本中點對點通信已經(jīng)滿足了阻塞和非阻塞通信的功能.阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當前線程被掛起,直到得到結(jié)果之后才會返回;非阻塞指在不能得到返回結(jié)果之前,該調(diào)用不會阻塞當前進程.對于一個有效的非阻塞通信,要求在有限的時間內(nèi)通信必須被關(guān)閉,同時要保證忠誠方的數(shù)量超過了門限值.安全多方計算的底層異步通信過于復(fù)雜,不便于描述,下面僅僅對簡單的發(fā)送和接收函數(shù)進行描述.

      圖6 展示了非阻塞通信的發(fā)送函數(shù)加上時間約束和門限限制之后的流程圖.首先建立一個時間約束,這里假設(shè)在時間tc內(nèi),使用Isend 函數(shù)向n個進程發(fā)送n條消息.最終所使用的時間記為tc′,所成功發(fā)送的消息數(shù)量記為n′.在時間tc內(nèi),n條消息全部發(fā)送,通信被關(guān)閉;當tc′tc時,如果超過了n條消息被成功發(fā)送,那么關(guān)閉通信成功,通信被關(guān)閉;其他情況,通信是失敗的.

      實現(xiàn)的偽代碼如圖7 所示,在偽代碼中,接收函數(shù)和發(fā)送函數(shù)類似,使用進程號去控制0 號進程發(fā)送消息,其他進程接收消息.調(diào)用System.currentTimeMillis( )函數(shù)獲取當前的時間time.0 號進程通過for 循環(huán)給其他進程發(fā)送100 條消息,然后使用MPI.REQUEST NULL.Test 函數(shù)監(jiān)視發(fā)送狀態(tài).當成功發(fā)送的消息數(shù)量超過67=×100并且當前時間小于等于time+10 ms 時,說明成功完成了通信.

      圖6 非阻塞send 函數(shù)流程圖Figure 6 Flowchart of non-blocking send function flowchart

      圖7 MPI 非阻塞發(fā)送和接收函數(shù)偽代碼Figure 7 Pseudo code of MPI non-blocking sending and receiving function

      6 總結(jié)

      智能合約日益成為區(qū)塊鏈技術(shù)研究的熱點,然而如何保證智能合約在兩方或多方協(xié)同計算下的執(zhí)行安全仍然是目前沒有解決的問題,而采用密碼學(xué)中的安全多方計算技術(shù)來設(shè)計和實現(xiàn)智能合約被認為是最具潛力的解決方案之一.據(jù)此,本文研究基于安全多方計算的智能合約,采用MPI 通信機制中的非阻塞通行方式,支持SMPC 每方計算過程中的相互通信,滿足至少門限值t個參與方能夠正確通信.SMPC 引入到智能合約,將SMPC 的特性體現(xiàn)到智能合約的公平性、隱私性以及正確性,從而通過安全多方計算技術(shù)保證智能合約執(zhí)行系統(tǒng)的安全,本文研究對未來智能合約設(shè)計具有一定的理論指導(dǎo)意義.

      猜你喜歡
      參與方合約計算結(jié)果
      基于秘密分享的高效隱私保護四方機器學(xué)習(xí)方案
      不等高軟橫跨橫向承力索計算及計算結(jié)果判斷研究
      甘肅科技(2020年20期)2020-04-13 00:30:40
      綠色農(nóng)房建設(shè)伙伴關(guān)系模式初探
      涉及多參與方的系統(tǒng)及方法權(quán)利要求的撰寫
      專利代理(2016年1期)2016-05-17 06:14:03
      基于IPD模式的項目參與方利益分配研究
      超壓測試方法對炸藥TNT當量計算結(jié)果的影響
      噪聲對介質(zhì)損耗角正切計算結(jié)果的影響
      合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
      ABSTRACT
      墨玉县| 同江市| 富川| 永嘉县| 长春市| 泽库县| 调兵山市| 平武县| 萝北县| 纳雍县| 鸡东县| 昭苏县| 招远市| 大荔县| 泰和县| 任丘市| 北海市| 义乌市| 仙桃市| 楚雄市| 两当县| 天祝| 灵武市| 福海县| 永济市| 绥棱县| 宣城市| 福清市| 湘潭市| 永登县| 乌拉特前旗| 昌江| 大英县| 万州区| 南丰县| 莱芜市| 武陟县| 达孜县| 金沙县| 社旗县| 临湘市|