莊朝源,郭 瑞,楊 耿
1.西安郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,西安 710121
2.西安郵電大學(xué) 無線網(wǎng)絡(luò)安全技術(shù)國家工程實驗室,西安 710121
隨著信息技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)使用量呈爆發(fā)式增長態(tài)勢,本地的計算和存儲能力已經(jīng)無法滿足人們對數(shù)據(jù)處理日益增長的需求。云計算擁有強大的計算能力和數(shù)據(jù)存儲能力,可以將復(fù)雜的計算任務(wù)進(jìn)行拆分后,轉(zhuǎn)交給多個分布式服務(wù)器進(jìn)行計算分析,再將結(jié)果返回給用戶,所以云計算成為人們存儲、處理數(shù)據(jù)的重要技術(shù)。云存儲是建立在云服務(wù)器上的新型存儲技術(shù),可以將存儲資源進(jìn)行整合,為用戶提供龐大的數(shù)據(jù)存儲空間和低廉的數(shù)據(jù)托管成本,便于用戶對海量數(shù)據(jù)進(jìn)行共享。然而,將數(shù)據(jù)直接存儲在第三方云服務(wù)器中,會導(dǎo)致用戶失去對數(shù)據(jù)的控制。在面對惡意用戶和未授權(quán)用戶的非法訪問時,數(shù)據(jù)中所包含的隱私信息存在被竊取的安全隱患。訪問控制[1]技術(shù)可以利用數(shù)據(jù)擁有者設(shè)定訪問策略來確保數(shù)據(jù)訪問的安全性,但是云計算環(huán)境下數(shù)據(jù)多存儲在不同的用戶實體中,數(shù)據(jù)量龐大且具有動態(tài)擴展等特性,無法滿足用戶對云中共享數(shù)據(jù)進(jìn)行靈活的細(xì)粒度訪問控制需求。
基于密文策略的屬性加密方案(ciphertext-policy attribute-based encryption,CP-ABE)[2]可以為云計算環(huán)境中的數(shù)據(jù)提供機密性和細(xì)粒度訪問控制。數(shù)據(jù)擁有者對明文進(jìn)行加密并在密文中設(shè)定訪問策略,用戶根據(jù)屬性集生成密鑰,解密時用戶密鑰中包含的屬性集必須滿足密文中的訪問策略,該用戶才能成功完成解密。在CP-ABE 中,數(shù)據(jù)擁有者可以靈活的設(shè)置訪問策略,向指定的用戶授予訪問權(quán)限,對用戶進(jìn)行細(xì)粒度訪問控制,保證數(shù)據(jù)接入安全。然而,訪問策略本身涉及數(shù)據(jù)擁有者、訪問者、數(shù)據(jù)本身的敏感信息,存在相關(guān)信息被泄露的安全風(fēng)險;并且CP-ABE 中用戶加、解密需要消耗龐大的計算資源,導(dǎo)致數(shù)據(jù)保護(hù)過程效率低下,阻礙屬性加密體制在云計算環(huán)境中的廣泛應(yīng)用。
此外,在訪問控制系統(tǒng)中引入?yún)^(qū)塊鏈,利用區(qū)塊鏈搭建去中心化機構(gòu)的平臺,為各方構(gòu)建分布式應(yīng)用程序。云計算環(huán)境中存儲的數(shù)據(jù)可能被多個實體共同擁有,為了使相關(guān)數(shù)據(jù)擁有者參與訪問控制授權(quán)過程,區(qū)塊鏈平臺可以由多個數(shù)據(jù)擁有實體組成,在基于相關(guān)數(shù)據(jù)擁有實體的共識基礎(chǔ)上為用戶生成屬性證書,并生成屬性證書編號。屬性授權(quán)中心在為用戶生成屬性密鑰前,需要在區(qū)塊鏈中驗證用戶是否擁有屬性證書。
針對云計算環(huán)境下訪問控制過程中存在的靈活性差、信息泄露、效率低下等問題,本文構(gòu)建了一種基于區(qū)塊鏈的可驗證外包解密的匿名屬性加密方案(anonymous attribute-based encryption scheme with verifiable outsourcing decryption based on blockchain,AVOCBABE),具體工作如下:
(1)本方案引入屬性匹配技術(shù),即在解密階段之前添加屬性匹配過程,用于測試屬性私鑰與密文中隱藏的訪問策略是否匹配,無需解密。
(2)本方案將部分解密外包給云服務(wù)器,用戶可以對第三方外包結(jié)果進(jìn)行驗證,確保外包解密結(jié)果的正確性,極大地降低了用戶終端的計算代價。
(3)本方案的用戶屬性密鑰由屬性授權(quán)機構(gòu)和用戶共同生成,可以防止屬性授權(quán)機構(gòu)權(quán)力過大,直接獲取數(shù)據(jù)。同時對用戶的身份進(jìn)行匿名化,利用生成的假名可以對用戶真實身份進(jìn)行追蹤。
(4)本方案利用區(qū)塊鏈技術(shù)為數(shù)據(jù)擁有實體提供平臺,通過區(qū)塊鏈的共識機制使數(shù)據(jù)擁有者有效的參與到屬性證書授權(quán)的過程中,并基于所有相關(guān)實體的共識為用戶生成屬性證書。
Sahai 和Waters[3]在2005 年首先提出了屬性基加密(attribute-based encryption,ABE)的概念,通過用戶的屬性來靈活控制數(shù)據(jù)的訪問權(quán)限,廣泛應(yīng)用于各種訪問控制場景。屬性加密主要分為兩類:密文策略的屬性加密(CP-ABE)[4]和密鑰策略的屬性加密(KP-ABE)[5-6]。在CP-ABE 中,用戶的屬性密鑰與屬性列表相關(guān)聯(lián),并且密文是指定在系統(tǒng)的屬性范圍上定義的訪問策略。僅當(dāng)用戶的屬性列表與密文的訪問策略匹配時,用戶才能解密密文;在KP-ABE 中,將在系統(tǒng)屬性上定義的訪問策略編碼為用戶的屬性秘密密鑰,并根據(jù)屬性列表創(chuàng)建密文,僅當(dāng)相應(yīng)的屬性列表與用戶的屬性密鑰相關(guān)聯(lián)的訪問策略匹配時,用戶才能解密密文。在云計算中,數(shù)據(jù)擁有者可以使用CP-ABE 靈活的指定訪問策略來決定用戶解密需要具備哪些屬性,更加適用于訪問控制場景中。然而,一些CP-ABE 方案[7-10]中的訪問策略必須在密文中顯示,不支持隱私保護(hù),并且計算效率存在問題。
針對訪問策略敏感信息泄露問題,越來越多的研究人員提出支持策略隱藏的CP-ABE方案,使得訪問策略不在密文中明確的表達(dá),而是將策略隱藏在密文中進(jìn)行存儲。Nishide 等人[11]通過多值屬性的布爾公式實現(xiàn)了訪問策略的隱私保護(hù),但是該方案策略表達(dá)方式受限。為了提高隱藏策略CP-ABE 方案的解密效率,Zhang 等人[12]設(shè)計了一種策略隱藏CP-ABE解決方案,在完全解密之前執(zhí)行屬性匹配操作,使用特有的密文組件來測試屬性列表是否滿足隱藏的訪問策略,與完全解密相比,屬性匹配過程計算消耗更小,方案在DBDH 假設(shè)、D-Line 假設(shè)下具有選擇明文安全性。Zhou 等人[13]設(shè)計了一種隱藏策略的CP-ABE方案,方案可以將密文長度壓縮為常數(shù),支持AND 門策略并在q-type 假設(shè)下證明方案安全。為了提高策略的表現(xiàn)力,Xiong 等人[14]設(shè)計了一種支持LSSS 接入結(jié)構(gòu)的策略隱藏廣播加密方案,但是該方案中存在較多的雙線性對計算,在執(zhí)行過程中用戶需要耗費大量的計算資源。Zhang等人[15]使用隱藏訪問策略的CP-ABE 實現(xiàn)了對個人健康記錄數(shù)據(jù)的細(xì)粒度訪問控制,并且支持大規(guī)模屬性集合,方案中公共參數(shù)的大小和解密成本都是恒定的。Zeng 等人[16]在醫(yī)療物聯(lián)網(wǎng)(internet of medical things,IoMT)生態(tài)環(huán)境下提出一種有效的部分策略隱藏和支持大屬性宇宙的ABE方案,只顯示非敏感屬性而將敏感屬性隱藏,且該方案對于任何的公開解密密鑰的用戶都可以進(jìn)行有效的追蹤。Liu等人[17]使用線性秘密共享方案隱藏部分策略,利用多權(quán)限抵抗用戶之間聯(lián)合通信造成的共謀攻擊,保護(hù)IoT環(huán)境下數(shù)據(jù)的隱私安全。
在現(xiàn)有ABE 方案中,密文大小和解密成本隨著屬性策略的復(fù)雜性而增加,因此,2011 年,Green 等人[18]首次提出外包ABE 方案,將復(fù)雜的ABE 解密計算交給第三方云服務(wù)器進(jìn)行外包解密,極大地降低了用戶端解密過程的計算量。由于第三方云服務(wù)器不是完全可信,所以外包解密結(jié)果的正確性需要進(jìn)行驗證。Lai等人[19]提出一種支持外包解密驗證的ABE 方案,在密文中引入驗證元素,根據(jù)用戶密鑰生成重加密密鑰,將重加密密鑰發(fā)送給第三方云服務(wù)器進(jìn)行解密,并設(shè)計了一種驗證外包結(jié)果的方法。Qin等人[20]提出一種將任何具有外包解密的ABE 方案轉(zhuǎn)換化成具有可驗證的外包解密的ABE方案,通過第三方將屬性密文轉(zhuǎn)化為更短的密文,并具有可驗證性。李聰?shù)热薣21]提出可追責(zé)、可驗證的外包解密CP-ABE 方案,可對用戶密鑰泄露問題進(jìn)行追責(zé),通過轉(zhuǎn)移密鑰的方法實現(xiàn)外包可驗證方案,并在標(biāo)準(zhǔn)模型中證明該方案的安全性。Fan等人[22]在物聯(lián)網(wǎng)環(huán)境下提出一種策略隱藏外包解密的CP-ABE方案,利用單向匿名密鑰協(xié)議將屬性匿名化實現(xiàn)策略隱藏,采用霧節(jié)點輔助的可驗證外包解密,減少用戶計算的復(fù)雜性。Guo 等人[23]提出應(yīng)用于無線體感網(wǎng)絡(luò)的輕量級可驗證的CP-ABE 方案,為用戶提供了外包解密的正確性驗證,并且密文大小恒定。Zhao等人[24]在霧計算場景中構(gòu)建了電子健康細(xì)粒度訪問控制系統(tǒng)(access control system in fog-enabled e-health,AC-FEH),利用霧節(jié)點進(jìn)行數(shù)據(jù)加解密操作,將數(shù)據(jù)擁有者和用戶的計算成本最小化,并且證明了在q-parallel bilinear Diffie-Hellman exponent(BDHE)假設(shè)下證明了系統(tǒng)底層CP-ABE 方案的選擇性安全。
本章介紹了雙線性映射的形式定義,然后描述了方案中基于的困難問題、訪問結(jié)構(gòu)和聯(lián)盟鏈中背書策略的相關(guān)知識。
設(shè)q是一個大素數(shù),G1和GT是兩個階為p的乘法循環(huán)群,g是G1上的一個生成元,其雙線性映射[25]e?:G1×G1→GT滿足以下性質(zhì)。
(1)雙線性:對于任意的a,b∈Z*p,始終有e?(ga,gb)=e?(g,g)ab成立。
(2)非退化性:e?(g,g)≠1。
(3)可計算性:對于群G1中的任意兩個元素g1,g2,存在一個有效算法計算e?(g1,g2)。
判定性雙線性Diffie-Hellman 問題[26](DBDH 問題):G1和GT是兩個階為p的乘法循環(huán)群,且滿足雙線性映射e?:G1×G1→GT,g是G1的一個生成元,選取隨機數(shù)a,b,c,z∈Zp。給定五元組(g,ga,gb,gc,Z),其中Z∈GT,如果沒有一個算法能夠以不可忽略的優(yōu)勢在多項式時間內(nèi)區(qū)分Z=e?(g,g)abc或Z=e?(g,g)z,那么認(rèn)為DBDH問題是難解的。
本文基于聯(lián)盟鏈Hyperledger Fabric[27]平臺,為數(shù)據(jù)訪問者生成、存儲屬性電子證書。屬性授權(quán)中心以區(qū)塊鏈中的電子證書作為憑證,為數(shù)據(jù)訪問者生成屬性私鑰。屬性證書授權(quán)依賴于背書策略,該策略規(guī)定某些對等方需要背書才能將交易視為有效交易,每個認(rèn)可對等方都會根據(jù)策略評估智能合約中的請求,基于共識協(xié)議將交易標(biāo)記為接受或拒絕并在區(qū)塊鏈中提交。數(shù)據(jù)擁有者通過制定的背書策略參與用戶屬性證書授權(quán)過程。如圖1 所示,為背書交易過程,用戶向區(qū)塊鏈中的擁有數(shù)據(jù)的實體申請屬性證書,通過預(yù)先設(shè)定的背書策略把該申請發(fā)送給一個或多個實體,并由實體中的背書節(jié)點對用戶的屬性信息進(jìn)行審核。每個認(rèn)可對等實體收到申請?zhí)嶙h后首先校驗客戶端簽名,確認(rèn)請求的有效性,然后在指定實體中的背書節(jié)點進(jìn)行處理,若該實體同意此申請,則對客戶端的申請?zhí)岚高M(jìn)行背書簽名并返回給客戶端,若不同意則不進(jìn)行背書簽名??蛻舳耸占降谋硶灻麧M足預(yù)先設(shè)定的背書策略,表示該申請已經(jīng)正確背書,則將申請信息發(fā)送給排序服務(wù)節(jié)點進(jìn)行排序,生成區(qū)塊,并將新的區(qū)塊廣播給其他節(jié)點進(jìn)行更新。若收集的背書簽名不滿足預(yù)先設(shè)定的背書策略,則該提案將被遺棄。
圖1 Hyperledger Fabric背書交易流程Fig.1 Hyperledger Fabric endorsement transaction process
本章主要介紹方案的系統(tǒng)模型、系統(tǒng)框架和安全模型。
如圖2 所示,AVOCB-ABE 系統(tǒng)模型中主要包括5個實體:云服務(wù)器(CSP)、聯(lián)盟鏈(CB)、屬性授權(quán)中心(AA)、數(shù)據(jù)使用者(DU)、數(shù)據(jù)擁有者(DO)。
圖2 AVOCB-ABE系統(tǒng)模型Fig.2 System model of AVOCB-ABE
屬性授權(quán)中心(AA):負(fù)責(zé)為整個系統(tǒng)初始化生成公共參數(shù)和主密鑰,根據(jù)數(shù)據(jù)使用者的屬性列表和區(qū)塊鏈中的屬性證書生成屬性密鑰,AA 是系統(tǒng)中完全可信實體。
聯(lián)盟鏈(CB):用于生成、存儲DU的屬性證書,在其共識機制的基礎(chǔ)上生成屬性證書編號CID,屬性授權(quán)中心在為用戶生成屬性密鑰前,需要在區(qū)塊鏈中驗證用戶的屬性證書;存儲外包驗證的哈希值。
云服務(wù)器(CSP):主要分為云存儲服務(wù)器和云計算服務(wù)器。云存儲服務(wù)器存儲數(shù)據(jù)擁有者生成的數(shù)據(jù)密文和區(qū)塊鏈生成的TxID;云計算服務(wù)器主要對用戶屬性和密文策略進(jìn)行屬性匹配、外包解密等計算。
數(shù)據(jù)擁有者(DO):參與聯(lián)盟鏈中屬性證書的授予;為擁有的數(shù)據(jù)制定背書策略;使用對稱密鑰加密數(shù)據(jù),定義執(zhí)行基于屬性的訪問策略,并通過訪問策略對對稱密鑰進(jìn)行加密,將數(shù)據(jù)密文和密鑰密文存儲到云服務(wù)器上。
數(shù)據(jù)使用者(DU):在聯(lián)盟鏈中選取需要訪問的數(shù)據(jù),按照數(shù)據(jù)的背書策略申請屬性證書;向云服務(wù)器發(fā)送訪問請求并要求進(jìn)行外包解密,下載部分解密密文,使用私鑰正確的恢復(fù)出數(shù)據(jù)。
本方案主要包括以下步驟。
(1)Setup(1λ)→(PK,MK):系統(tǒng)初始化算法,由屬性授權(quán)中心AA執(zhí)行,通過輸入安全參數(shù)λ,輸出公共參數(shù)PK和主私鑰MK。
(2)Encrypt(PK,M,W,K)→CTw:加密算法,由數(shù)據(jù)擁有者執(zhí)行,首先使用對稱加密對數(shù)據(jù)M加密,然后輸入公共參數(shù)PK、對稱密鑰K、訪問策略W,執(zhí)行基于屬性的訪問策略加密輸出密文CTw。
(3)AnonyAlg(ID,PKu,MK)→ID′:身份匿名化,由用戶和屬性授權(quán)中心AA 執(zhí)行,AA 接收用戶的ID,用戶公鑰PKu,系統(tǒng)主私鑰MK,輸出用戶的假名ID′,返回給用戶。
(4)AAKeyGen(PK,MK,L)→SKv,SK1,i:密鑰生成算法,由屬性授權(quán)中心AA 執(zhí)行生成部分密鑰,通過輸入公共參數(shù)PK、主私鑰MK、用戶屬性列表L,輸出屬性匹配密鑰SKv,部分外包解密密鑰SK1,i,并將SKv,SK1,i發(fā)送給DU。
(5)UserKeyGen(SKv,SK1,i,SKu,PK)→SKL:密鑰生成算法,由數(shù)據(jù)訪問者DU執(zhí)行。輸入屬性匹配密鑰SKv,部分外包解密密鑰SK1,i,用戶私鑰SKu,公共參數(shù)PK,生成完整屬性密鑰。
(6)AttMat ch(PK,CTw,SKv)→Vatt:屬性匹配算法,由云服務(wù)器CSP執(zhí)行,輸入公共參數(shù)PK,用戶屬性匹配密鑰SKv,密文CTw進(jìn)行屬性驗證,然后將驗證結(jié)果Vatt輸出。
(7)OutDec(PK,Vatt,CTw,SKo)→CT′ :外包解密算法,由云服務(wù)器CSP執(zhí)行,輸入公共參數(shù)PK,屬性匹配的結(jié)果Vatt,密文CTw,用戶外包解密密鑰SKo,然后輸出部分解密密文CT′。
(8)UserDec(CTw,CT′,PK,SKL)→K:用戶解密算法,由用戶DU執(zhí)行,接收到部分解密密文CT′,對外包解密結(jié)果進(jìn)行驗證。輸入公共參數(shù)PK,密文CTw,解密密鑰SKu,輸出對稱加密密鑰K,然后用對稱解密算法得出明文M。
(9)Trace(ID′,MK,T)→ID :追蹤算法,由AA 執(zhí)行,輸入用戶的假名ID′,表單T,主密鑰MK,輸出用戶的真實ID。
通過定義敵手的能力來表明隱藏訪問策略的CP-ABE 方案的安全需求,并定義了相應(yīng)的安全概念。在構(gòu)造的證明中使用選擇密文訪問策略和選擇明文攻擊下的不可區(qū)分性(indistinguishability against selective ciphertext-policy and chosen-plaintext attacks,IND-sCPCPA)的概念,可以將其稱為IND-sCP-CPA游戲,包括敵手A 和挑戰(zhàn)者B,具體游戲如下所示。
Init:敵手A 提交挑戰(zhàn)密文訪問策略W*0、W*1給挑戰(zhàn)者B。
Setup:挑戰(zhàn)者A 選擇足夠安全的參數(shù)λ,并運行Setup(1λ)算法生成公共參數(shù)PK和主私鑰MK,主私鑰MK由B 保存,將公共參數(shù)PK發(fā)送給敵手A。
階段1 敵手A 將屬性列表L發(fā)送給挑戰(zhàn)者B 進(jìn)行查詢,當(dāng)L|≠W*0∧L|≠W*1或L|=W*0∧L|=W*1時,挑戰(zhàn)者B 運行KeyGen(PK,MK,L)密鑰生成算法計算A 的密鑰SKL,并返回給A ;否則返回⊥。
階段2 與階段1相似。
猜測階段 敵手A 輸出對v的猜測v′∈{0,1} ,若v=v′則A 獲勝。
定義2 如果沒有敵手A 能夠以不可忽略的優(yōu)勢在多項式時間內(nèi)打破IND-sCP-CPA 游戲,那么認(rèn)為AVOCB-ABE方案是IND-sCP-CPA安全的。
本章主要描述了整個系統(tǒng)的交互流程和具體的算法構(gòu)造。
如圖3所示,本方案的執(zhí)行整體流程包含以下步驟:
圖3 方案流程Fig.3 Solution process
(1)在云計算環(huán)境下,AA 作為完全可信實體,執(zhí)行Setup操作初始化系統(tǒng)公共參數(shù)和系統(tǒng)主密鑰。
(2)DO根據(jù)系統(tǒng)公共參數(shù)、在系統(tǒng)的屬性范圍上定義的訪問策略對數(shù)據(jù)進(jìn)行加密,并指定區(qū)塊鏈中所涉及的實體設(shè)置背書策略,將用于外包驗證的哈希值存儲在區(qū)塊鏈上,并返回TxID。最后,DO把TxID和密文存儲在CSP中。
(3)DU 根據(jù)要訪問數(shù)據(jù)所涉及的實體發(fā)送屬性信息,區(qū)塊鏈利用背書策略對DU生成屬性證書和證書編號CID。
(4)DU 將ID、屬性列表L發(fā)送給AA。先對DU 的真實ID進(jìn)行匿名化處理,在系統(tǒng)中DU使用假名進(jìn)行操作。AA與區(qū)塊鏈交互驗證用戶的屬性證書和編號CID是否存在。若存在,執(zhí)行KeyGen生成部分密鑰,發(fā)送給DU,由DU在客戶端生成完整屬性密鑰。
(5)DU 利用TxID 在CSP 中查找密文,發(fā)送屬性匹配密鑰和外包解密密鑰,CSP將用戶的屬性信息和密文訪問策略進(jìn)行驗證,若驗證成功,則進(jìn)行外包解密,將外包解密結(jié)果返回給DU。
(6)DU對外包結(jié)果進(jìn)行驗證,若外包結(jié)果正確,DU使用私鑰對外包結(jié)果解密獲得明文。
(7)若云計算環(huán)境中用戶存在惡意行為,AA可以通過Trace恢復(fù)出用戶真實ID,查明用戶身份。
本文提出了一種AVOCB-ABE方案,具有用戶身份可追蹤、策略隱藏、屬性匹配、可外包等特點,具體如下:
(1)Setup(1λ)→(PK,MK):G,GT為兩個階為大素數(shù)p的乘法循環(huán)群,g是G的一個生成元,e?:G×G→GT是一個雙線性映射,定義映射函數(shù):H1:{0,1}*→Z*p,H2:GT→Z*p。假設(shè)系統(tǒng)中有n個屬性,其屬性集U={ω1,ω2,…,ωn},且每個屬性有多個取值,第i個屬性ωi有ni個屬性值,Si={vi,1,vi,2,…,vi,ni}為屬性ωi的多值集且|Si|=ni;選擇隨機數(shù)α,β∈Z*p,h∈G,計算Y=e?(g,h)α,X=e?(g,g)αβ,P=gβ;公共參數(shù)PK=<G,GT,e?,g,h,Y,X,P,H1,H2>,系統(tǒng)主私鑰MK=<α,β >。
(2)Encrypt(PK,M,W,K)→CTw:加密模塊分為對稱加密和屬性加密兩部分。
①對稱加密:DO選擇對稱加密算法加密明文M,計算CM=Enc(K,M)為對稱加密密文。
②屬性加密:DO將對稱密鑰按照訪問策略進(jìn)行屬性加密。設(shè)DO選擇屬性策略W={w1,w2,…,wn},且每個屬性有屬性值wi=vi,ni,并為每個屬性選取屬性值選擇隨機數(shù)s,s′∈Z*p,計算密文:
DU 將真實ID、公鑰發(fā)送給AA 計算協(xié)商密鑰R=(hut)β,生成假名ID′=ID⊕H(R)。建立表單T將用戶公鑰與假名一一對應(yīng)存儲。
(4)KeyGen(PK,MK,L)→SK:由AA 和DU 兩方共同構(gòu)造屬性密鑰,防止AA權(quán)力過大。
(6)Trace(ID′,MK,T)→ID:系統(tǒng)中若存在惡意用戶,將其公開的假名ID′發(fā)送給AA 申請追蹤,AA 通過ID′在表單T中查詢用戶公鑰,使用主密鑰MK計算協(xié)商密鑰R=(hut)β,恢復(fù)出用戶真實身份ID=ID′⊕H(R)。
定義3 方案AVOCB-ABE 在IND-sCP-CPA 模型下,在DBDH假設(shè)下,不存在敵手A 能夠以不可忽略的優(yōu)勢在多項式時間內(nèi)攻破本方案,則本方案是INDsCP-CPA安全的。
證明 挑戰(zhàn)者生成DBDH挑戰(zhàn),B是一個攻擊DBDH問題的多項式時間敵手,A 是攻擊本方案CTW*v的多項式時間敵手,B 利用A 來攻擊DBDH 問題,B 看作A的挑戰(zhàn)者。具體挑戰(zhàn)過程如下所示。
階段2 挑戰(zhàn)者B 按照階段1繼續(xù)進(jìn)行。
猜測階段 敵手A 輸出對β的猜測β′∈{0,1},若β′=β,B 輸出v′=0,Z=e?(g,g)abc;若β′≠β,B 輸出v′=1,Z=e?(g,g)z。等式與定義1 中敵手B 區(qū)分DBDH 兩個元組的優(yōu)勢相同。根據(jù)定義1 任何攻擊者無法以不可忽略的概率優(yōu)勢攻破DBDH 問題。因此,該方案中不存在敵手A能夠以不可忽略的優(yōu)勢在多項式時間內(nèi)打破IND-sCPCPA模型。
本章通過通信開銷、功能比較將現(xiàn)有方案和本文方案進(jìn)行了對比分析,利用PBC Go密碼學(xué)庫對方案進(jìn)行仿真。
表1 通信開銷對比Table 1 Comparison of communication overhead
如表2 所示,將本文方案與文獻(xiàn)[19]方案、文獻(xiàn)[12]方案、文獻(xiàn)[20]方案、文獻(xiàn)[24]方案進(jìn)行了比較,在保護(hù)敏感屬性方面,只有文獻(xiàn)[12]方案和本文方案實現(xiàn)了策略隱藏,保護(hù)用戶隱私。在屬性匹配方面,只有文獻(xiàn)[12]方案和本文方案對用戶屬性和訪問策略進(jìn)行了預(yù)先匹配。在外包方面,文獻(xiàn)[19]方案、文獻(xiàn)[20]方案、文獻(xiàn)[24]方案和本文方案實現(xiàn)了外包解密,將復(fù)雜的解密運算外包給云服務(wù)器,減少用戶端計算開銷,但文獻(xiàn)[24]方案在外包解密后無法對外包結(jié)果進(jìn)行正確性驗證。本文將外包結(jié)果與在區(qū)塊鏈中存儲數(shù)據(jù)進(jìn)行對比,確保云服務(wù)器外包的正確性。綜上所述本方案具有更加豐富的功能。
表2 功能和用戶解密效率比較Table 2 Comparison of functions and user decryption efficiency
該方案使用Golang1.15.6 Linux/amd64 版本和Goland編譯器,引入PBC Go[28]密碼庫對算法進(jìn)行仿真實現(xiàn),其中采用了PBC Go 庫中具有160 位階的A 型橢圓曲線參數(shù)。該仿真是在處理器為Intel?Core?i7-8850H CPU 2.59 GHz 和16.0 GB RAM 的筆記本電腦上,基于Ubuntu 18.04-amd64的系統(tǒng)上進(jìn)行。方案中各個運算所消耗的時間如表3所示,其中Te表示一次雙線性運算的時間,Tp表示一次指數(shù)運算的時間,Tm表示一次點乘的運算時間,Th表示一次從{0,1}*符串映射到Z*p上的哈希運算時間。
表3 各個運算運行時間Table 3 Running time of different operations
針對本方案主要仿真了加密、密鑰生成、屬性匹配、外包解密、用戶解密階段的計算成本和屬性密鑰大小。如圖4(a)~(f)所示,測試將屬性個數(shù)從0 遞增到100,隨著屬性個數(shù)增加計算各部分算法所消耗的時間。如圖4(a)所示,當(dāng)密文中的屬性策略達(dá)到100 個時,數(shù)據(jù)擁有者最多使用480 ms對數(shù)據(jù)進(jìn)行加密。如圖4(b)所示,是AA為用戶生成屬性密鑰的運算時間,AA最多需要730 ms為具有100個屬性的用戶生成密鑰。如圖4(c)所示,將用戶屬性密鑰和密文中隱藏的屬性進(jìn)行匹配,最多耗時140 ms。如圖4(d)所示,在第三方云服務(wù)器中進(jìn)行外包解密得到部分解密密文,隨著密文中屬性個數(shù)增加外包解密最多耗時138 ms。如圖4(e)所示,將部分解密結(jié)果返回給用戶,在用戶端進(jìn)行解密,解密所耗費的時間為0.84 ms,并且解密時間恒定,與屬性個數(shù)無關(guān)。如圖4(f)所示,AA為用戶生成的密鑰大小恒定,長度為4|G|+|Zp*|,不隨著屬性個數(shù)的增加而變大。
圖4 方案各部分計算和通信成本Fig.4 Computation and communication cost of each part of scheme
本文使用聯(lián)盟鏈Hyperledger Fabric 進(jìn)行仿真,各數(shù)據(jù)擁有實體作為聯(lián)盟鏈組織或節(jié)點,為DU 生成、存儲屬性證書,并生成證書編號。
在Hyperledger Fabric 的基礎(chǔ)網(wǎng)絡(luò)中創(chuàng)建3 個組織(Org1,Org2,Org3),組織中的不同節(jié)點可以代表不同的實體。在實例化鏈碼過程中根據(jù)鏈碼的功能需要編寫背書策略,屬性證書提交時進(jìn)行背書的實體節(jié)點由交易所屬的鏈碼和鏈碼所定義的背書策略共同決定。
如圖5 所示,利用程序啟動Hyperledger Fabric 網(wǎng)絡(luò),根據(jù)配置文件進(jìn)行初始化、創(chuàng)建通道、節(jié)點加入通道、安裝鏈碼、實例化鏈碼、創(chuàng)建客戶端、啟動Web 服務(wù)等操作,在網(wǎng)頁中可視化的對區(qū)塊鏈中的數(shù)據(jù)進(jìn)行添加、查詢等操作。
圖5 啟動Hyperledger Fabric網(wǎng)絡(luò)Fig.5 Start Hyperledger Fabric network
如圖6、7 所示,對用戶的屬性進(jìn)行添加操作,添加成功后返回證書編號(圖6中的交易ID),利用屬性證書ID 對該屬性證書的內(nèi)容進(jìn)行查詢,從區(qū)塊鏈中查詢返回屬性證書內(nèi)容。
圖6 創(chuàng)建屬性證書Fig.6 Create attribute certificates
圖7 查詢屬性證書Fig.7 Query attribute certificates
本文構(gòu)建了一種高效、策略隱藏、可外包計算的CP-ABE 訪問控制方案,解決云計算環(huán)境中數(shù)據(jù)的存儲、共享的訪問控制和安全問題。為了防止屬性授權(quán)機構(gòu)權(quán)力過大,用戶完整屬性密鑰由屬性授權(quán)機構(gòu)和用戶共同生成。解密階段引入屬性匹配技術(shù),測試屬性私鑰與密文中隱藏的訪問策略是否匹配,通過可驗證外包解密算法,降低用戶終端的計算代價?;趨^(qū)塊鏈共識機制生成屬性證書,通過設(shè)置背書策略有效的使數(shù)據(jù)擁有者參與到訪問證書授權(quán)的過程中。在隨機諭言模型下證明選擇性密文策略和選擇明文攻擊的安全性,利用PBC Go密碼學(xué)庫對方案算法進(jìn)行效率分析,并使用區(qū)塊鏈對方案中屬性證書的生成、存儲進(jìn)行了仿真驗證。