李海寧 呂少杰
(陜西理工大學數學與計算機科學學院,陜西漢中 723000)
在電子商務中經常通過第三方進行支付。第三方支付在買賣雙方中起著中間人仲裁者的角色。圖1 以支付寶為例來描述第三方交易流程圖。
1.1 買家在網上商城選購商品并加入購入車。
1.2 買家利用個人事先和銀行卡關聯的支付寶進行購物車結算。
1.3 買家的支付寶賬號向關聯的銀行卡發起扣款請求。
1.4 銀聯卡通知銀行給賣家進行轉賬。
1.5 銀行向第三方支付寶進行轉賬。
1.6 支付寶(第三方)通知賣家已經代收貨款,可以發貨。
1.7 賣家收到到款通知后給買家發貨
1.8 買家收到貨后如果對商品不滿意,或認為與商家承諾有出入,可申請退貨退款(是否能退貨需要第三方進行裁定)。
1.9 買家確認收貨后,支付寶(第三方)支付給賣家,完成交易。
依靠第三方支付可能會暴露用戶的姓名、身份證號、銀行卡號等個人信息,用戶通過第三方泄露隱私的事件時有發生,另一方面依靠第三方進行裁決往往帶有一定的主觀性,交易的公平性得不到充分保障。
隨著互聯網技術的快速發展,越來越多的用戶把自己的數據放到云服務器上,為了保護用戶和數據的隱私安全,用戶通常在云服務器上存放的數據的密文,可搜索加密技術也應運而生了。
依靠第三方的密文搜索系統通常包括數據擁有者、用戶和云服務器三個主體,如圖2 所示。基于云服務器(第三方)的密文搜索方案中,數據擁有者使用可搜索加密算法對文件進行加密,同時提取文件中的關鍵詞加密并建立安全索引表,將文件密文和索引一起發送給云服務器。當用戶需要訪問包含有某個關鍵詞的文件時,將獲得的關鍵詞的搜索憑證發送給云服務器,云服務器將搜索憑證與每個文件進行匹配,最后將匹配成功的文件返回給用戶。用戶解密密文即可獲得所需文件。

圖2 基于云服務器的的密文搜索方案
服務器在整個過程是誠實且好奇的,用戶在檢索前需要先向服務器支付服務費,服務器誠實地執行搜索任務并返回給用戶檢索結果。但是服務器返回的搜索結果有可能不正確,或者未能按照要求返回搜索結果,這時候就需要權威機構進行判定和仲裁,就算給用戶退回已經支付的費用,但是整個過程也是復雜和漫長的,這對用戶是不公平的,這也是傳統基于第三方云服務器進行密文的缺陷,研究帶有驗證功能且保證各方利益的公平的的密文搜索方案顯得非常必要。
智能合約可以自動執行檢索、驗證和支付功能[1-3],本文利用智能合約解決傳統密文搜索中的驗證和公平支付問題基于智能合約的密文搜索和公平支付方案包含五個角色:數據擁有者,服務器,用戶和智能合約。如圖3 所示,為了解決一對多搜索場景采用密鑰策略的屬性加密,數據擁有者可以在密文中預先設定訪問策略,只有當用戶的屬性集滿足訪問策略才能得到解密密鑰,從而獲得通過智能合約搜索驗證后的密文的原始密文。智能合約可以讀寫存儲文件、給用戶或服務器發送消息、可以在合約賬戶中暫存押金、在合約賬戶暫存服務費、在合約賬戶中暫存查詢費,智能合約可以對搜索結果進行驗證。

圖3 基于智能合約的密文搜索和公平支付方案框架圖
本文主要利用以太坊的去中心化、安全可靠和支持智能合約的特點,保證用戶和服務器之間交易的公平性:第一,云服務器通過以太坊區塊鏈發布一筆交易來創建智能合約,利用智能合約暫存價值,搜索用戶需要提交搜索押金和進一步的搜索服務費,服務器需要提交搜索查詢費,基于智能合約完成云服務器和用戶之間的搜索交易,若用戶在執行搜索協議支取服務費前有放棄行為智能合約將返還服務器的查詢費,同時將用戶的搜索押金一起發給服務器作為補償;第二,通過智能合約自動驗證服務器返回的搜索結果是否正確;第三,若服務器返回的搜索結果不正確,用戶可以從智能合約取回已支付的服務費和搜索押金連同服務器的查詢費一起作為補償,維護自己的權益,從而保證檢索的公平性[4-5]。
數據擁有者通過加密密鑰加密數據明文,得到密文C,同時提取明文關鍵詞集并生成索引I。然后把加密后的文件集合C連同索引I 存儲在云服務器上。只有屬性集和滿足數據擁有者事先設定好的訪問策略的用戶才能從可信權威獲取密鑰K。
用戶對包含關鍵詞的文件進行檢索,為關鍵詞生成陷門信息,把陷門信息發送給智能合約,同時,為防止用戶中途率先終止檢索協議,用戶向智能合約支付押金。
服務器執行檢索任務,向智能合約請求陷門信息。為了防止服務器有任何欺騙檢索行為。服務器需要給智能合約支付查詢費,暫存于智能合約。智能合約收到查詢費后返陷門給服務器,服務器根據陷門檢索,將檢索結果返回給智能合約。
用戶、服務器與智能合約交互請求檢索結果,用戶將服務費暫存于智能合約。智能合約驗證服務器返回的搜索結果是否正確,若正確,智能合約將查詢費+服務費轉移至服務器,將押金返回給用戶,并將檢索結果發給用戶;若不正確,智能合約將查詢費+服務費+押金轉移給用戶;若用戶中途放棄檢索任務,智能合約將查詢費+押金轉移給服務器。方案的流程圖如圖4 所示。

圖4 基于智能合約的密文搜索和公平支付流程圖
數據擁有者給云上放的是通過密文策略屬性加密的密文形式。數據擁有者可以在密文中預先設定訪問策略,只有當用戶的屬性集滿足訪問策略才能得到解密密鑰,因此,文件的隱私性得到了保證。
方案中索引和關鍵詞陷門也都是經過加密過的,云服務器不能從索引和陷門得到任何有用的信息。
本方案中,用戶把服務費先暫存在智能合約上,服務器在執行檢索任務前為了取得搜索陷門需要向智能合約支付查詢費,執行檢索任務后,向智能合約返回檢索結果,智能合約自動驗證檢索結果是否正確,若正確,智能合約會把服務費和查詢費一起轉移到服務器的賬戶;若不正確,服務器得不到服務費,查詢費將由智能支付給用戶。同時,為了防止用戶中途放棄檢索任務,單方面終止檢索協議,用戶請求檢索任務前需要給智能合約支付檢索押金,如果用戶誠信的完成檢索流程,智能合約原額退回用戶檢索押金,否則,這筆檢索押金將由智能合約連同查詢費一起支付給云服務器。這樣對服務器和用戶都有一定的約束作用,從而保證了檢索服務的公平性。