李海寧 呂少杰
(陜西理工大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,陜西漢中 723000)
在電子商務(wù)中經(jīng)常通過(guò)第三方進(jìn)行支付。第三方支付在買(mǎi)賣(mài)雙方中起著中間人仲裁者的角色。圖1 以支付寶為例來(lái)描述第三方交易流程圖。
1.1 買(mǎi)家在網(wǎng)上商城選購(gòu)商品并加入購(gòu)入車(chē)。
1.2 買(mǎi)家利用個(gè)人事先和銀行卡關(guān)聯(lián)的支付寶進(jìn)行購(gòu)物車(chē)結(jié)算。
1.3 買(mǎi)家的支付寶賬號(hào)向關(guān)聯(lián)的銀行卡發(fā)起扣款請(qǐng)求。
1.4 銀聯(lián)卡通知銀行給賣(mài)家進(jìn)行轉(zhuǎn)賬。
1.5 銀行向第三方支付寶進(jìn)行轉(zhuǎn)賬。
1.6 支付寶(第三方)通知賣(mài)家已經(jīng)代收貨款,可以發(fā)貨。
1.7 賣(mài)家收到到款通知后給買(mǎi)家發(fā)貨
1.8 買(mǎi)家收到貨后如果對(duì)商品不滿(mǎn)意,或認(rèn)為與商家承諾有出入,可申請(qǐng)退貨退款(是否能退貨需要第三方進(jìn)行裁定)。
1.9 買(mǎi)家確認(rèn)收貨后,支付寶(第三方)支付給賣(mài)家,完成交易。
依靠第三方支付可能會(huì)暴露用戶(hù)的姓名、身份證號(hào)、銀行卡號(hào)等個(gè)人信息,用戶(hù)通過(guò)第三方泄露隱私的事件時(shí)有發(fā)生,另一方面依靠第三方進(jìn)行裁決往往帶有一定的主觀(guān)性,交易的公平性得不到充分保障。
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來(lái)越多的用戶(hù)把自己的數(shù)據(jù)放到云服務(wù)器上,為了保護(hù)用戶(hù)和數(shù)據(jù)的隱私安全,用戶(hù)通常在云服務(wù)器上存放的數(shù)據(jù)的密文,可搜索加密技術(shù)也應(yīng)運(yùn)而生了。
依靠第三方的密文搜索系統(tǒng)通常包括數(shù)據(jù)擁有者、用戶(hù)和云服務(wù)器三個(gè)主體,如圖2 所示?;谠品?wù)器(第三方)的密文搜索方案中,數(shù)據(jù)擁有者使用可搜索加密算法對(duì)文件進(jìn)行加密,同時(shí)提取文件中的關(guān)鍵詞加密并建立安全索引表,將文件密文和索引一起發(fā)送給云服務(wù)器。當(dāng)用戶(hù)需要訪(fǎng)問(wèn)包含有某個(gè)關(guān)鍵詞的文件時(shí),將獲得的關(guān)鍵詞的搜索憑證發(fā)送給云服務(wù)器,云服務(wù)器將搜索憑證與每個(gè)文件進(jìn)行匹配,最后將匹配成功的文件返回給用戶(hù)。用戶(hù)解密密文即可獲得所需文件。
圖2 基于云服務(wù)器的的密文搜索方案
服務(wù)器在整個(gè)過(guò)程是誠(chéng)實(shí)且好奇的,用戶(hù)在檢索前需要先向服務(wù)器支付服務(wù)費(fèi),服務(wù)器誠(chéng)實(shí)地執(zhí)行搜索任務(wù)并返回給用戶(hù)檢索結(jié)果。但是服務(wù)器返回的搜索結(jié)果有可能不正確,或者未能按照要求返回搜索結(jié)果,這時(shí)候就需要權(quán)威機(jī)構(gòu)進(jìn)行判定和仲裁,就算給用戶(hù)退回已經(jīng)支付的費(fèi)用,但是整個(gè)過(guò)程也是復(fù)雜和漫長(zhǎng)的,這對(duì)用戶(hù)是不公平的,這也是傳統(tǒng)基于第三方云服務(wù)器進(jìn)行密文的缺陷,研究帶有驗(yàn)證功能且保證各方利益的公平的的密文搜索方案顯得非常必要。
智能合約可以自動(dòng)執(zhí)行檢索、驗(yàn)證和支付功能[1-3],本文利用智能合約解決傳統(tǒng)密文搜索中的驗(yàn)證和公平支付問(wèn)題基于智能合約的密文搜索和公平支付方案包含五個(gè)角色:數(shù)據(jù)擁有者,服務(wù)器,用戶(hù)和智能合約。如圖3 所示,為了解決一對(duì)多搜索場(chǎng)景采用密鑰策略的屬性加密,數(shù)據(jù)擁有者可以在密文中預(yù)先設(shè)定訪(fǎng)問(wèn)策略,只有當(dāng)用戶(hù)的屬性集滿(mǎn)足訪(fǎng)問(wèn)策略才能得到解密密鑰,從而獲得通過(guò)智能合約搜索驗(yàn)證后的密文的原始密文。智能合約可以讀寫(xiě)存儲(chǔ)文件、給用戶(hù)或服務(wù)器發(fā)送消息、可以在合約賬戶(hù)中暫存押金、在合約賬戶(hù)暫存服務(wù)費(fèi)、在合約賬戶(hù)中暫存查詢(xún)費(fèi),智能合約可以對(duì)搜索結(jié)果進(jìn)行驗(yàn)證。
圖3 基于智能合約的密文搜索和公平支付方案框架圖
本文主要利用以太坊的去中心化、安全可靠和支持智能合約的特點(diǎn),保證用戶(hù)和服務(wù)器之間交易的公平性:第一,云服務(wù)器通過(guò)以太坊區(qū)塊鏈發(fā)布一筆交易來(lái)創(chuàng)建智能合約,利用智能合約暫存價(jià)值,搜索用戶(hù)需要提交搜索押金和進(jìn)一步的搜索服務(wù)費(fèi),服務(wù)器需要提交搜索查詢(xún)費(fèi),基于智能合約完成云服務(wù)器和用戶(hù)之間的搜索交易,若用戶(hù)在執(zhí)行搜索協(xié)議支取服務(wù)費(fèi)前有放棄行為智能合約將返還服務(wù)器的查詢(xún)費(fèi),同時(shí)將用戶(hù)的搜索押金一起發(fā)給服務(wù)器作為補(bǔ)償;第二,通過(guò)智能合約自動(dòng)驗(yàn)證服務(wù)器返回的搜索結(jié)果是否正確;第三,若服務(wù)器返回的搜索結(jié)果不正確,用戶(hù)可以從智能合約取回已支付的服務(wù)費(fèi)和搜索押金連同服務(wù)器的查詢(xún)費(fèi)一起作為補(bǔ)償,維護(hù)自己的權(quán)益,從而保證檢索的公平性[4-5]。
數(shù)據(jù)擁有者通過(guò)加密密鑰加密數(shù)據(jù)明文,得到密文C,同時(shí)提取明文關(guān)鍵詞集并生成索引I。然后把加密后的文件集合C連同索引I 存儲(chǔ)在云服務(wù)器上。只有屬性集和滿(mǎn)足數(shù)據(jù)擁有者事先設(shè)定好的訪(fǎng)問(wèn)策略的用戶(hù)才能從可信權(quán)威獲取密鑰K。
用戶(hù)對(duì)包含關(guān)鍵詞的文件進(jìn)行檢索,為關(guān)鍵詞生成陷門(mén)信息,把陷門(mén)信息發(fā)送給智能合約,同時(shí),為防止用戶(hù)中途率先終止檢索協(xié)議,用戶(hù)向智能合約支付押金。
服務(wù)器執(zhí)行檢索任務(wù),向智能合約請(qǐng)求陷門(mén)信息。為了防止服務(wù)器有任何欺騙檢索行為。服務(wù)器需要給智能合約支付查詢(xún)費(fèi),暫存于智能合約。智能合約收到查詢(xún)費(fèi)后返陷門(mén)給服務(wù)器,服務(wù)器根據(jù)陷門(mén)檢索,將檢索結(jié)果返回給智能合約。
用戶(hù)、服務(wù)器與智能合約交互請(qǐng)求檢索結(jié)果,用戶(hù)將服務(wù)費(fèi)暫存于智能合約。智能合約驗(yàn)證服務(wù)器返回的搜索結(jié)果是否正確,若正確,智能合約將查詢(xún)費(fèi)+服務(wù)費(fèi)轉(zhuǎn)移至服務(wù)器,將押金返回給用戶(hù),并將檢索結(jié)果發(fā)給用戶(hù);若不正確,智能合約將查詢(xún)費(fèi)+服務(wù)費(fèi)+押金轉(zhuǎn)移給用戶(hù);若用戶(hù)中途放棄檢索任務(wù),智能合約將查詢(xún)費(fèi)+押金轉(zhuǎn)移給服務(wù)器。方案的流程圖如圖4 所示。
圖4 基于智能合約的密文搜索和公平支付流程圖
數(shù)據(jù)擁有者給云上放的是通過(guò)密文策略屬性加密的密文形式。數(shù)據(jù)擁有者可以在密文中預(yù)先設(shè)定訪(fǎng)問(wèn)策略,只有當(dāng)用戶(hù)的屬性集滿(mǎn)足訪(fǎng)問(wèn)策略才能得到解密密鑰,因此,文件的隱私性得到了保證。
方案中索引和關(guān)鍵詞陷門(mén)也都是經(jīng)過(guò)加密過(guò)的,云服務(wù)器不能從索引和陷門(mén)得到任何有用的信息。
本方案中,用戶(hù)把服務(wù)費(fèi)先暫存在智能合約上,服務(wù)器在執(zhí)行檢索任務(wù)前為了取得搜索陷門(mén)需要向智能合約支付查詢(xún)費(fèi),執(zhí)行檢索任務(wù)后,向智能合約返回檢索結(jié)果,智能合約自動(dòng)驗(yàn)證檢索結(jié)果是否正確,若正確,智能合約會(huì)把服務(wù)費(fèi)和查詢(xún)費(fèi)一起轉(zhuǎn)移到服務(wù)器的賬戶(hù);若不正確,服務(wù)器得不到服務(wù)費(fèi),查詢(xún)費(fèi)將由智能支付給用戶(hù)。同時(shí),為了防止用戶(hù)中途放棄檢索任務(wù),單方面終止檢索協(xié)議,用戶(hù)請(qǐng)求檢索任務(wù)前需要給智能合約支付檢索押金,如果用戶(hù)誠(chéng)信的完成檢索流程,智能合約原額退回用戶(hù)檢索押金,否則,這筆檢索押金將由智能合約連同查詢(xún)費(fèi)一起支付給云服務(wù)器。這樣對(duì)服務(wù)器和用戶(hù)都有一定的約束作用,從而保證了檢索服務(wù)的公平性。