• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于以太坊區(qū)塊鏈的公平可搜索加密方案

    2020-02-18 15:17:30聶夢(mèng)飛龐曉瓊陳文俊弓世明
    關(guān)鍵詞:合約密鑰加密

    聶夢(mèng)飛,龐曉瓊,陳文俊,2,弓世明,楊 婷

    1.中北大學(xué) 大數(shù)據(jù)學(xué)院,太原030051

    2.中國人民銀行 太原中心支行,太原030001

    3.中北大學(xué) 軟件學(xué)院,太原030051

    1 引言

    隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)呈現(xiàn)出爆發(fā)式增長的趨勢(shì),云計(jì)算的出現(xiàn)提供了數(shù)據(jù)存儲(chǔ)、處理和共享服務(wù)。越來越多的用戶選擇把自己的數(shù)據(jù)從本地上傳到云服務(wù)器,以便隨時(shí)隨地查詢自己的數(shù)據(jù)信息。然而,云計(jì)算在提供給用戶便捷性的同時(shí),也給用戶帶來了數(shù)據(jù)隱私泄露的問題。為了保護(hù)用戶的數(shù)據(jù)隱私,一個(gè)有效的解決方法是用戶對(duì)上傳的文件進(jìn)行加密后再上傳到云服務(wù)器,這種方式雖然能夠解決用戶數(shù)據(jù)隱私泄露的問題,保護(hù)敏感數(shù)據(jù)的隱私性,但是同時(shí)帶來了服務(wù)器如何高效地對(duì)密文文件進(jìn)行檢索的問題,為解決這種問題,可搜索加密方案應(yīng)運(yùn)而生。傳統(tǒng)的對(duì)稱可搜索加密方案只考慮到服務(wù)器是誠實(shí)且好奇的情況,即用戶在請(qǐng)求檢索任務(wù)前,先向服務(wù)器支付服務(wù)費(fèi),服務(wù)器誠實(shí)地執(zhí)行搜索任務(wù)并返回給用戶檢索結(jié)果。實(shí)際上還存在另一種情況,即服務(wù)器是惡意的,用戶在支付服務(wù)費(fèi)后,服務(wù)器給用戶返回錯(cuò)誤的檢索結(jié)果或者沒有返回檢索結(jié)果,此時(shí)用戶需要通過第三方權(quán)威機(jī)構(gòu)贖回已支付的服務(wù)費(fèi),這種方法耗時(shí)多且效率低。因此,這種情況對(duì)用戶來說是不公平的。

    從以上的分析可知,需要一種有效的方法來解決傳統(tǒng)的對(duì)稱可搜索加密方案中的公平性問題。隨著比特幣[1]的出現(xiàn),區(qū)塊鏈作為它的底層技術(shù)可以很好地解決這一問題。區(qū)塊鏈?zhǔn)且环N具有不可逆性和可追溯性的分布式超級(jí)賬本,提供分散和透明的數(shù)據(jù)共享,并按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以鏈條的方式組裝成特定的數(shù)據(jù)結(jié)構(gòu)[2-4]。Buterin[5]提出的以太坊是一個(gè)具備圖靈完備性的開源的區(qū)塊鏈平臺(tái),解決了比特幣擴(kuò)展性不足的問題。以太坊的主要特點(diǎn)是為實(shí)現(xiàn)智能合約提供支持,智能合約支持在沒有第三方的情況下進(jìn)行可信的交易[6],并按所觸發(fā)交易中的數(shù)據(jù)以規(guī)定的方式在網(wǎng)絡(luò)每個(gè)節(jié)點(diǎn)上自動(dòng)執(zhí)行。

    本文主要利用以太坊的去中心化、安全可靠和支持智能合約的特點(diǎn),保證用戶和服務(wù)器之間交易的公平性:第一,云服務(wù)器通過以太坊區(qū)塊鏈發(fā)布一筆交易來創(chuàng)建智能合約,利用智能合約暫存價(jià)值,完成云服務(wù)器和用戶之間的檢索交易;第二,通過智能合約自動(dòng)驗(yàn)證服務(wù)器返回的結(jié)果是否正確;第三,若服務(wù)器是惡意的,用戶可以撤回已支付的服務(wù)費(fèi),維護(hù)自己的權(quán)益,從而保證檢索的公平性。

    2 相關(guān)工作

    2000年,Song等人[7]首次提出了可搜索加密的思想,并實(shí)現(xiàn)了第一個(gè)對(duì)稱可搜索加密方案。云存儲(chǔ)環(huán)境下的對(duì)稱可搜索加密成為研究熱點(diǎn),文獻(xiàn)[8-9]實(shí)現(xiàn)了單關(guān)鍵詞檢索的對(duì)稱可搜索加密方案;考慮到用戶往往輸入多個(gè)關(guān)鍵詞來更準(zhǔn)確地獲取自己感興趣的內(nèi)容,文獻(xiàn)[10-11]提出了支持多關(guān)鍵詞檢索的可搜索加密方案;考慮到現(xiàn)實(shí)場(chǎng)景中詞語間的語義關(guān)系,文獻(xiàn)[12-13]提出了支持語義擴(kuò)展的多關(guān)鍵詞排序檢索方案。

    以上方案的前提是假設(shè)服務(wù)器會(huì)誠實(shí)地執(zhí)行檢索任務(wù),不適用于惡意的服務(wù)器返回錯(cuò)誤的檢索結(jié)果或沒有返回任何結(jié)果的應(yīng)用場(chǎng)景。為解決此問題,Zhang等人[14]提出在云計(jì)算環(huán)境下基于區(qū)塊鏈的外包服務(wù)公平支付框架BCPay,在BCPay中,他們采用比特幣定時(shí)承諾方案保證外包服務(wù)的公平性。Wang等人[15]提出基于區(qū)塊鏈的具有細(xì)粒度訪問控制的分布式存儲(chǔ)系統(tǒng),通過去除云服務(wù)器,并利用智能合約實(shí)現(xiàn)密文環(huán)境下公平的關(guān)鍵詞檢索功能。Li等人[16]提出基于比特幣系統(tǒng)的對(duì)稱可搜索加密方案,在沒有去除云服務(wù)器的情況下解決了對(duì)稱可搜索加密方案的公平性問題,但是方案需要6筆交易獲取檢索結(jié)果,并通過比特幣的腳本驗(yàn)證檢索結(jié)果的正確性,交易周期長且效率低。為了簡化交易過程,提高交易效率,提出以太坊區(qū)塊鏈下保證公平的對(duì)稱可搜索加密方案,用戶和云服務(wù)器通過與智能合約交互完成交易,智能合約作為可信第三方進(jìn)行資金的轉(zhuǎn)移。同時(shí),智能合約驗(yàn)證云服務(wù)器返回的檢索結(jié)果是否正確,保證檢索的公平性。

    通過以上分析,方案想要實(shí)現(xiàn)以下三個(gè)目標(biāo):

    (1)用戶向智能合約支付押金,用于防止用戶中途終止檢索協(xié)議。

    (2)服務(wù)器向智能合約支付費(fèi)用,用于請(qǐng)求陷門信息,并返回檢索結(jié)果。同時(shí),智能合約可以驗(yàn)證結(jié)果的正確性。

    (3)用戶向智能合約支付服務(wù)費(fèi),用于請(qǐng)求檢索結(jié)果。

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

    3.1 對(duì)稱可搜索加密

    傳統(tǒng)的對(duì)稱可搜索加密方案的系統(tǒng)模型由三類角色組成:數(shù)據(jù)擁有者、云服務(wù)器和用戶。系統(tǒng)模型圖如圖1所示。

    圖1 系統(tǒng)模型圖

    數(shù)據(jù)擁有者:作為擁有明文文檔集合的一方,根據(jù)提取的明文關(guān)鍵詞集合建立索引,把加密后的密文文檔和密文索引存儲(chǔ)在云服務(wù)器上。

    用戶:數(shù)據(jù)擁有者和用戶共享文檔解密密鑰和生成陷門信息的密鑰。用戶生成陷門信息后將其發(fā)送給云服務(wù)器。

    云服務(wù)器:根據(jù)用戶發(fā)送的陷門信息和數(shù)據(jù)擁有者上傳的索引,檢索對(duì)應(yīng)的密文文檔,并返回給用戶。

    3.2 以太坊區(qū)塊鏈

    以太坊是一個(gè)開源的有智能合約功能的公共區(qū)塊鏈平臺(tái),支持圖靈完備的編程語言,任何人都可以基于以太坊平臺(tái)建立通過區(qū)塊鏈技術(shù)運(yùn)行的去中心化應(yīng)用,并通過智能合約設(shè)置自己的所有權(quán)轉(zhuǎn)移規(guī)則、交易方式和狀態(tài)轉(zhuǎn)換函數(shù)。智能合約是1997年由密碼學(xué)家尼克薩博[17]首次提出來的,將其定義為:“一個(gè)智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”。區(qū)塊鏈系統(tǒng)中的每個(gè)用戶可以通過發(fā)布一筆交易創(chuàng)建智能合約,智能合約可以存儲(chǔ)、轉(zhuǎn)發(fā)價(jià)值給其他的賬戶或合約,自動(dòng)化運(yùn)作不被干擾。以太坊系統(tǒng)有兩種類型的賬戶:外部賬戶和合約賬戶。外部賬戶就是普通賬戶,即存放以太幣的賬戶,由私人密鑰控制,沒有與之相關(guān)的代碼。合約賬戶由合約代碼控制,具有與其相關(guān)的代碼。外部賬戶通過創(chuàng)建和簽名一筆交易,向其他外部賬戶或合約賬戶發(fā)送消息,兩個(gè)外部賬戶之間的消息只是一種價(jià)值轉(zhuǎn)移,但外部賬戶向合約賬戶發(fā)送消息會(huì)激活合約內(nèi)部的代碼,從而執(zhí)行各種操作。合約賬戶只能接收外部賬戶發(fā)來的交易,不能啟動(dòng)新的交易。

    3.3 IPFS

    星際文件系統(tǒng)(InterPlanetary File System,IPFS)[18]是一種點(diǎn)對(duì)點(diǎn)的分布式文件系統(tǒng),旨在連接所有的有相同文件系統(tǒng)的計(jì)算機(jī)設(shè)備。IPFS提供了高吞吐量的內(nèi)容尋址塊存儲(chǔ)模型,具有內(nèi)容尋址的超鏈接。它結(jié)合了分布式哈希表、帶有激勵(lì)機(jī)制的塊交換和自我認(rèn)證命名空間,不存在單點(diǎn)故障,節(jié)點(diǎn)間無需信任。IPFS類似于Web,但Web是中心化的,而IPFS是分布式的。將一個(gè)文件上傳至IPFS,會(huì)獲得一個(gè)唯一的字符串。通過這個(gè)字符串,同樣可以檢索到對(duì)應(yīng)的文件。方案在智能合約的設(shè)計(jì)中引用IPFS獲取文件的哈希值,從而對(duì)文件進(jìn)行操作。

    4 定義與模型

    4.1 系統(tǒng)模型與設(shè)計(jì)目標(biāo)

    如圖2所示,基于以太坊區(qū)塊鏈的公平對(duì)稱可搜索加密(Searchable Symmetric Encryption,SSE)方案包含4個(gè)角色:數(shù)據(jù)擁有者、服務(wù)器、用戶和智能合約。

    數(shù)據(jù)擁有者擁有n個(gè)文件,用D={D1,D2,…,Dn}表示文件集合。服務(wù)器負(fù)責(zé)管理這些文件并為用戶執(zhí)行檢索任務(wù)。用戶和數(shù)據(jù)擁有者可以是同一個(gè)人,若用戶為其他人,則數(shù)據(jù)擁有者和用戶共享密鑰。智能合約可以讀寫存儲(chǔ)的文件,給其他用戶或智能合約發(fā)送消息,還可以在合約賬戶中存放押金或發(fā)送給其他用戶。

    圖2 基于區(qū)塊鏈的SSE系統(tǒng)模型圖

    第一階段,數(shù)據(jù)擁有者通過密鑰K對(duì)n個(gè)文件加密生成密文文件集合C={C1,C2,…,Cn},提取明文關(guān)鍵詞集并建立索引I。然后把加密后的文件集合C連同索引I存儲(chǔ)在云服務(wù)器上。方案假定數(shù)據(jù)擁有者和用戶共享密鑰K。

    第二階段,用戶對(duì)包含關(guān)鍵詞w的文件進(jìn)行檢索,為關(guān)鍵詞生成陷門信息tw,把tw發(fā)送給智能合約。同時(shí),為防止用戶中途率先終止檢索協(xié)議,用戶向智能合約支付押金,表示為user DepositEth。

    第三階段,服務(wù)器執(zhí)行檢索操作,向智能合約請(qǐng)求陷門信息tw。由于服務(wù)器能根據(jù)tw推測(cè)用戶數(shù)據(jù)的相關(guān)信息,因此服務(wù)器在請(qǐng)求tw時(shí)需支付費(fèi)用。需要支付的費(fèi)用由用戶定義在智能合約中,服務(wù)器通過智能合約查詢并支付,實(shí)際交付的費(fèi)用表示為serverAskEth,暫存于智能合約。智能合約返回tw,服務(wù)器根據(jù)tw檢索,將檢索結(jié)果返回給智能合約。

    第四階段,用戶與智能合約交互請(qǐng)求檢索結(jié)果,將服務(wù)費(fèi)user PayEth暫存于智能合約。智能合約驗(yàn)證服務(wù)器返回的檢索結(jié)果是否正確,若正確,智能合約將serverAskEth+userPayEth轉(zhuǎn)移至服務(wù)器的賬戶,將押金userDepositEth返回給用戶的賬戶,并將檢索結(jié)果返回給用戶;若不正確,智能合約將user DepositEth+userPayEth+serverAskEth轉(zhuǎn)移至用戶的賬戶;若用戶未執(zhí)行這一步,智能合約將userDepositEth+server AskEth轉(zhuǎn)移至服務(wù)器的賬戶。

    4.2 符號(hào)定義

    方案中涉及到的符號(hào)含義由表1給出。

    4.3 方案框架

    以太坊區(qū)塊鏈技術(shù)下保證公平的對(duì)稱可搜索加密方案SSE=(KenGen,GenIndex,GenQueryToken,userdeposit,serverAsk,serverReturnData,userPay,Dec),具體描述如下:

    表1 符號(hào)表

    (1)KenGen(1k)→K,由數(shù)據(jù)擁有者執(zhí)行的密鑰生成概率算法。算法以安全參數(shù)k為輸入,輸出一組密鑰K=(K1,K2),通過安全信道將密鑰K發(fā)送給已認(rèn)證的授權(quán)用戶。

    (2)GenIndex(D,K)→I,由數(shù)據(jù)擁有者執(zhí)行的算法。算法以密鑰K和明文文檔集合D為輸入,輸出可搜索索引I,將I外包存儲(chǔ)到云服務(wù)器。同時(shí),數(shù)據(jù)擁有者對(duì)D進(jìn)行加密得到密文文檔集合C,將C也外包存儲(chǔ)到云服務(wù)器。

    (3)GenQueryToken(K2,w)→tw,由已認(rèn)證的檢索用戶執(zhí)行的算法。算法以安全密鑰K2、檢索關(guān)鍵詞w作為輸入,輸出陷門信息tw。

    以下(4)~(7)是由服務(wù)器部署的智能合約的相關(guān)函數(shù)接口,用于保證用戶和服務(wù)器之間交易的公平性:

    (4)userDeposit(tw,lw,eth2,user DepositEth),用戶遞交押金的函數(shù),只能由用戶執(zhí)行。為防止用戶中途先終止檢索協(xié)議,用戶通過該函數(shù)向智能合約支付價(jià)值為userDepositEth的押金,同時(shí)把tw、lw和服務(wù)器獲取陷門信息需支付的費(fèi)用eth2作為參數(shù)傳遞給智能合約。

    (5)serverAsk(serverAskEth)→tw,服務(wù)器請(qǐng)求陷門信息的函數(shù),只能由服務(wù)器執(zhí)行。服務(wù)器通過陷門信息執(zhí)行檢索操作,因此需要請(qǐng)求陷門信息tw。但服務(wù)器可以根據(jù)tw推測(cè)出用戶的隱私數(shù)據(jù),因此服務(wù)器請(qǐng)求tw時(shí)需支付費(fèi)用。服務(wù)器通過該函數(shù)向智能合約支付價(jià)值為serverAskEth的費(fèi)用,函數(shù)返回陷門信息tw。

    (6)serverReturnData(Cw_ipfs,MACw),服務(wù)器返回檢索結(jié)果的函數(shù),只能由服務(wù)器執(zhí)行。服務(wù)器收到tw后根據(jù)tw和索引I執(zhí)行檢索操作,并通過該函數(shù)把檢索結(jié)果Cw_ipfs和MACw發(fā)送給智能合約。

    (7)userPay(userPayEth,kw)→Ci_ipfs,用戶支付服務(wù)費(fèi)的函數(shù),只能由用戶執(zhí)行。用戶為得到檢索結(jié)果需支付服務(wù)費(fèi),通過該函數(shù)向智能合約發(fā)送價(jià)值為user PayEth的服務(wù)費(fèi),并把根據(jù)關(guān)鍵詞生成的kw發(fā)送給智能合約,供智能合約驗(yàn)證服務(wù)器返回的檢索結(jié)果是否正確,將正確的檢索結(jié)果返回給用戶。

    (8)Dec(Cw,K1)→Dw,由已認(rèn)證的搜索用戶執(zhí)行的算法。算法以接收到的文件集合Cw和K1為輸入,輸出為對(duì)應(yīng)的明文文件集合Dw。

    4.4 具體方案

    方案的具體細(xì)節(jié)如下:

    數(shù)據(jù)擁有者選擇三個(gè)偽隨機(jī)函數(shù)F1、F2、F3和一個(gè)密碼學(xué)哈希函數(shù)H:{0,1}k→{0,1}m。

    (1)密鑰生成算法KenGen(1k)生成隨機(jī)密鑰K1,K2←{0,1}k。

    (2)構(gòu)建索引算法GenIndex(D,K)

    首先,數(shù)據(jù)擁有者利用密鑰K1將明文文件D={D1,D2,…,Dn}加密為密文文件C={C1,C2,…,Cn}:Ci=Enc(K1,Di)(1≤i≤n)。將密文文件上傳至IPFS,記錄返回的文件位置Ci_ipfs。

    掃描文件集D并建立關(guān)鍵詞集W={w},對(duì)每一個(gè)關(guān)鍵詞wj∈W,建立D(wj)(1≤j≤m)。D(wj)是一個(gè)二進(jìn)制數(shù)組,如果文件集中第i個(gè)文件包含關(guān)鍵詞wj,則D(wj)[i]=1;否則,D(wj)[i]=0。對(duì)每一個(gè)關(guān)鍵詞wj∈W(1≤j≤m),計(jì)算:

    twj=F1(K2,wj),lwj=F2(K2,wj)

    ewi=Enc(lwj,DB(wj)),kwj=F3(K2,wj)

    MACwj=H(kwj||Ci_ipfs)

    其中,Ci_ipfs是包含關(guān)鍵詞wj的文件存儲(chǔ)在IPFS上的位置信息。

    為每個(gè)加密后的文檔生成索引I=(twj,ewj,MACwj),將C和I上傳到云服務(wù)器。

    (3)陷門生成算法GenQueryToken(K2,w)

    為了對(duì)存儲(chǔ)在服務(wù)器上的包含關(guān)鍵詞w的文件進(jìn)行檢索,用戶向數(shù)據(jù)擁有者索取文件解密密鑰K1和生成陷門信息的密鑰K2。假設(shè)數(shù)據(jù)擁有者將K1和K2通過安全信道傳輸給已認(rèn)證的用戶。用戶利用生成陷門信息的密鑰生成陷門信息。

    用戶將tw和lw作為用戶遞交押金算法的參數(shù)上傳給智能合約。

    下文中(4)~(7)是由服務(wù)器部署的SSE智能合約的相關(guān)變量和函數(shù)接口。以太坊區(qū)塊鏈中的智能合約由solidity語言[19]編寫,合約提供了4個(gè)函數(shù)接口:用戶遞交押金、服務(wù)器請(qǐng)求tw、服務(wù)器返回檢索結(jié)果、用戶獲取檢索結(jié)果。用戶和服務(wù)器通過與智能合約交互,解決對(duì)稱可搜索加密的公平性問題。

    SSE智能合約初始化:合約創(chuàng)建時(shí),定義合約的相關(guān)變量。

    eth1:防止用戶中途率先終止檢索協(xié)議,用戶需交付的押金。

    eth3:用戶請(qǐng)求檢索結(jié)果需支付的服務(wù)費(fèi)。

    (4)用戶遞交押金的合約函數(shù)userDeposit(tw,lw,eth2,userDepositEth)

    為防止用戶中途終止協(xié)議,用戶在請(qǐng)求檢索任務(wù)前,向智能合約交付押金,記作userDepositEth。同時(shí),用戶將tw、lw和服務(wù)器獲取tw和lw需支付的費(fèi)用eth2上傳至智能合約。

    Algorithm1 userDeposit

    Input:tw,lw,eth2

    Output:null

    if msg.sender is not user or msg.value≤eth1 then

    throw;

    else

    user DepositEth=msg.value;

    end

    (5)服務(wù)器請(qǐng)求檢索的合約函數(shù)serverAsk(server-

    AskEth)

    服務(wù)器為了執(zhí)行檢索任務(wù),需要獲得陷門信息,因此服務(wù)器調(diào)用智能合約的請(qǐng)求檢索算法,獲取tw和lw。函數(shù)首先判斷當(dāng)前函數(shù)的外部調(diào)用者是否是服務(wù)器,若不是則拋出異常。方案考慮到服務(wù)器是惡意的情況,在得到tw和lw后,沒有執(zhí)行檢索任務(wù),卻能推測(cè)出關(guān)于文件的信息,因此服務(wù)器向智能合約支付一筆費(fèi)用,記作server AskEth。智能合約判斷server AskEth≥eth2,返回服務(wù)器tw和lw,并把serverAskEth暫存于智能合約中。

    Algorithm2 serverAsk

    Input:null

    Output:tw,lw

    if msg.sender is not server or msg.value≤eth2 then

    throw;else

    server AskEth=msg.value;

    end

    return(tw,lw);

    end

    (6)服務(wù)器返回結(jié)果的合約函數(shù)serverReturnData(Ci_ipfs,MACw)

    服務(wù)器根據(jù)智能合約返回的參數(shù)進(jìn)行檢索,通過tw和索引I獲取到(ew,MACw),解密ew得到DB(w),DB(w)=Dec(lw,ew)。如果DB(w)[j]=1,則將文件Cj放入數(shù)組Cw中。

    服務(wù)器將數(shù)組Cw中的元素上傳至IPFS得到相應(yīng)的文件位置,將文件位置存儲(chǔ)在數(shù)組Cw_ipfs中,并把MACw和Cw_ipfs上傳給智能合約,告知用戶檢索完畢。

    Algorithm3 serverReturnData

    Input:Cw_ipfs,MACw

    Output:null

    if msg.sender is not server then

    throw;

    else

    store Cw_ipfs,MACwto smart contract;

    end

    end

    (7)用戶請(qǐng)求結(jié)果的合約函數(shù)userPay(user PayEth,kw)

    用戶向智能合約請(qǐng)求檢索結(jié)果并支付服務(wù)費(fèi),記作userPayEth。函數(shù)首先判斷當(dāng)前函數(shù)的外部調(diào)用者是否是已認(rèn)證用戶,若不是則拋出異常。同時(shí),用戶把密鑰kw上傳給智能合約。智能合約通過kw驗(yàn)證服務(wù)器提供的檢索結(jié)果是否正確,即計(jì)算服務(wù)器上傳的字符串的消息認(rèn)證碼MACw',判斷是否等于MACw:

    其中,Ci_ipfs是Cw_ipfs中的元素。

    若MACw,==MACw,則說明服務(wù)器返回的檢索結(jié)果正確,智能合約將檢索結(jié)果返回給用戶,并將userPayEth+serverAskEth轉(zhuǎn)移到服務(wù)器的賬戶,userDepositEth退回到用戶的賬戶。若不相等,則服務(wù)器返回的檢索結(jié)果錯(cuò)誤,智能合約將user DepositEth+serverAskEth+userPayEth返回到用戶的賬戶。若用戶未執(zhí)行這一步算法,智能合約將user DepositEth+serverAskEth轉(zhuǎn)移到服務(wù)器的賬戶。

    Algorithm4 userPay

    Input:null

    Output:Ci_ipfs

    if msg.sender is not server or msg.value≤eth3 then

    throw;

    else

    userPayEth=msg.value;

    end

    if MACw′==MACw

    send user PayEth+server AskEth to server;send userDepositEth to user;

    return Ci_ipfs;

    else

    send userDepositEth+userPayEth+serverAskEth to user;

    end

    end

    (8)用戶解密文件Dec(Cw,K1)

    用戶將智能合約返回的檢索結(jié)果發(fā)送到IPFS,得到對(duì)應(yīng)的密文文件Cw,使用文件所有者共享的加密文件的密鑰K1解鎖密文文件,得到包含關(guān)鍵詞w的明文文件。

    Dw=Dec(Cw,K1)

    5 安全性及性能分析

    5.1 安全性分析

    (1)文件的隱私性

    數(shù)據(jù)擁有者將文件上傳到云服務(wù)器之前,將文件通過AES對(duì)稱加密算法進(jìn)行加密,并通過安全信道把加密密鑰K發(fā)送給已認(rèn)證的檢索用戶,只有數(shù)據(jù)擁有者和已認(rèn)證的用戶能得到文件的明文信息。同時(shí),云服務(wù)器對(duì)文件的檢索是基于倒排索引和密文文件進(jìn)行的,因此文件的隱私性得到了保證。

    (2)索引和陷門的安全性

    方案中,索引I和陷門tw都是加密的形式,在沒有獲得安全密鑰的情況下,云服務(wù)器不能推測(cè)出索引信息和關(guān)鍵詞信息,從而不能推測(cè)出相關(guān)的文件信息。同時(shí),在已認(rèn)證用戶的請(qǐng)求下,為了對(duì)文件進(jìn)行檢索,云服務(wù)器需要請(qǐng)求陷門信息,并為此支付一定的費(fèi)用,費(fèi)用由用戶定義,服務(wù)器通過智能合約查詢并支付。

    (3)檢索的公平性

    在傳統(tǒng)的可搜索加密方案中,認(rèn)為云服務(wù)器會(huì)誠實(shí)地執(zhí)行檢索任務(wù)并返回相應(yīng)的結(jié)果。但是云服務(wù)器可能是惡意的,它在收到用戶遞交的服務(wù)費(fèi)后沒有返回檢索結(jié)果或返回錯(cuò)誤的檢索結(jié)果,導(dǎo)致用戶不能得到相應(yīng)的服務(wù)。本方案中,用戶首先把服務(wù)費(fèi)暫存在智能合約上,服務(wù)器在執(zhí)行檢索任務(wù)后,向智能合約返回檢索結(jié)果,智能合約自動(dòng)驗(yàn)證結(jié)果是否正確,若正確,才會(huì)把服務(wù)費(fèi)轉(zhuǎn)移到服務(wù)器的賬戶;若不正確,服務(wù)器得不到服務(wù)費(fèi)。因此,為獲取服務(wù)費(fèi),服務(wù)器將會(huì)返回正確的檢索結(jié)果。

    同時(shí),考慮了用戶中途率先終止檢索的情況,用戶請(qǐng)求檢索任務(wù)前需交付押金,由智能合約暫存。若用戶誠實(shí)地完成檢索任務(wù),智能合約退回用戶的押金,否則,這筆押金歸服務(wù)器所有。智能合約可以根據(jù)預(yù)設(shè)的條件自動(dòng)執(zhí)行協(xié)議,方案保證了檢索的公平性。

    5.2 性能分析

    通過仿真實(shí)驗(yàn)對(duì)方案的性能進(jìn)行分析。具體的實(shí)驗(yàn)環(huán)境為Intel Core i5-4210U處理器,4 GB內(nèi)存,操作系統(tǒng)為Windows10 64位,編程語言是Solidity。方案對(duì)基于倒排索引的對(duì)稱可搜索加密技術(shù)進(jìn)行改進(jìn),服務(wù)器執(zhí)行檢索算法的時(shí)間復(fù)雜度是O(D(w)),D(w)是包含關(guān)鍵詞w的文件的數(shù)量。

    通過智能合約確保交易的公平性,SSE智能合約由服務(wù)器部署在以太坊測(cè)試網(wǎng)絡(luò)Ropsten上。

    服務(wù)器賬戶地址:

    0xc8edc0148615d1fcbb7377023ed40282b59902d7

    用戶賬戶地址:

    0x3b408d4d64b07688f67ff9a40a0f4e8bea44d10c

    智能合約地址:

    0xf4ab4cbe06f8e7376df3f4b984d490f599676e8b

    通過使用以上地址,方案涉及的所有交易可以在以太坊提供的官方網(wǎng)站上被查看:https://ropsten.etherscan.io/,從而保證交易的透明度和可靠性。

    智能合約每一個(gè)被執(zhí)行的命令都有一個(gè)特定的消耗,用單位gas計(jì)數(shù)。通過仿真實(shí)驗(yàn)測(cè)試執(zhí)行智能合約所消耗的成本,實(shí)驗(yàn)結(jié)果表明服務(wù)器首次將SSE智能合約部署到以太坊區(qū)塊鏈上時(shí)消耗的成本較高。但智能合約部署完成后,用戶調(diào)用智能合約提供的函數(shù)接口時(shí),消耗的成本明顯降低,且所有的操作消耗的gas成本在可接受范圍內(nèi),同時(shí)方案能保證用戶檢索的公平性及雙方交易的透明度,因此方案是可行的。在進(jìn)行實(shí)驗(yàn)時(shí),gasprice=3Gwei,1 Gwei=109wei=10-9ether,1 ether=270 USD,實(shí)驗(yàn)結(jié)果如表2所示。

    表2 智能合約成本測(cè)試

    6 結(jié)束語

    本文提出了一個(gè)基于以太坊區(qū)塊鏈和智能合約的對(duì)稱可搜索加密方案,解決了傳統(tǒng)可搜索加密方案的公平性問題,既考慮到了如果服務(wù)器是惡意的,那么它不僅得不到服務(wù)費(fèi),還會(huì)受到懲罰;同時(shí)考慮到了如果用戶是不誠實(shí)的,它也會(huì)受到懲罰;如果服務(wù)器和用戶都誠實(shí)地執(zhí)行了檢索協(xié)議,用戶將得到正確的檢索結(jié)果,且服務(wù)器將得到服務(wù)費(fèi),同時(shí)保證了在執(zhí)行檢索協(xié)議的過程中雙方交易的可靠性和透明度。最后對(duì)方案的安全性和性能進(jìn)行了分析,證明方案是可行的。

    猜你喜歡
    合約密鑰加密
    探索企業(yè)創(chuàng)新密鑰
    密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
    一種基于熵的混沌加密小波變換水印算法
    一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
    基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
    認(rèn)證加密的研究進(jìn)展
    基于ECC加密的電子商務(wù)系統(tǒng)
    基于格的公鑰加密與證書基加密
    合約必守,誰能例外!——對(duì)“情勢(shì)變更”制度不可寄于過高期望
    忻城县| 遂宁市| 平罗县| 长沙县| 略阳县| 常德市| 湟中县| 东源县| 伊川县| 左权县| 宁都县| 宝兴县| 麻栗坡县| 中西区| 新乡县| 汝州市| 桦南县| 中牟县| 延寿县| 佳木斯市| 磐安县| 鄄城县| 奉贤区| 高陵县| 阳曲县| 浮梁县| 广丰县| 龙门县| 惠东县| 汕尾市| 搜索| 富顺县| 昌黎县| 潮安县| 盐源县| 清流县| 通渭县| 瑞安市| 车致| 南涧| 余干县|