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