崔永杰,彭長(zhǎng)根,3,丁紅發(fā),許德權(quán)
(1.貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025; 2.貴州省公共大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室(貴州大學(xué)),貴州 貴陽(yáng) 550025; 3.貴州大學(xué) 密碼學(xué)與數(shù)據(jù)安全研究所,貴州 貴陽(yáng) 550025)
云存儲(chǔ)服務(wù)使得大量用戶(hù)將本地私有數(shù)據(jù)外包存儲(chǔ)至云端存儲(chǔ),并可與特定數(shù)據(jù)用戶(hù)共享數(shù)據(jù),但這也使用戶(hù)失去了對(duì)數(shù)據(jù)的物理控制。因此,用戶(hù)通常會(huì)對(duì)外包數(shù)據(jù)執(zhí)行加密操作,然而,密文數(shù)據(jù)阻礙了數(shù)據(jù)的共享使用,使得云計(jì)算失去了它本身的優(yōu)勢(shì)。為了提高云環(huán)境下密文數(shù)據(jù)的靈活性,即解決加密數(shù)據(jù)如何檢索的問(wèn)題,Song等人[1]提出了可搜索加密技術(shù)(Searchable Encryption,SE)。該技術(shù)支持用戶(hù)在密文數(shù)據(jù)中執(zhí)行關(guān)鍵詞檢索方案。
2004年,文獻(xiàn)[2]提出了公鑰可搜索加密的概念,該方案利用雙線性空間的基于身份加密算法、指數(shù)運(yùn)算,適用于復(fù)雜的加密環(huán)境。文獻(xiàn)[3]在IND-CKA 的基礎(chǔ)上提出了可搜索加密的自適應(yīng)語(yǔ)義安全模型的定義,同時(shí),該方案中論證了自適應(yīng)語(yǔ)義安全即是查詢(xún)過(guò)程中密文不可區(qū)分性;并在安全模型的基礎(chǔ)上構(gòu)建了兩個(gè)可搜索加密方案,一個(gè)是非自適應(yīng)語(yǔ)義安全的,一個(gè)是自適應(yīng)語(yǔ)義安全的。但該方案都只支持單關(guān)鍵字搜索,且存在檢索效率低的問(wèn)題。文獻(xiàn)[4]引入了編輯距離,提出了一種基于公鑰的模糊可搜索加密方案。通過(guò)控制編輯距離小于某個(gè)閾值實(shí)現(xiàn)模糊檢索,并引入了通識(shí)符來(lái)進(jìn)一步減少計(jì)算開(kāi)銷(xiāo)。
然而,上述方案存在檢索效率以及通信模式是一對(duì)一的問(wèn)題,更加適合單用戶(hù)場(chǎng)景下的檢索;為了滿(mǎn)足支持多用戶(hù)場(chǎng)景下的可搜索加密方案,文獻(xiàn)[5]提出了密文策略屬性基加密系統(tǒng)(CP-ABE)這一概念。該方案中,用戶(hù)的私鑰是由密鑰生成中心(KGC)根據(jù)系統(tǒng)公共參數(shù)的主密鑰和用戶(hù)的屬性計(jì)算得出,命名為屬性私鑰。密文對(duì)應(yīng)訪問(wèn)結(jié)構(gòu),只有屬性集合里面的屬性滿(mǎn)足訪問(wèn)控制才可以成功解密密文,以此實(shí)現(xiàn)多用戶(hù)場(chǎng)景下的可搜索加密方案。2014年,文獻(xiàn)[6]首次定義了基于屬性的可搜索加密算法,擴(kuò)大了信息的共享性,并減少了存儲(chǔ)開(kāi)銷(xiāo)。
但是,上述方案存在惡意云服務(wù)器的問(wèn)題,沒(méi)有誠(chéng)實(shí)地向用戶(hù)返回準(zhǔn)確的檢索結(jié)果,存在交易不公平的問(wèn)題,不能實(shí)現(xiàn)文獻(xiàn)[7]給出的公平性定義。
因此,文獻(xiàn)[8]提出了一種基于區(qū)塊鏈的公平SSE方案,減少云服務(wù)器可能會(huì)返回錯(cuò)誤的結(jié)果,保證用戶(hù)可以得到正確的檢索結(jié)果,利用區(qū)塊鏈公平公正的特性溯源以驗(yàn)證其檢索結(jié)果。安全性和性能分析表明,該方案在語(yǔ)義上是安全可行的。文獻(xiàn)[9]提出了區(qū)塊鏈上基于云輔助的屬性基可搜索加密方案,利用了區(qū)塊鏈的公開(kāi)透明機(jī)制實(shí)現(xiàn)安全搜索及其不可篡改性確保關(guān)鍵字的完整性,但還是存在檢索效率低的問(wèn)題。
為了支持多用戶(hù)場(chǎng)景下安全高效的公平檢索,該文將屬性加密機(jī)制,國(guó)密系列算法SM3、SM4以及區(qū)塊鏈的智能合約技術(shù)相結(jié)合,提出一種支持多用戶(hù)的公平國(guó)密可搜索加密算法。主要貢獻(xiàn)如下:
(1)將國(guó)密算法與傳統(tǒng)可搜索加密方案結(jié)合,SM3雜湊算法可避免高概率的局部碰撞,生成更具安全性的256比特的索引。而SM4分組算法的優(yōu)勢(shì)在于加解密算法結(jié)構(gòu)相同,可提升數(shù)據(jù)集的加解密效率;再引入屬性加密,利用CP-ABE對(duì)共享密文數(shù)據(jù)生成樹(shù)形訪問(wèn)結(jié)構(gòu),只要用戶(hù)群體的屬性私鑰滿(mǎn)足訪問(wèn)結(jié)構(gòu),就能獲取解密密鑰,打破了傳統(tǒng)通信模式一對(duì)一的局限性。
(2)引入智能合約自動(dòng)執(zhí)行合約內(nèi)容的特點(diǎn),通過(guò)部署四個(gè)合約函數(shù)在虛擬的區(qū)塊鏈環(huán)境中,以實(shí)現(xiàn)公平性協(xié)議。該協(xié)議解決了云環(huán)境下檢索外包密文數(shù)據(jù)時(shí),用戶(hù)與云服務(wù)器之間的交易不公平性問(wèn)題,且滿(mǎn)足四級(jí)公平性。
(3)由實(shí)驗(yàn)結(jié)果可知,安全索引生成耗時(shí)均處于毫秒級(jí),對(duì)比現(xiàn)有的同類(lèi)方案具有一定優(yōu)勢(shì),總體耗時(shí)呈現(xiàn)為線性增長(zhǎng)的曲線。在檢索階段,數(shù)據(jù)集的增多并不影響云服務(wù)器檢索到包含關(guān)鍵字的密文集所用的時(shí)間,具有穩(wěn)定性。
(1)SM3雜湊算法[10]首先需確定初始值以及常量T,隨后定義布爾函數(shù)為:
FFj(X,Y,Z)=
置換函數(shù)定義為:
P0(X)=X⊕(X<<<9)⊕(X<<<17)
P1(X)=X⊕(X<<<15)⊕(X<<<23)
然后對(duì)長(zhǎng)度為l(l<264)比特的消息m進(jìn)行填充操作,填充后的消息m'的比特長(zhǎng)度為512的倍數(shù)。最后將消息進(jìn)行迭代壓縮,生成雜湊值,長(zhǎng)度為256比特。
(2)SM4分組密碼算法[11]是一個(gè)迭代分組密碼算法,由加解密算法和密鑰擴(kuò)展算法組成。首先生成密鑰及密鑰參量,加密密鑰長(zhǎng)度為128位。輪密鑰由加密密鑰生成,表示為:
(rk0,rk1,…,rk31)
其中,rki(i=0,1,…,31)為32比特。
二是加密算法,輸入明文(X0,X1,X2,X3)經(jīng)歷32次迭代運(yùn)算和一次反序變換R組成,分為四組加密,最后輸出密文(Y0,Y1,Y2,Y3)。
迭代過(guò)程為:
Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)
而且該解密算法結(jié)構(gòu)與加密變換相同,不同的只是輪密鑰的使用順序,與之相反,所以SM4分組算法的加解密效率對(duì)比AES算法更高。
定義1 訪問(wèn)結(jié)構(gòu)(Access Structure):設(shè)定集合{P1,P2,…,Pn}為實(shí)體集,假設(shè)?B,C,有B∈A且B?C,那么一定有C∈A。從而確定A?2p集合是單調(diào)的,其中屬于A的集合被稱(chēng)為授權(quán)集合。
定義2 訪問(wèn)樹(shù):設(shè)定γ為訪問(wèn)樹(shù),x為節(jié)點(diǎn),nx為節(jié)點(diǎn)x的子節(jié)點(diǎn)數(shù)量,kx為節(jié)點(diǎn)x的閾值。樹(shù)中的每個(gè)非葉子節(jié)點(diǎn)稱(chēng)為門(mén)限,由子節(jié)點(diǎn)和kx表示。當(dāng)門(mén)限為“或”門(mén)時(shí),有0 設(shè)定r為γ的根節(jié)點(diǎn),γx為訪問(wèn)樹(shù)中以x為根的子樹(shù)。滿(mǎn)足訪問(wèn)樹(shù):γx(τ)=1,代表屬性集合τ滿(mǎn)足訪問(wèn)樹(shù)γx。 智能合約(Smart Contract)是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議。 由于區(qū)塊鏈的特性,所有操作在以太坊中都是透明和可靠的,這意味著理論上可以使用以太坊智能合約來(lái)執(zhí)行任何計(jì)算任務(wù)。所以利用部署的合約函數(shù)自動(dòng)執(zhí)行的特點(diǎn)以及區(qū)塊鏈公開(kāi)透明的性質(zhì)可以達(dá)成系統(tǒng)內(nèi)的公平性。 所述方案的系統(tǒng)模型包含五個(gè)部分,分別是授權(quán)中心(Authorization Center)。數(shù)據(jù)擁有者(Data Owner)。云服務(wù)器(Cloud Service Provider)。智能合約(Smart Contract)以及數(shù)據(jù)使用者(Data User),如圖1所示。 圖1 系統(tǒng)模型 AC:授權(quán)中心負(fù)責(zé)管理系統(tǒng)中各個(gè)屬性,根據(jù)用戶(hù)的屬性為其生成屬性密鑰。 DO:數(shù)據(jù)擁有者使用SM4分組加密算法加密共享數(shù)據(jù),生成關(guān)鍵詞索引并將其上傳至云服務(wù)器。 CSP:云服務(wù)器是誠(chéng)實(shí)且好奇的半可信實(shí)體,負(fù)責(zé)執(zhí)行關(guān)鍵詞檢索操作以及密文存儲(chǔ)。 SC:智能合約是提前部署在系統(tǒng)內(nèi)部,自動(dòng)執(zhí)行合約內(nèi)容,主要負(fù)責(zé)收取或發(fā)放押金。傳遞陷門(mén)。傳遞用戶(hù)所需的密文集合以及驗(yàn)證。 DU:用戶(hù)通過(guò)生成查詢(xún)陷門(mén),再傳送給云服務(wù)器以查詢(xún)相關(guān)數(shù)據(jù)。用戶(hù)可以從AC處獲得屬性密鑰,如果用戶(hù)的屬性密鑰滿(mǎn)足密文的訪問(wèn)結(jié)構(gòu),則可以獲取解密密鑰。 所用的符號(hào)以及函數(shù)定義如表1所示。 表1 系統(tǒng)參數(shù) 所述方案結(jié)合國(guó)密算法SM3和SM4、屬性加密、可搜索加密方案[12]以及智能合約,提出了一種多項(xiàng)式概率算法。即Π=(Setup,Enc,Trapdoor,Search,SCVerify,Des)。 (1)Setup(1λ)→(PK,s)。輸入安全參數(shù)λ,輸出系統(tǒng)公共參數(shù)PK以及主密鑰s。 KeyGen(s,A)→PrivA。執(zhí)行用戶(hù)密鑰生成算法,授權(quán)中心根據(jù)訪問(wèn)結(jié)構(gòu)A和主密鑰s生成用戶(hù)的私鑰PrivA。 (2)Enc(PK,D,ω,τ,K1)→(C,V(Ci))。輸入系統(tǒng)公共參數(shù)PK,明文D,經(jīng)過(guò)屬性τ加密的關(guān)鍵詞ω以及對(duì)稱(chēng)密鑰K1。輸出密文C以及待驗(yàn)證值集V(Ci)。 (3)TrapDoor(ω,PrivA,UserCost)→Tω。輸入關(guān)鍵詞集合ω、用戶(hù)的屬性私鑰PrivA以及合約函數(shù)UserDeposit(),輸出查詢(xún)陷門(mén)Tω。 (4)Search(I,Tω,PK,ServiceCost)→(Cω,p(Cω))。輸入安全索引I、查詢(xún)陷門(mén)Tω、公共參數(shù)PK以及合約函數(shù)ServiceCost(),輸出檢索結(jié)果Cω以及證明值集合p(Cω)返回至智能合約。CSP還需驗(yàn)證密文中的關(guān)鍵詞是否滿(mǎn)足陷門(mén)中的搜索策略以及檢查DU的屬性集τ是否滿(mǎn)足密文中的訪問(wèn)策略。 (5)SCVerify(Cω,V(Ci),p(Cω))→m。輸入檢索的密文結(jié)果Cω、用戶(hù)支付檢索服務(wù)器費(fèi)$Fee、待驗(yàn)證函數(shù)V(Ci)以及證據(jù)集函數(shù)p(Cω),智能合約進(jìn)行驗(yàn)證: 智能合約輸出m=1,代表驗(yàn)證成功;如果輸出為0,則代表驗(yàn)證失敗,根據(jù)部署的合約函數(shù)回退費(fèi)用;如果輸出?,代表用戶(hù)并未與智能合約交互請(qǐng)求檢索結(jié)果,沒(méi)收押金給予云服務(wù)器,以此實(shí)現(xiàn)用戶(hù)-云服務(wù)器間的公平交易。 (6)Des(Cω,PrivA)→Dω。輸入Cω以及用戶(hù)屬性私鑰PrivA,輸出解密數(shù)據(jù)Dω至用戶(hù)。 根據(jù)文獻(xiàn)[3]的自適應(yīng)語(yǔ)義安全提出以下安全定義。所述方案在挑戰(zhàn)者與敵手之間進(jìn)行攻擊游戲,敵手可以遍歷檢索陷門(mén)和返回的密文結(jié)果,繼而進(jìn)行查詢(xún)攻擊。根據(jù)分析攻擊結(jié)果來(lái)驗(yàn)證方案的安全性。詳細(xì)定義如下: (1)查詢(xún)模式(α):給定關(guān)鍵詞集合(ω1,ω2,…,ωn),如果ωi=ωj,則α(i,j)=1,否則α(i,j)=0 (2)訪問(wèn)模式(AP):給定包含N個(gè)查詢(xún)陷門(mén)的訪問(wèn)模式集合為: {AP(T1)=D(ω1),…,AP(TN)=D(ωN)} (3)遍歷記錄(H):設(shè)定H=(D,W)為查詢(xún)的歷史記錄,D是明文數(shù)據(jù),W是N個(gè)關(guān)鍵字集合{ω1,ω2,…,ωn}。 (4)軌跡η(H):定義為 {(ID(C1),…,ID(Cn),(|C1|,…,|CN|),α,AP(H)}。ID(Ci)是密文Ci的地址,|Ci|是Ci的大小。 (5)視圖v(H):定義為 {(ID(C1),…,ID(CN)),T,C,I} 其中T是由H生成的查詢(xún)陷門(mén)。 驗(yàn)證實(shí)驗(yàn)TestAP,N過(guò)程如下: (1)系統(tǒng)建立,挑戰(zhàn)者執(zhí)行Setup(),輸出公共參數(shù)PK以及主私鑰s,發(fā)送公共參數(shù)給敵手。 (2)挑戰(zhàn)者執(zhí)行KeyGen算法生成密鑰組,驗(yàn)證其不可區(qū)分性。 (3)挑戰(zhàn)者隨機(jī)抽取參數(shù)M∈{0,1},輸入密鑰以及明文,執(zhí)行Enc算法,將生成的索引IM和密文CM傳遞給敵手。 (4)敵手根據(jù)接收到的IM和CM執(zhí)行查詢(xún)攻擊,如果敵手輸出的M'=M,那么結(jié)果返回1,否則為0。 定義3:設(shè)ξ=(Setup,Enc,Des,TrapDoor,Search)是一個(gè)可搜索加密方案,TestAp,N為密文模型安全實(shí)驗(yàn)游戲。如果攻擊游戲中對(duì)于每一個(gè)概率多項(xiàng)式敵手都存在一個(gè)可忽略函數(shù)I(n),且滿(mǎn)足: 那么可證所述方案是滿(mǎn)足自適應(yīng)語(yǔ)義安全的。 所述方案根據(jù)智能合約可在沒(méi)有第三方的前提下自動(dòng)執(zhí)行合約內(nèi)容的特點(diǎn),再結(jié)合區(qū)塊鏈公開(kāi)透明的特性提出了用戶(hù)-云服務(wù)器間的公平性協(xié)議。該協(xié)議包含四個(gè)合約函數(shù),以此達(dá)成用戶(hù)-云服務(wù)器間的公平交易。 首先,智能合約需要接收如下數(shù)據(jù):(1)數(shù)據(jù)擁有者根據(jù)密文集C生成的待驗(yàn)證集V(Ci);(2)智能合約接收云服務(wù)器的搜索結(jié)果Cω和證明集p(Cω),因此,編寫(xiě)合約函數(shù)Transport()接收數(shù)據(jù)以待驗(yàn)證,保障雙方期望。 然后智能合約需要分別收取用戶(hù)以及云服務(wù)器的押金;收取用戶(hù)押金,并接收用戶(hù)生成的查詢(xún)陷門(mén)至智能合約存儲(chǔ),因此編寫(xiě)合約函數(shù)UserCost()收取用戶(hù)押金為了防止用戶(hù)提前終止服務(wù);收取云服務(wù)器押金,并發(fā)送查詢(xún)陷門(mén)發(fā)送給云服務(wù)器,因此編寫(xiě)合約函數(shù)ServiceCost()收取云服務(wù)器押金為了防止出現(xiàn)惡意云服務(wù)器。 最后,智能合約收取用戶(hù)服務(wù)費(fèi)$Fee,執(zhí)行驗(yàn)證操作: 當(dāng)智能合約輸出m=1,驗(yàn)證成功,根據(jù)得到的m=1,合約函數(shù)自動(dòng)執(zhí)行,傳遞搜索結(jié)果和用戶(hù)押金至用戶(hù),傳遞服務(wù)費(fèi)$Fee以及云服務(wù)器押金至云服務(wù)器。 當(dāng)智能合約輸出m=0,驗(yàn)證失敗,說(shuō)明用戶(hù)沒(méi)有得到期待的數(shù)據(jù)條目,為保障公平性,根據(jù)b=0,合約函數(shù)自動(dòng)執(zhí)行,返還服務(wù)費(fèi)$Fee以及用戶(hù)押金,并將云服務(wù)器押金補(bǔ)償給用戶(hù)。 當(dāng)智能合約輸出?,說(shuō)明用戶(hù)并未請(qǐng)求交互,給予服務(wù)費(fèi)$Fee,部署的函數(shù)自動(dòng)執(zhí)行,為補(bǔ)償云服務(wù)器損失,返還兩者押金至云服務(wù)器,滿(mǎn)足文獻(xiàn)[7]中定義的四級(jí)公平性,即系統(tǒng)內(nèi)能提供公平性,系統(tǒng)通過(guò)補(bǔ)償受害方的損失恢復(fù)公平性,編寫(xiě)此合約函數(shù)為Verify()。 結(jié)合屬性密碼、可搜索加密、國(guó)密算法以及智能合約,提出了一種基于國(guó)密算法的多用戶(hù)公平可搜索加密方案。通過(guò)以下六個(gè)步驟構(gòu)成: (1)初始化階段。 Setup(1λ)→(PK,s) 用戶(hù)密鑰生成階段:KeyGen(s,A)→PrivA,授權(quán)中心根據(jù)系統(tǒng)主密鑰s以及訪問(wèn)結(jié)構(gòu)A生成用戶(hù)的屬性私鑰PrivA。具體過(guò)程如下: 首先為訪問(wèn)樹(shù)γ中的每個(gè)節(jié)點(diǎn)x選取一個(gè)隨機(jī)概率多項(xiàng)式qx;由于從根節(jié)點(diǎn)r開(kāi)始選取,給定qx的階為dx,且該階數(shù)與當(dāng)前節(jié)點(diǎn)的閾值kx存在特定關(guān)系:dx=kx-1;對(duì)于根節(jié)點(diǎn)r還存在qr(0)=y,后續(xù)qr隨機(jī)選取dr。除根節(jié)點(diǎn)外的其他節(jié)點(diǎn)x也存在關(guān)系:qx(0)=qparent(x)(index(x)),其dx仍隨機(jī)選取。qparent(x)表示訪問(wèn)樹(shù)γ中節(jié)點(diǎn)x的父節(jié)點(diǎn)。由此可以確定密鑰,其中h(X)為n階多項(xiàng)式: Privx=(Dx,Rx) Rx=grx (2)加密階段。 Enc(PK,D,ω,τ,K1)→(C,V(Ci)) 首先選取隨機(jī)數(shù)j∈Zp計(jì)算t,隨后輸入公共參數(shù)PK。明文D以及對(duì)稱(chēng)密鑰K1使用SM4分組加密算法,并用屬性集τ標(biāo)記,得到密文如下: C=(τ,C'=H2(t)·e(g1,g2)j,C''= gj,{Ci=T(i)j}i∈r) 然后DO調(diào)用SM3雜湊算法,輸入系統(tǒng)主私鑰s對(duì)密文集合的每一個(gè)密文都進(jìn)行處理生成對(duì)應(yīng)的消息驗(yàn)證碼集合: MacCi=H1(s,Ci),i=(1,2,…,n) 最后DO對(duì)每一個(gè)標(biāo)識(shí)符進(jìn)行處理,存放到一個(gè)待驗(yàn)證集合內(nèi):MacCi→V(Ci)。算法如下所示: Algorihm1V() Input:C Output:V(C) 1 Select Keys for KGC //從密鑰生成中心選取密鑰 2 for eachi=0:ndo 3 MacCi←Hl(Ci) //為每一個(gè)密文生成唯一標(biāo)識(shí)符 4 end for 5 Client initializesV()←{} //初始化集合 6 for eachi=0:ndo 7 MacCi→V(Ci) //存放標(biāo)識(shí)符至集合內(nèi) 8 end for 9 Client sendsV(Ci) to Smart //發(fā)送至智能合約 該集合通過(guò)合約函數(shù)傳遞給智能合約本地賬戶(hù),每次傳遞的信息都會(huì)被區(qū)塊記錄,無(wú)法篡改,等待在驗(yàn)證階段和該密文所對(duì)應(yīng)的證據(jù)集進(jìn)行對(duì)比。 索引生成IndexGen(PrivA,ω,PK)→I。 為了生成索引I,DO首先從明文數(shù)據(jù)集D中提取關(guān)鍵字集合W={ω1,ω2,…,ωn}。對(duì)每一個(gè)關(guān)鍵字ωi∈W,建立一個(gè)數(shù)組DB(ωi)。該數(shù)組如果第j個(gè)文檔包含關(guān)鍵詞ωi,那么DB(ωi)[j]=1;否則DB(ωi)[j]=0。接下來(lái)計(jì)算: I=(I1,I2,I3) I1=e(g0,g1)sPrivA,I2=gs,I3=H1(ω)s 最后數(shù)據(jù)擁有者輸出: I=(e(g0,g1)sPrivA,gs,H1(ω)s) 數(shù)據(jù)擁有者安全上傳密文集C、索引I至云服務(wù)器,調(diào)用合約函數(shù)Transport()上傳V(C)至智能合約中內(nèi)部賬戶(hù)以待后續(xù)驗(yàn)證。 (3)陷門(mén)函數(shù)生成階段。 TrapDoor(ω,Privx,UserCost())→Tω 查詢(xún)陷門(mén)由用戶(hù)生成。輸入關(guān)鍵字集合ω、節(jié)點(diǎn)x的私鑰Privx計(jì)算得到陷門(mén)函數(shù)Tω。首先選取隨機(jī)數(shù)z∈[1,N-1],計(jì)算得到: Tω=[H1z(ω),Dx,Rx] 用戶(hù)發(fā)送查詢(xún)請(qǐng)求時(shí),合約函數(shù)接收Tω,并支付押金給智能合約,該合約函數(shù)命名為UserCost(Tω),是為防止用戶(hù)中途終止檢索協(xié)議。 (4)檢索階段。 Search(I,Tω,ServiceCost)→(Cω,p(Cω)) 搜索操作由云服務(wù)器完成。云服務(wù)器在搜索階段也向智能合約支付押金,從而得到由智能合約發(fā)送的陷門(mén)函數(shù)。該合約函數(shù)命名為ServiceCost()。云服務(wù)器驗(yàn)證密文屬性是否滿(mǎn)足訪問(wèn)策略:只需 成立,則執(zhí)行搜索請(qǐng)求。 輸入陷門(mén)Tω以及索引I,得到密文檢索結(jié)果Cω={Cω1,Cω2,…,Cωj}。對(duì)Cω執(zhí)行計(jì)算得到: MacCi→p(Cωi),i=(1,2,…,j) 算法如下所示: Algorihm2p() Input:Tω,I,C Output:p(C) 1 Server computesCω←Search(C,I,Tω) //計(jì)算得到檢索結(jié)果 2 Server Select Keys for KGC //從密鑰生成中心選取密鑰2 3 for eachi=0:ndo 4 MacCω←Hl(Cω) //計(jì)算檢索結(jié)果中的每一位密文標(biāo)識(shí)符 5 end for 6 Serverinitializespf←{} //初始化集合 7 for eachi=0:ndo 8 MacCωi→p(Cωi) //存放標(biāo)識(shí)符至集合內(nèi) 9 end for 10 Server sendsp(C) to Smart //發(fā)送至智能合約 命名為證明集合,最后將兩者返回到智能合約以待驗(yàn)證。 (5)智能合約驗(yàn)證階段。 SCverify(Cω,V(Ci),p(Cω))→m 云服務(wù)器完成搜索階段后,將檢索結(jié)果返回至智能合約。然后,用戶(hù)與智能合約交互請(qǐng)求檢索結(jié)果,用戶(hù)將服務(wù)費(fèi)$Fee暫存于智能合約。此刻,由于智能合約調(diào)用合約函數(shù)Transport(),得到待驗(yàn)證集V(Ci)。需要驗(yàn)證的密文集合Cω以及證明集p(Cω)。執(zhí)行驗(yàn)證算法Verify(C)→m。 輸出的m值如下: 如果驗(yàn)證結(jié)果m=1,驗(yàn)證通過(guò),代表返回給用戶(hù)的密文文檔集合正確,傳遞正確檢索結(jié)果至用戶(hù)。智能合約將服務(wù)費(fèi)與服務(wù)器的押金轉(zhuǎn)移至服務(wù)器的賬戶(hù),將用戶(hù)的押金與檢索結(jié)果返回給用戶(hù);若不正確,智能合約將兩者的押金轉(zhuǎn)移至用戶(hù)的賬戶(hù);若用戶(hù)未執(zhí)行交互請(qǐng)求,智能合約通過(guò)Rdeposit()將兩者的押金轉(zhuǎn)移至服務(wù)器的賬戶(hù)。以此實(shí)現(xiàn)用戶(hù)-服務(wù)器的公平交易環(huán)境。 算法如下所示。 Algorithm 3 Verify() Input:V(Ci),p(Cωi),$Fee Output:b 1 if msg.value<$Fee //判斷是否收到交互請(qǐng)求 2 then returnm=0 3 else send $Fee to Smart 4 fori=0:ndo 5 ifV(Ci)=p(Cωi) //驗(yàn)證密文對(duì)應(yīng)的標(biāo)識(shí)符 6 then returnm=1 7 else returnm=0 8 end if 9 end for 10 end if (6)用戶(hù)解密階段。 Des(Cω,dA)→Dω 數(shù)據(jù)使用者DU發(fā)送交互請(qǐng)求后,得到由智能合約返回的對(duì)應(yīng)密文文檔Cω={C1,C2,…,Cn},再輸入用戶(hù)私鑰dA,執(zhí)行解密算法: Dω=DesdA(Cω)(1≤ω≤n) 得到明文文檔Dω={D1,D2,…,Dn}。 計(jì)算得到: 輸入陷門(mén)以及C''計(jì)算: H2(e(Tω,C''))= H2(e(H1(ω),gjz))= 由此說(shuō)明陷門(mén)與密文屬性對(duì)應(yīng)相同的關(guān)鍵詞,滿(mǎn)足訪問(wèn)樹(shù),是正確的。 定理1:假設(shè)F是偽隨機(jī)函數(shù)。H1是抗碰撞散列函數(shù)以及SM4分組算法也是抗選擇明文攻擊安全的,那么由安全定義可知,本方案是滿(mǎn)足自適應(yīng)語(yǔ)義安全的。 證明:設(shè)B為挑戰(zhàn)者,A為概率多項(xiàng)式敵手。A通過(guò)獲取密鑰。索引以及密文集合推測(cè)出B的視圖以贏得游戲。因此,要證明方案是滿(mǎn)足自適應(yīng)安全的,只需滿(mǎn)足: |Pr[TestAp,N=1]≤1/2+I(n)| (1)B運(yùn)行KeyGen算法生成用戶(hù)密鑰PrivA,而密鑰生成過(guò)程是在{0,1}λ隨機(jī)選取的,故敵手從兩個(gè)隨機(jī)字符串中區(qū)分密鑰的概率是可忽略的,因此,存在一個(gè)可忽略函數(shù)I1(n)滿(mǎn)足: |Pr[KeyGen(s,A)→PrivA]-Pr[Random(s,A) →(PrivAr)]|≤I1(n) (2)B執(zhí)行索引生成算法IndexGen(PrivA,ω)→I,索引生成過(guò)程采用偽隨機(jī)函數(shù)F,模擬I*使用隨機(jī)字符串{0,1}λ取代相同長(zhǎng)度輸出的FK2(ωi)。由偽隨機(jī)函數(shù)的安全性可得,敵手A無(wú)法在不知道PrivA的前提下區(qū)分偽隨機(jī)函數(shù)F和隨機(jī)字符串,因此,存在一個(gè)可忽略函數(shù)I2(n)滿(mǎn)足: |Pr[IndexGen(PrivA,ω)→I]- Pr[Random(PrivA,ω)→(Ir)]|≤I2(n) (3)因?yàn)镾M4加密算法已知是密文模型安全的,所以模擬密文C*和實(shí)際密文C是不可區(qū)分的,因此存在一個(gè)可忽略的函數(shù)I3(n)滿(mǎn)足: |Pr[Enc(K1,D)→C]-Pr[Random(K1,D) →(Cr)]|≤I3(n) 綜上所述,可以計(jì)算得出: |Pr[TestAp,N=1]≤1/2+I1(n)+I2(n)+ I3(n)| 也就是滿(mǎn)足: |Pr[TestAp,N=1]≤1/2+I(n) 因此可知,給定任意敵手A,模擬輸出與實(shí)際輸出是不可區(qū)分的,那么猜測(cè)出B的視圖概率也是不大于1/2的,所以,本方案是滿(mǎn)足自適應(yīng)性語(yǔ)義安全的。 本節(jié)通過(guò)分析對(duì)比文獻(xiàn)[12]、文獻(xiàn)[14]的方案以及文中方案,得到的結(jié)果如表2所示。 表2 各方案功能對(duì)比 文獻(xiàn)[12]實(shí)現(xiàn)了大型數(shù)據(jù)庫(kù)上的動(dòng)態(tài)可搜索加密方案,支持多關(guān)鍵詞查詢(xún)且通過(guò)遺忘交叉標(biāo)記驗(yàn)證結(jié)果,不能保證方案的公平性;文獻(xiàn)[14]利用CP-ABE實(shí)現(xiàn)特定用戶(hù)群組的訪問(wèn),然后根據(jù)區(qū)塊鏈公平公正可溯源的特性,解決了惡意云服務(wù)器返回錯(cuò)誤檢索結(jié)果或者不返回檢索結(jié)果的問(wèn)題,但檢索效率仍存在一定優(yōu)化空間。 該方案采用的國(guó)密SM3雜湊算法以及SM4分組算法,在加解密方面有著更快的速度,生成的雜湊值也是256比特,更加安全,并利用更高效的R-ate雙線性對(duì)。再結(jié)合屬性加密,通過(guò)訪問(wèn)策略來(lái)實(shí)現(xiàn)多用戶(hù)場(chǎng)景下的密文檢索;其次,引入智能合約,通過(guò)其自動(dòng)執(zhí)行合約函數(shù)的特性,確保服務(wù)器和用戶(hù)的公平交易環(huán)境;最后,通過(guò)驗(yàn)證對(duì)比,確保檢索結(jié)果的正確性以及安全性。 所述方案采用Enron Email Dataset作為實(shí)驗(yàn)數(shù)據(jù)集,在安全索引生成階段以及關(guān)鍵詞檢索階段進(jìn)行仿真實(shí)驗(yàn)。明文加解密使用SM4分組算法,雜湊算法使用SM3算法,并且通過(guò)屬性加密實(shí)現(xiàn)多用戶(hù)場(chǎng)景下的密文檢索,雙線性對(duì)選取效率更高的R-ate對(duì),合約函數(shù)編寫(xiě)通過(guò)Solidity語(yǔ)言完成。運(yùn)行環(huán)境為Windows系統(tǒng),Intel(R) Core(TM) i7-8570H,8G內(nèi)存。區(qū)塊鏈環(huán)境通過(guò)Ganache模擬,合約函數(shù)部署在Remix平臺(tái)上,Ganache初始化生成多個(gè)虛擬合約地址分別作為數(shù)據(jù)擁有者。云服務(wù)器以及用戶(hù)的地址,每個(gè)賬戶(hù)擁有100 ETH(虛擬貨幣)。 所述方案將根據(jù)各個(gè)階段計(jì)算量開(kāi)銷(xiāo)進(jìn)行性能分析,具體符號(hào)含義如表3所示。 表3 計(jì)算開(kāi)銷(xiāo)符號(hào)介紹 依據(jù)索引生成階段計(jì)算開(kāi)銷(xiāo)。陷門(mén)生成階段計(jì)算開(kāi)銷(xiāo)以及檢索階段計(jì)算開(kāi)銷(xiāo)三個(gè)方面進(jìn)行分析對(duì)比。根據(jù)雙線性對(duì)的特性,R-ate對(duì)運(yùn)算效率大于傳統(tǒng)雙線性對(duì),即計(jì)算開(kāi)銷(xiāo)上Trp 表4 各階段計(jì)算開(kāi)銷(xiāo)對(duì)比 所述方案通過(guò)對(duì)比Du的方案[15]以及Yan[16]的方案安全索引生成耗時(shí);文中索引生成時(shí)間與關(guān)鍵詞數(shù)量成正比。隨機(jī)輸入Enron數(shù)據(jù)集五個(gè),對(duì)應(yīng)數(shù)據(jù)集內(nèi)可提取的關(guān)鍵詞數(shù)量分別為25,149,212,525,667,生成索引所耗時(shí)長(zhǎng)為72.00 ms,125.99 ms,142.99 ms,240.00 ms,294.00 ms。如圖2所示,所述方案生成索引耗時(shí)處于毫秒級(jí),較現(xiàn)有方案,具有一定時(shí)間開(kāi)銷(xiāo)上的優(yōu)勢(shì)。 圖2 索引生成耗時(shí) 所述方案對(duì)比現(xiàn)有方案Du的方案[15]以及Yan[16]的方案,結(jié)果如圖3所示。所述方案以用戶(hù)檢索單個(gè)關(guān)鍵詞“equitable”為例,得到結(jié)果:不同的文檔數(shù)量下檢索所耗時(shí)間在50 ms~51 ms間,并非線性增長(zhǎng)關(guān)系;具體如下:分別是文本數(shù)量為5時(shí),檢索時(shí)間為50.2 ms;文本數(shù)量為10時(shí),檢索時(shí)間為51.4 ms;文本數(shù)量為20時(shí),檢索時(shí)間為51.1 ms;文本數(shù)量為40時(shí),檢索時(shí)間為50.9 ms;文本數(shù)量為50時(shí),檢索時(shí)間為50.7 ms;文本數(shù)量為100時(shí),檢索時(shí)間為51.3 ms。由此可見(jiàn),所述方案中郵件文本的數(shù)量增多對(duì)方案檢索耗時(shí)影響不大,具有實(shí)用性;在實(shí)際應(yīng)用場(chǎng)景中可以減緩數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)多文本對(duì)檢索時(shí)長(zhǎng)的影響。 圖3 檢索所耗時(shí)長(zhǎng) 結(jié)合國(guó)密算法、屬性加密以及智能合約技術(shù),提出了一種支持多用戶(hù)的公平國(guó)密可搜索加密方案,利用屬性私鑰滿(mǎn)足訪問(wèn)結(jié)構(gòu)以獲取解密密鑰的特性,實(shí)現(xiàn)支持多用戶(hù)的可搜索加密方案,并完成了密鑰生成、加解密效率、索引生成以及檢索效率上的優(yōu)化。同時(shí),結(jié)合智能合約交易可追蹤且不可逆轉(zhuǎn)的特性,實(shí)現(xiàn)檢索結(jié)果的可驗(yàn)證。并且其自動(dòng)執(zhí)行合約內(nèi)容的特點(diǎn)可使雙方誠(chéng)實(shí)地按照合約規(guī)則執(zhí)行,以此確保用戶(hù)與云服務(wù)器之間的交易公平性。下一步將考慮實(shí)現(xiàn)連接關(guān)鍵詞檢索,以提高方案的實(shí)用性。1.3 智能合約
2 系統(tǒng)模型與定義
2.1 系統(tǒng)模型
2.2 算法定義
2.3 安全定義
2.4 公平性協(xié)議
3 方案構(gòu)造
4 方案分析
4.1 正確性分析
4.2 安全性分析
4.3 功能分析
5 實(shí)驗(yàn)分析
5.1 性能分析
5.2 實(shí)驗(yàn)結(jié)果
6 結(jié)束語(yǔ)
計(jì)算機(jī)技術(shù)與發(fā)展2022年10期