董江濤,閆沛文,杜瑞忠
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;2.河北大學(xué)網(wǎng)絡(luò)空間安全與計(jì)算機(jī)學(xué)院,河北 保定 071002)
云計(jì)算能夠?qū)⒕薮蟮臄?shù)據(jù)計(jì)算處理程序分解,然后通過(guò)服務(wù)器組成的系統(tǒng)進(jìn)行處理并將結(jié)果返回給用戶(hù),在較短時(shí)間內(nèi)完成對(duì)龐大數(shù)據(jù)的處理,但其提供的資源集中在用戶(hù)的核心網(wǎng)絡(luò)中,在用戶(hù)與云交互信息時(shí)會(huì)產(chǎn)生時(shí)延較高的問(wèn)題。隨著用戶(hù)對(duì)低時(shí)延的需求越來(lái)越高,霧計(jì)算作為云計(jì)算的延伸被提出[1]。與云計(jì)算相比,霧計(jì)算更側(cè)重于以分布式方式部署應(yīng)用程序與服務(wù),將云服務(wù)與靠近網(wǎng)絡(luò)邊緣的分布式資源相結(jié)合,使存儲(chǔ)和數(shù)據(jù)處理等貼近網(wǎng)絡(luò)邊緣設(shè)備,可以提供外包計(jì)算、資源分配和緩存等多種服務(wù)[2-4],有效緩解云計(jì)算中存在的時(shí)延問(wèn)題,并廣泛應(yīng)用在智能醫(yī)療、智慧城市等多個(gè)領(lǐng)域中[5-6]。
霧計(jì)算更貼近終端用戶(hù),數(shù)據(jù)中包含大量用戶(hù)隱私信息,一旦發(fā)生數(shù)據(jù)泄露事件,將嚴(yán)重影響用戶(hù)隱私。同時(shí),為了保證數(shù)據(jù)只允許具有訪(fǎng)問(wèn)控制權(quán)限的用戶(hù)查看,建立一種訪(fǎng)問(wèn)控制方案是必要的,如果采取傳統(tǒng)的基于角色的訪(fǎng)問(wèn)控制方案[7],用戶(hù)需要通過(guò)角色去訪(fǎng)問(wèn)數(shù)據(jù),授權(quán)形式單一。為每一個(gè)訪(fǎng)問(wèn)用戶(hù)分配角色與之對(duì)應(yīng)的權(quán)限,對(duì)于用戶(hù)數(shù)量龐大的霧計(jì)算來(lái)說(shuō),分配角色與其對(duì)應(yīng)權(quán)限的工作量是巨大的,并且僅通過(guò)角色去授予訪(fǎng)問(wèn)控制權(quán)限是粗粒度的,因此設(shè)計(jì)一種霧計(jì)算環(huán)境下高效、細(xì)粒度的訪(fǎng)問(wèn)控制方案是必要的[8]?;诿芪牟呗缘膶傩约用埽–P-ABE,ciphertext policy attribute based encryption)技術(shù)可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的細(xì)粒度訪(fǎng)問(wèn)控制,其密文與密鑰都與用戶(hù)的屬性相關(guān),數(shù)據(jù)擁有者可以根據(jù)用戶(hù)的特征信息制定出由屬性集合構(gòu)成的加密策略,只有當(dāng)用戶(hù)的屬性集合滿(mǎn)足加密策略中的屬性要求時(shí)才能對(duì)數(shù)據(jù)進(jìn)行解密。靈活的訪(fǎng)問(wèn)權(quán)限授予能夠適用于霧計(jì)算環(huán)境,并保護(hù)數(shù)據(jù)的安全,但效率不高的問(wèn)題仍然制約了其發(fā)展與應(yīng)用。在基于配對(duì)的密碼協(xié)議中,與標(biāo)量乘法相比,雙線(xiàn)性配對(duì)被認(rèn)為是開(kāi)銷(xiāo)最大、耗時(shí)最長(zhǎng)的運(yùn)算,實(shí)驗(yàn)表明,在同一橢圓曲線(xiàn)下,雙線(xiàn)性配對(duì)操作的計(jì)算開(kāi)銷(xiāo)比標(biāo)量乘法的計(jì)算開(kāi)銷(xiāo)大2~3 倍。因此減少雙線(xiàn)性配對(duì)的計(jì)算次數(shù)能夠有效地提升CP-ABE的效率。為了減小用戶(hù)的解密計(jì)算開(kāi)銷(xiāo),研究者提出了外包解密的概念。解密算法中先使用轉(zhuǎn)換密鑰將密文轉(zhuǎn)換為部分密文,且無(wú)法通過(guò)外包解密算法獲取明文數(shù)據(jù),再交由用戶(hù)進(jìn)行解密,這樣用戶(hù)僅需要較小的計(jì)算開(kāi)銷(xiāo)便可以獲取明文數(shù)據(jù)。然而將解密外包后不能確保轉(zhuǎn)換后密文的有效性,當(dāng)外包解密機(jī)構(gòu)不可信時(shí),可能會(huì)篡改轉(zhuǎn)換后密文,因此,對(duì)于外包解密的訪(fǎng)問(wèn)控制方案,驗(yàn)證轉(zhuǎn)換后的密文是有必要的。而現(xiàn)有方案往往需要建立可信第三方,這需要高額的信任建立成本,且存在單點(diǎn)故障問(wèn)題。為了解決上述問(wèn)題,本文提出了一種霧計(jì)算中基于無(wú)配對(duì)CP-ABE 可驗(yàn)證的訪(fǎng)問(wèn)控制方案。
結(jié)合霧計(jì)算的特點(diǎn),本文建立了云-霧-用戶(hù)分層的訪(fǎng)問(wèn)控制架構(gòu),用戶(hù)通過(guò)霧節(jié)點(diǎn)與云進(jìn)行交互。基于密文策略的屬性加密技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的機(jī)密性和細(xì)粒度訪(fǎng)問(wèn)控制,用線(xiàn)性秘密共享方案(LSSS,linear secret sharing scheme)構(gòu)建訪(fǎng)問(wèn)結(jié)構(gòu)來(lái)增強(qiáng)訪(fǎng)問(wèn)策略的表達(dá)能力,使只有滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)的用戶(hù)才能對(duì)數(shù)據(jù)進(jìn)行訪(fǎng)問(wèn)。利用橢圓曲線(xiàn)加密中的簡(jiǎn)單標(biāo)量乘法代替雙線(xiàn)性配對(duì)計(jì)算,提升方案整體效率,并設(shè)計(jì)安全高效的外包解密方案,將解密中的部分計(jì)算外包給霧節(jié)點(diǎn),減少數(shù)據(jù)用戶(hù)的計(jì)算負(fù)擔(dān)。因?yàn)閰^(qū)塊鏈技術(shù)是理想的防止數(shù)據(jù)篡改的方法,在霧節(jié)點(diǎn)部署區(qū)塊鏈,一方面利用區(qū)塊鏈技術(shù)為霧計(jì)算提供可信和安全的環(huán)境,另一方面通過(guò)霧節(jié)點(diǎn)為區(qū)塊鏈提供計(jì)算資源和存儲(chǔ)能力。通過(guò)區(qū)塊鏈記錄整個(gè)訪(fǎng)問(wèn)授權(quán)的流程,以達(dá)到可溯源的目的,并對(duì)整個(gè)訪(fǎng)問(wèn)事務(wù)進(jìn)行正確性驗(yàn)證以防被惡意篡改。對(duì)方案進(jìn)行仿真實(shí)驗(yàn)對(duì)比,實(shí)驗(yàn)結(jié)果表明用戶(hù)解密時(shí)間消耗較小且穩(wěn)定,整體計(jì)算效率更高。
本文主要的研究工作如下。
1) 建立云-霧-用戶(hù)分層的訪(fǎng)問(wèn)控制架構(gòu),并將區(qū)塊鏈節(jié)點(diǎn)部署在霧層的霧節(jié)點(diǎn)設(shè)備中,一方面利用區(qū)塊鏈技術(shù)為霧計(jì)算提供可信和安全的環(huán)境,另一方面通過(guò)霧節(jié)點(diǎn)為區(qū)塊鏈提供計(jì)算資源和存儲(chǔ)能力。利用區(qū)塊鏈來(lái)記錄整個(gè)訪(fǎng)問(wèn)控制的流程,使其不會(huì)被惡意篡改,保護(hù)數(shù)據(jù)安全。
2) 利用橢圓曲線(xiàn)加密中的簡(jiǎn)單標(biāo)量乘法代替雙線(xiàn)性配對(duì)計(jì)算,提高了CP-ABE 算法效率,并結(jié)合外包解密思想,將解密操作外包給霧節(jié)點(diǎn)運(yùn)行,充分利用了霧節(jié)點(diǎn)的計(jì)算能力,使用戶(hù)解密操作的計(jì)算開(kāi)銷(xiāo)較小且恒定。本文方案的效率更高,且更適用于設(shè)備計(jì)算能力受限的霧計(jì)算環(huán)境。
3) 對(duì)本文方案進(jìn)行安全性分析,建立敵手游戲模型,結(jié)果表明該方案滿(mǎn)足明文攻擊安全。通過(guò)性能分析與仿真實(shí)驗(yàn)分析,驗(yàn)證了本文方案在滿(mǎn)足安全性前提下效率更高。
2007 年,Bethencourt 等[9]首次提出CP-ABE 方案,基于雙線(xiàn)性對(duì)使數(shù)據(jù)加密與訪(fǎng)問(wèn)控制結(jié)合,并支持正負(fù)屬性與門(mén)限訪(fǎng)問(wèn)結(jié)構(gòu),之后被廣泛應(yīng)用于云存儲(chǔ)環(huán)境中數(shù)據(jù)的細(xì)粒度訪(fǎng)問(wèn)控制[10-11]。以上方案都采用單一授權(quán)中心為系統(tǒng)生成密鑰并且管理屬性,存在單點(diǎn)故障問(wèn)題。因此Lewko 等[12]提出了多權(quán)威機(jī)構(gòu)的CP-ABE 方案,且不需要屬性權(quán)威機(jī)構(gòu)進(jìn)行協(xié)作。Horvath[13]為了增加系統(tǒng)靈活性,在多權(quán)威機(jī)構(gòu)的CP-ABE 方案的基礎(chǔ)上,實(shí)現(xiàn)了基于身份的撤銷(xiāo)。Hur[14]改進(jìn)了撤銷(xiāo)方案,支持對(duì)每個(gè)用戶(hù)的屬性集進(jìn)行直接撤銷(xiāo),并在文獻(xiàn)[15]的方案中進(jìn)行了使用。Wang 等[16]解決了CP-ABE 方案中的密鑰托管問(wèn)題,增強(qiáng)了屬性表達(dá)能力。Li 等[17]提出的方案對(duì)外包密文正確性進(jìn)行了驗(yàn)證,將驗(yàn)證過(guò)程在解密前執(zhí)行,并且為授權(quán)用戶(hù)與未授權(quán)用戶(hù)檢查外包密文的正確性,但方案中需要指定2種訪(fǎng)問(wèn)控制策略。Zhang 等[18]提出一種可追溯的多權(quán)威機(jī)構(gòu)CP-ABE方案,該方案可以根據(jù)跟蹤算法識(shí)別出泄露解密密鑰的惡意用戶(hù),并降低跟蹤的存儲(chǔ)成本?,F(xiàn)有CP-ABE 方案中包含了線(xiàn)性對(duì)配對(duì)計(jì)算與求冪計(jì)算,極大地限制了在計(jì)算能力受限的邊緣設(shè)備中的使用。
基于配對(duì)的密碼協(xié)議的效率取決于配對(duì)計(jì)算的速度,因此,為了提高效率,學(xué)者做了大量的研究工作。對(duì)于如何優(yōu)化ECC 協(xié)議,F(xiàn)reeman 等[19]對(duì)橢圓曲線(xiàn)進(jìn)行了分類(lèi),并介紹了其構(gòu)造和一些優(yōu)化技術(shù)。Scott[20]分析了如何改進(jìn)配對(duì)操作來(lái)提升屬性加密的效率。Simon 等[21]對(duì)橢圓曲線(xiàn)密碼中的標(biāo)量乘法進(jìn)行了研究,為了進(jìn)一步減少用戶(hù)計(jì)算將復(fù)雜操作進(jìn)行外包計(jì)算。Chevallier-mames 等[22]提出了一種外包計(jì)算的訪(fǎng)問(wèn)控制方案,將雙線(xiàn)性配對(duì)計(jì)算操作進(jìn)行外包,但該方案的服務(wù)器并不是完全可信的。Chen 等[23]的方案在此基礎(chǔ)上進(jìn)行改進(jìn),使系統(tǒng)的計(jì)算開(kāi)銷(xiāo)進(jìn)一步降低,但方案中所提安全模型并不具備現(xiàn)實(shí)基礎(chǔ)。為了從本質(zhì)上優(yōu)化CP-ABE算法,Odelu 等[24]提出了一種具有恒定密鑰大小的CP-ABE 方案,使用橢圓曲線(xiàn)密碼學(xué)技術(shù)避免了雙線(xiàn)性配對(duì)的計(jì)算開(kāi)銷(xiāo),但該方案用門(mén)限方法構(gòu)建訪(fǎng)問(wèn)結(jié)構(gòu),制約了其可拓展性。
區(qū)塊鏈?zhǔn)且环N具有去中心化,并保護(hù)數(shù)據(jù)完整性、有效性和真實(shí)性的技術(shù),眾多學(xué)者將CP-ABE與區(qū)塊鏈技術(shù)相結(jié)合來(lái)開(kāi)展一系列工作。Maesa 等[25]的方案將區(qū)塊鏈技術(shù)與基于屬性的訪(fǎng)問(wèn)控制模型相結(jié)合,使用區(qū)塊鏈代替?zhèn)鹘y(tǒng)的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)策略,并以事務(wù)的形式對(duì)訪(fǎng)問(wèn)策略進(jìn)行管理,能夠防止任何一方否認(rèn)策略的真實(shí)性。Dagher 等[26]基于區(qū)塊鏈的框架提出了針對(duì)電子病歷的訪(fǎng)問(wèn)控制方案,使病歷在被有效訪(fǎng)問(wèn)的同時(shí)保護(hù)了患者的敏感信息,并使用加密的方法實(shí)現(xiàn)區(qū)塊鏈中數(shù)據(jù)的隱私性。但該方案中采用了PoW 共識(shí)機(jī)制,在保持區(qū)塊鏈一致性時(shí)計(jì)算開(kāi)銷(xiāo)過(guò)于龐大。Dorri 等[27]提出了一種用于智能家居設(shè)備間訪(fǎng)問(wèn)控制的私有區(qū)塊鏈方案。具體來(lái)說(shuō),訪(fǎng)問(wèn)策略存儲(chǔ)在塊頭部,而訪(fǎng)問(wèn)操作、設(shè)備添加和刪除記錄存儲(chǔ)在塊體中。謝絨娜等[28]提出了一種基于區(qū)塊鏈的可溯源訪(fǎng)問(wèn)控制機(jī)制,將客體存儲(chǔ)在鏈下數(shù)據(jù)服務(wù)器,通過(guò)鏈上與鏈下相結(jié)合的方式,實(shí)現(xiàn)了對(duì)客體訪(fǎng)問(wèn)授權(quán)與訪(fǎng)問(wèn)過(guò)程的記錄。應(yīng)作斌等[29]針對(duì)電子健康檔案中密鑰管理及用戶(hù)身份追溯問(wèn)題,結(jié)合變色龍哈希與零知識(shí)證明技術(shù)完成區(qū)塊鏈節(jié)點(diǎn)的注冊(cè)與身份認(rèn)證,并結(jié)合屬性加密技術(shù)實(shí)現(xiàn)了完全細(xì)粒度的訪(fǎng)問(wèn)控制。
綜上所述,傳統(tǒng)的訪(fǎng)問(wèn)控制方案效率較低,雙線(xiàn)性配對(duì)計(jì)算開(kāi)銷(xiāo)大。為此本文提出了霧計(jì)算中基于無(wú)配對(duì)CP-ABE 可驗(yàn)證的訪(fǎng)問(wèn)控制方案,在保障安全的前提下,提升了加解密效率。
區(qū)塊鏈?zhǔn)欠植际焦蚕碣~本,具有抗偽造、可溯源、去中心化等特征,能夠在不信任的實(shí)體之間建立信任關(guān)系。聯(lián)盟區(qū)塊鏈由預(yù)選的節(jié)點(diǎn)組成,且每個(gè)塊的生成由所有的預(yù)選節(jié)點(diǎn)共同決定。
1) 數(shù)據(jù)結(jié)構(gòu)。每個(gè)數(shù)據(jù)塊都由一個(gè)塊頭和一個(gè)塊體組成,其中塊頭包含前一個(gè)區(qū)塊的哈希值、一組元數(shù)據(jù)、Merkle 根。通過(guò)哈希值鏈接前一區(qū)塊;一組元數(shù)據(jù)表示難度、時(shí)間戳與隨機(jī)數(shù),包含區(qū)塊生成過(guò)程的信息;Merkle 根總結(jié)區(qū)塊鏈中所有交易的數(shù)據(jù)結(jié)構(gòu)。塊體則包含交易的詳細(xì)信息。為了保證聯(lián)盟區(qū)塊鏈具有防篡改、完整性,主要使用的密碼學(xué)算法有哈希算法與數(shù)字簽名算法。
2) 共識(shí)協(xié)議。共識(shí)協(xié)議在區(qū)塊鏈的節(jié)點(diǎn)之間定義一個(gè)公共規(guī)則來(lái)生成新的區(qū)塊。目前,較主流的算法有PoS、PoWer、DPoS、PBFT 等,每種算法都有各自的優(yōu)缺點(diǎn)并適用于不同場(chǎng)景。聯(lián)盟區(qū)塊鏈相較于公有區(qū)塊鏈弱化了中心化,根據(jù)節(jié)點(diǎn)的準(zhǔn)入機(jī)制,賦予節(jié)點(diǎn)信任值,所以更傾向于使用PBFT、DPoS 共識(shí)機(jī)制。
3) 智能合約。智能合約是以信息化方式傳播執(zhí)行合約的一種計(jì)算機(jī)協(xié)議,區(qū)塊鏈的出現(xiàn)為智能合約提供了安全的運(yùn)行環(huán)境,被集成到以太坊中,所有節(jié)點(diǎn)協(xié)商的智能合約通過(guò)交易廣播到區(qū)塊鏈中達(dá)成共識(shí),當(dāng)一個(gè)或多個(gè)預(yù)定義條件被觸發(fā)時(shí),智能合約可以自動(dòng)驗(yàn)證與執(zhí)行。
橢圓曲線(xiàn)密碼屬于公鑰密碼體制,基于橢圓曲線(xiàn)離散對(duì)數(shù)問(wèn)題的困難性,保證了其安全性。ECC與其他的公鑰密碼體制相比,系統(tǒng)參數(shù)與密鑰長(zhǎng)度較小,安全性較高。
橢圓曲線(xiàn)是一個(gè)系數(shù)和變?cè)荚谟邢抻騔p(p為有限域的階數(shù))的二元三次方程y2=x3+ax+b,記為Ep(a,b)。Ep(a,b)是由方程的全體解(x,y)與無(wú)窮遠(yuǎn)點(diǎn)O構(gòu)成的集合,x,y∈Zp是未知數(shù),a,b是系數(shù),并滿(mǎn)足4a3+27b2≠0。
橢圓曲線(xiàn)計(jì)算規(guī)則如下。
定義在一個(gè)多方集合的線(xiàn)性秘密分享方案∏在域Zp上是線(xiàn)性的。
1) 每一個(gè)參與共享的秘密數(shù)據(jù)可以在域Zp上形成向量。
2) 存在一個(gè)大小為l×n的矩陣M被命名為∏的共享生成矩陣,即存在一個(gè)l行n列的矩陣M為秘密共享方案∏的共享生成矩陣。對(duì)于所有i=1,…,l,存在函數(shù)ρ將矩陣M的第i行記作ρ(i)。選取隨機(jī)值構(gòu)成向量v=(s,r2,…,rn),其中s∈Zp是將要共享的秘密值,則Mv是根據(jù)∏得到的關(guān)于s的l個(gè)共享份額的向量形式,Mvi屬于實(shí)體參與方ρ(i)。
本文提出了一種霧計(jì)算中基于無(wú)配對(duì)CP-ABE可驗(yàn)證的訪(fǎng)問(wèn)控制方案,系統(tǒng)模型如圖1 所示,該模型主要由屬性授權(quán)機(jī)構(gòu)(AA,attribute authority)、云服務(wù)提供商(CSP,cloud service provider)、霧節(jié)點(diǎn)(FN,fog node)、數(shù)據(jù)擁有者(DO,data owner)、數(shù)據(jù)用戶(hù)(DU,data user)5 類(lèi)實(shí)體組成。
圖1 系統(tǒng)模型
AA 是完全受信任的一方,遵循協(xié)議規(guī)范來(lái)執(zhí)行任務(wù),對(duì)系統(tǒng)中的屬性進(jìn)行管理,且每個(gè)AA 所管理的屬性都不相同,主要負(fù)責(zé)用戶(hù)注冊(cè),為用戶(hù)綁定唯一的用戶(hù)標(biāo)識(shí)符UID,同時(shí)負(fù)責(zé)密鑰的生成與分發(fā),并維護(hù)所管理屬性的屬性列表。
CSP 提供數(shù)據(jù)存儲(chǔ)等方面的服務(wù),在本文方案中假設(shè)CSP 可信。
FN 提供計(jì)算、存儲(chǔ)等服務(wù),每個(gè)FN 都與CSP連接,負(fù)責(zé)將用戶(hù)提交的密文上傳到CSP,并負(fù)責(zé)密文的部分解密。在FN 建立區(qū)塊鏈,對(duì)訪(fǎng)問(wèn)事務(wù)的正確性驗(yàn)證并記錄訪(fǎng)問(wèn)授權(quán)過(guò)程。
DO 是有文件要上傳到云端存儲(chǔ)的用戶(hù),為文件定義訪(fǎng)問(wèn)結(jié)構(gòu),對(duì)文件進(jìn)行加密后上傳到FN,再由FN 上傳到CSP。
DU 是訪(fǎng)問(wèn)存儲(chǔ)在CSP 中的文件的用戶(hù),并不完全受到信任。只有數(shù)據(jù)用戶(hù)的屬性集滿(mǎn)足嵌入在給定密文中的訪(fǎng)問(wèn)結(jié)構(gòu)時(shí),才可以使用私鑰從密文中解密文件。
本文模型由系統(tǒng)初始化(Setup)、屬性授權(quán)機(jī)構(gòu)初始化(AASetup)、私鑰生成(KeyGen)、數(shù)據(jù)加密(Encypt)、數(shù)據(jù)解密(Decrypt)5 個(gè)算法構(gòu)成。
1) 系統(tǒng)初始化Setup(k1)→(PP,UID)。初始化階段輸入安全參數(shù)k進(jìn)行運(yùn)算獲得系統(tǒng)的全局參數(shù)PP 與用戶(hù)標(biāo)識(shí)符UID。
2) 屬性授權(quán)機(jī)構(gòu)初始化AASetup(PP)→(PK,MSK)。多個(gè)屬性授權(quán)機(jī)構(gòu)獨(dú)立運(yùn)行對(duì)屬性進(jìn)行管理,且每個(gè)機(jī)構(gòu)中的屬性不重復(fù)。同時(shí)負(fù)責(zé)系統(tǒng)內(nèi)密鑰的生成與分發(fā)。
3) 私鑰生成KeyGen(PP,MSK,S,UID)→(SKi,UID,TK,USK)。由屬性授權(quán)機(jī)構(gòu)運(yùn)行私鑰生成算法通過(guò)輸入全局參數(shù)PP、主密鑰MSK,以及屬性集合S,計(jì)算得到用戶(hù)的屬性私鑰SKi,UID,然后將其發(fā)送給用戶(hù)。用戶(hù)收到后根據(jù)屬性私鑰SKi,UID得到解密密鑰USK,并生成要交由霧節(jié)點(diǎn)外包計(jì)算的密鑰TK。在區(qū)塊鏈中為用戶(hù)與霧節(jié)點(diǎn)注冊(cè)數(shù)字簽名的公鑰與私鑰。
4) 數(shù)據(jù)加密Encrypt(PP,PK,(A,ρi),M)→(CT)。DO 先使用對(duì)稱(chēng)加密算法對(duì)數(shù)據(jù)M進(jìn)行加密,然后定義LSSS 訪(fǎng)問(wèn)結(jié)構(gòu)(A,ρi),其中A表示根據(jù)訪(fǎng)問(wèn)策略生成的訪(fǎng)問(wèn)控制矩陣,ρi表示矩陣A中屬性所對(duì)應(yīng)的行數(shù),然后計(jì)算生成密文CT發(fā)送給霧節(jié)點(diǎn)。
5) 數(shù)據(jù)解密 Decrypt(PP,PK,TK,USK,CT)→(M)。該算法包括2 個(gè)子算法:霧節(jié)點(diǎn)運(yùn)行外包解密算法FN.Decrypt 和用戶(hù)執(zhí)行本地子算法DU.Decrypt。
FN.Decrypt(PP,PK,TK,CT)→(CT')。霧節(jié)點(diǎn)收到用戶(hù)訪(fǎng)問(wèn)請(qǐng)求后,先從CSP 獲取密文CT,然后使用轉(zhuǎn)換密鑰TK 對(duì)其進(jìn)行解密操作,最后將結(jié)果發(fā)送到區(qū)塊鏈中進(jìn)行正確性驗(yàn)證。
DU.Decrypt(PP,PK,USK,CT')→(M)。當(dāng)區(qū)塊鏈對(duì)霧節(jié)點(diǎn)生成的訪(fǎng)問(wèn)事務(wù)進(jìn)行驗(yàn)證后,用戶(hù)將獲取轉(zhuǎn)換密文CT',然后使用其自定義的解密密鑰USK對(duì)密文進(jìn)行解密,獲取數(shù)據(jù)M。
本節(jié)描述了霧計(jì)算中基于區(qū)塊鏈的無(wú)配對(duì)CP-ABE 訪(fǎng)問(wèn)控制方案的具體結(jié)構(gòu),系統(tǒng)流程如圖2 所示。為了提高整個(gè)算法的性能,將復(fù)雜的雙線(xiàn)性配對(duì)操作替換為橢圓曲線(xiàn)上的簡(jiǎn)單標(biāo)量乘法,從而簡(jiǎn)化了計(jì)算。具體來(lái)說(shuō),數(shù)據(jù)擁有者首先用對(duì)稱(chēng)加密技術(shù)對(duì)密文進(jìn)行加密,然后使用盲因子sG加密對(duì)稱(chēng)密鑰ck,其中G為階是r的橢圓曲線(xiàn)循環(huán)群的生成器,s為Zp中的隨機(jī)數(shù),數(shù)據(jù)用戶(hù)需要將屬性密鑰與密文進(jìn)行計(jì)算才能夠消除盲因子sG。用戶(hù)的每個(gè)屬性都與身份標(biāo)識(shí)UID 綁定,如果用戶(hù)在解密時(shí)互相勾結(jié),則不能成功解密密文。在用戶(hù)上傳文件與訪(fǎng)問(wèn)階段,通過(guò)區(qū)塊鏈對(duì)訪(fǎng)問(wèn)事務(wù)中數(shù)據(jù)進(jìn)行正確性驗(yàn)證,并記錄訪(fǎng)問(wèn)事務(wù)Txupload與Txaccess,使數(shù)據(jù)上傳與訪(fǎng)問(wèn)數(shù)據(jù)的整個(gè)過(guò)程可溯源。
圖2 系統(tǒng)流程
階段1系統(tǒng)初始化Setup(k1)→(PP,UID)
輸入安全參數(shù)k,得到全局參數(shù)PP 與用戶(hù)標(biāo)識(shí)UID。同時(shí)構(gòu)建階為q的有限域GF(q),在有限域GF(q)中選取橢圓曲線(xiàn)E。選取哈希函數(shù)H:{0,1}→Zp,使用戶(hù)身份標(biāo)識(shí)UID 映射到Z中元素,并定義屬性集L={a1,a2,…,am},生成全局參數(shù)PP={GF(q),G,L,E,H}。
階段2屬性授權(quán)機(jī)構(gòu)初始化AASetup(PP,L)→(PK,MSK)
輸入全局參數(shù)PP,由系統(tǒng)中的多個(gè)屬性授權(quán)機(jī)構(gòu)共同運(yùn)行該初始化算法,每個(gè)授權(quán)機(jī)構(gòu)對(duì)屬性進(jìn)行管理,且每個(gè)授權(quán)中心所管理屬性都不相同,對(duì)屬性ai選取隨機(jī)數(shù)ki∈Zp,并維護(hù)與用戶(hù)標(biāo)識(shí)UID 對(duì)應(yīng)的屬性列表。生成系統(tǒng)公鑰PK 與主密鑰MSK。
階段3私鑰生成KeyGen(PP,MSK,S,UID)→(SKi,UID,TK,USK)
該算法由屬性授權(quán)機(jī)構(gòu)運(yùn)行,為用戶(hù)生成私鑰SKi,UID,表示身份標(biāo)識(shí)為UID 的用戶(hù)所包含屬性ai的屬性密鑰。屬性授權(quán)中心生成SKi,UID發(fā)送給對(duì)應(yīng)用戶(hù),之后用戶(hù)選取隨機(jī)數(shù)z,n∈Zp,得到用戶(hù)解密密鑰USK=j5i0abt0b,最后由用戶(hù)生成霧節(jié)點(diǎn)轉(zhuǎn)換密鑰TK。在用戶(hù)向霧節(jié)點(diǎn)提交訪(fǎng)問(wèn)申請(qǐng)時(shí),將TK 交由霧節(jié)點(diǎn)進(jìn)行外包解密計(jì)算,而用戶(hù)解密密鑰USK 由用戶(hù)自己保管,用來(lái)解密霧節(jié)點(diǎn)轉(zhuǎn)換后的密文。
階段4數(shù)據(jù)加密Encrypt (PP,PK,(A,ρi),M)→(CT)
數(shù)據(jù)擁有者在上傳文件前執(zhí)行該算法對(duì)數(shù)據(jù)文件進(jìn)行加密,輸入全局參數(shù)PP、系統(tǒng)公鑰PK,計(jì)算Cn=H(CT),當(dāng)用戶(hù)解密后用來(lái)驗(yàn)證解密的正確性;并根據(jù)訪(fǎng)問(wèn)控制策略定義LSSS 訪(fǎng)問(wèn)結(jié)構(gòu)(A,iρ),來(lái)限制用戶(hù)對(duì)文件的訪(fǎng)問(wèn)。其中,A表示l×m的訪(fǎng)問(wèn)矩陣,ρ(x)表示訪(fǎng)問(wèn)矩陣A中每一行所對(duì)應(yīng)的屬性。具體步驟如下:DO 定義一個(gè)LSSS 訪(fǎng)問(wèn)結(jié)構(gòu)(A,ρi),并隨機(jī)選取密鑰ck,利用對(duì)稱(chēng)加密算法對(duì)文件M進(jìn)行處理表示為Eck(M),并計(jì)算Cn=H(Eck(M))。然后用戶(hù)選取隨機(jī)值s∈Zp,計(jì)算得到C0=ck+sG。選取隨機(jī)向量,其中,v以選取的隨機(jī)值s為第一個(gè)元素,u以0 為第一個(gè)元素,計(jì)算得到λx=Axv與ωx=Axu,其中x∈[0,l],Ax表示訪(fǎng)問(wèn)矩陣的x行。對(duì)選取隨機(jī)數(shù)rx∈Zr,并計(jì)算得到{C1,x=λxG+rxkρ(x)G,C2,x=rxG,C3,x=ωxG},最后得到密文CT={(A,ρ),C0,Cn,Eck(M),{C1,x,C2,x,C3,x|?x∈[1,l]}},由用戶(hù)將CT 發(fā)送到霧節(jié)點(diǎn)由霧節(jié)點(diǎn)進(jìn)行上傳。
階段5區(qū)塊鏈上傳驗(yàn)證階段
因?yàn)橛脩?hù)并不直接與CSP 交互,在上傳文件時(shí)需要提交到霧節(jié)點(diǎn)進(jìn)行處理,為了使數(shù)據(jù)文件的整個(gè)上傳過(guò)程可溯源、抗偽造,用戶(hù)生成上傳事務(wù)Txupload={U,checkCode,sign},發(fā)送給CB 進(jìn)行驗(yàn)證,其中U表示上傳事務(wù)的標(biāo)識(shí)符,checkCode 表示密文的完整性校驗(yàn)碼,sign 表示用戶(hù)DO 在CB 上注冊(cè)的私鑰生成的數(shù)字簽名。checkCode 是通過(guò)哈希散列值算法生成的,任意節(jié)點(diǎn)都可以通過(guò)checkCode 驗(yàn)證密文的完整性。Sign 用來(lái)證明該上傳請(qǐng)求確實(shí)是由DO 發(fā)送的。
算法1生成上傳事務(wù)
輸入上傳事務(wù)的標(biāo)識(shí)符U,加密算法生成的密文CT,聯(lián)盟鏈CB 中記錄的用戶(hù)DO 的簽名私鑰BSKDO
輸出上傳事務(wù)Txupload
在生成Txupload后,將其廣播到CB 中的其他節(jié)點(diǎn)進(jìn)行驗(yàn)證,通過(guò)簽名來(lái)驗(yàn)證事務(wù)的有效性,計(jì)算校驗(yàn)碼驗(yàn)證密文有效性,確定其沒(méi)有被惡意節(jié)點(diǎn)篡改。通過(guò)比較接收到的Txupload生成的信息摘要MD'與使用DO 的公鑰BSKDO解密簽名生成的信息摘要MD,來(lái)驗(yàn)證Txupload的有效性。如果相等,則認(rèn)為T(mén)xupload是有效的。同時(shí)為了保證上傳密文的完整性,進(jìn)一步檢查信息摘要checkCode'與Txupload 中checkCode 是否相等,一旦通過(guò)驗(yàn)證并由共識(shí)機(jī)制達(dá)成共識(shí)后,就會(huì)被打包成一個(gè)區(qū)塊,再由霧節(jié)點(diǎn)將密文成功上傳。
算法2驗(yàn)證上傳事務(wù)
輸入Txupload={U,checkCode,sign},聯(lián)盟鏈CB 中記錄的用戶(hù)DO 的簽名公鑰BPKDO
輸出上傳事務(wù)Txstorage 與密文CT 的驗(yàn)證結(jié)果
階段6霧節(jié)點(diǎn)解密算法FN.Decrypt
當(dāng)數(shù)據(jù)用戶(hù)向霧節(jié)點(diǎn)申請(qǐng)?jiān)L問(wèn)數(shù)據(jù)時(shí),將轉(zhuǎn)換密鑰TK 發(fā)送給霧節(jié)點(diǎn),之后霧節(jié)點(diǎn)從云服務(wù)商獲取密文CT,運(yùn)行FN.Decrypt 算法,對(duì)密文CT 進(jìn)行轉(zhuǎn)換。FN.Decrypt(PP,PK,TK,CT)→(CT')。當(dāng)申請(qǐng)?jiān)L問(wèn)的用戶(hù)屬性能夠滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)時(shí),則存在一個(gè)常數(shù)集{,??梢韵韧ㄟ^(guò)以下計(jì)算得到參數(shù)Ax。
然后霧節(jié)點(diǎn)生成轉(zhuǎn)換密文 CT'={C0,Eck(M),D,D′},發(fā)送到CB 生成訪(fǎng)問(wèn)事務(wù)并進(jìn)行驗(yàn)證。
階段7區(qū)塊鏈訪(fǎng)問(wèn)驗(yàn)證階段
在區(qū)塊鏈?zhǔn)盏睫D(zhuǎn)換密文后,生成訪(fǎng)問(wèn)事務(wù)并進(jìn)行驗(yàn)證。霧節(jié)點(diǎn)從屬性授權(quán)機(jī)構(gòu)獲取到用戶(hù)當(dāng)前屬性,當(dāng)用戶(hù)的屬性滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)時(shí),便會(huì)存在一個(gè)常數(shù)集,所以用戶(hù)權(quán)限驗(yàn)證算法中,當(dāng)存在時(shí),表示用戶(hù)擁有該文件的訪(fǎng)問(wèn)權(quán)限。使用數(shù)據(jù)用戶(hù)轉(zhuǎn)換密鑰TK、轉(zhuǎn)換密文C′′與密文CT,以及用戶(hù)的簽名公鑰計(jì)算得到信息摘要,在驗(yàn)證過(guò)程中信息摘要能夠匹配時(shí),證明霧節(jié)點(diǎn)并沒(méi)有對(duì)訪(fǎng)問(wèn)事務(wù)中數(shù)據(jù)進(jìn)行篡改。因?yàn)檫@種模式,轉(zhuǎn)換密鑰以及密文的任何變化都會(huì)改變區(qū)塊鏈中相應(yīng)的哈希值,并且該系統(tǒng)中的所有實(shí)體都會(huì)感知到這些變化,因此可以達(dá)到防篡改的目的。
算法3生成訪(fǎng)問(wèn)事務(wù)
輸入訪(fǎng)問(wèn)事務(wù)標(biāo)識(shí)符Ac,聯(lián)盟鏈CB 中記錄的霧節(jié)點(diǎn)的簽名私鑰BSKFn,轉(zhuǎn)換密鑰TK 與密文CT
輸出訪(fǎng)問(wèn)事務(wù)Txaccess
驗(yàn)證數(shù)據(jù)用戶(hù)訪(fǎng)問(wèn)權(quán)限后,為數(shù)據(jù)用戶(hù)生成一個(gè)有效的訪(fǎng)問(wèn)事務(wù) Txaccess={Ac,checkCode,time,sign},其中Ac 表示識(shí)別訪(fǎng)問(wèn)事務(wù),checkCode 表示訪(fǎng)問(wèn)事務(wù)的信息摘要,time 表示Txaccess生成時(shí)的時(shí)間,sign 表示證明了該訪(fǎng)問(wèn)事務(wù)由哪個(gè)霧節(jié)點(diǎn)進(jìn)行解密計(jì)算。在訪(fǎng)問(wèn)事務(wù)有效生成后被打包成塊存儲(chǔ)在區(qū)塊鏈內(nèi),整個(gè)數(shù)據(jù)訪(fǎng)問(wèn)的參與者與數(shù)據(jù)將被記錄在內(nèi)且不可偽造,以達(dá)到可溯源的目的,之后霧節(jié)點(diǎn)將生成的外包解密密文發(fā)送給用戶(hù)。
算法4驗(yàn)證訪(fǎng)問(wèn)事務(wù)
輸入Txaccess={Ac,checkCode,time,sign},聯(lián)盟鏈CB 中記錄的用戶(hù)DU 的簽名公鑰BPKDU
輸出訪(fǎng)問(wèn)事務(wù)Txaccess驗(yàn)證結(jié)果
階段8用戶(hù)解密階段
DU.Decrypt(PP,PK,USK,CT')→(M)。用戶(hù)收到霧節(jié)點(diǎn)發(fā)送的轉(zhuǎn)換密文 CT'后,運(yùn)行算法DU.Decrypt 得到對(duì)稱(chēng)密鑰ck。
得到對(duì)稱(chēng)密鑰ck 后,通過(guò)對(duì)稱(chēng)解密算法將得到文件M。驗(yàn)證Cn=H(Eck(M))是否成立,成立則表示用戶(hù)解密得到的數(shù)據(jù)沒(méi)有被篡改。
本節(jié)主要分析所提方案在橢圓曲線(xiàn)的決策DBDH 假設(shè)下的安全性。
定理1如果概率多項(xiàng)式時(shí)間算法1 以不可忽略的優(yōu)勢(shì)ε>0破解本文提出的方案,那么算法2能夠區(qū)分一個(gè)DBDH 元組和一個(gè)隨機(jī)元組,并且優(yōu)勢(shì)為ε/2。
設(shè)G為以大素?cái)?shù)r為階、P為生成元的群,首先由挑戰(zhàn)者C 首先隨機(jī)選擇,β∈{0,1}與R∈P,當(dāng)β=1 時(shí)Z=abcG,否則Z=R。挑戰(zhàn)者C 發(fā)送一個(gè)元組(G,aG,bG,cGZ)給B,在下面的安全模型中由B 將扮演挑戰(zhàn)者。
A 和B 執(zhí)行如下操作。
初始化敵手A 先定義一個(gè)訪(fǎng)問(wèn)結(jié)構(gòu)(A*,iρ),將其交給挑戰(zhàn)者B。
系統(tǒng)設(shè)置為系統(tǒng)中的每個(gè)屬性ai創(chuàng)造公鑰來(lái)對(duì)抗A,挑戰(zhàn)者B 對(duì)系統(tǒng)進(jìn)行初始化,選擇隨機(jī)數(shù)ki∈Zr,生成PK={kiaG}。對(duì)每一個(gè)屬性ai,B 選擇隨機(jī)數(shù)n,v∈Zr,將nG、vG當(dāng)作系統(tǒng)的公鑰發(fā)布,并將公鑰發(fā)送給敵手A,其中公共參數(shù)時(shí)隨機(jī)分布的。
階段1A 向B 提交用戶(hù)標(biāo)識(shí)所對(duì)應(yīng)的屬性(ai,UID),用來(lái)請(qǐng)求用戶(hù)屬性所對(duì)應(yīng)的私鑰。對(duì)用戶(hù)的身份標(biāo)識(shí)UID,用TUID來(lái)標(biāo)識(shí)敵手A 要查詢(xún)的屬性ai在訪(fǎng)問(wèn)矩陣A*中的行子集,所請(qǐng)求的行子集TUID中不能包含(1,…,0),保證了攻擊者不能夠請(qǐng)求一組能夠解密的密鑰。B 隨機(jī)選擇t∈Zr,并計(jì)算tkia作為私鑰發(fā)送給敵手A。
挑戰(zhàn)階段A 向B 發(fā)送等長(zhǎng)的兩段信息m0和1m,B 選擇一個(gè)值S'∈Zr,選取參數(shù)β∈{0}1,,通過(guò)執(zhí)行加密算法算法對(duì)mβ進(jìn)行計(jì)算。B 構(gòu)造密文CTb,將產(chǎn)生C0=mβ+sG,選取隨機(jī)向量,其中v以選取的隨機(jī)值s為第一個(gè)元素,u以0 為第一個(gè)元素,得到λx=Axv與ωx=Axv,其中x∈[0,l],Ax表示訪(fǎng)問(wèn)矩陣的x行。最后由挑戰(zhàn)者B生成,將密文發(fā)送給敵手A。
階段2同階段1,敵手A 可以繼續(xù)向挑戰(zhàn)者B 發(fā)送(ai,UID)密鑰查詢(xún),并不違反規(guī)定。
猜測(cè)游戲中如果β'=β,挑戰(zhàn)者B 輸出0,表明Z=abcG;否則,B 輸出1,表明Z=R。
當(dāng)Z=abcG時(shí),A 獲得有效的密文,則A 的優(yōu)勢(shì)為
當(dāng)Z=R時(shí),A 無(wú)法獲得任何數(shù)據(jù)信息,則A 的優(yōu)勢(shì)為
因此,B 破解該敵手游戲的優(yōu)勢(shì)為
在以上挑戰(zhàn)過(guò)程中,假設(shè)DBDH 成立,如果沒(méi)有敵手在多項(xiàng)式時(shí)間內(nèi)完成,那么本文方案是滿(mǎn)足橢圓曲線(xiàn)的決策DBDH 假設(shè)下的安全性的。
本文方案具有區(qū)塊鏈安全性、前向安全性和抗共謀安全性。
1) 在本文方案中,為了保證外包計(jì)算的正確性,需要對(duì)外包解密密文進(jìn)行正確性驗(yàn)證,在大部分已有的可驗(yàn)證方案中都需要建立一個(gè)完全可信的中間實(shí)體,這會(huì)造成很高的信任構(gòu)建成本,同時(shí)會(huì)存在單點(diǎn)故障問(wèn)題。利用區(qū)塊鏈抗篡改與可溯源特性來(lái)解決該問(wèn)題,霧節(jié)點(diǎn)生成外包解密校驗(yàn)碼發(fā)送到區(qū)塊鏈,可以在不涉及任何中間實(shí)體的情況下對(duì)外包解密結(jié)果進(jìn)行驗(yàn)證。同時(shí)對(duì)用戶(hù)權(quán)限進(jìn)行了驗(yàn)證,使屬性不滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)的用戶(hù)不能從霧節(jié)點(diǎn)獲取到轉(zhuǎn)換密文,也就無(wú)法進(jìn)行解密,轉(zhuǎn)換密文與用戶(hù)權(quán)限的驗(yàn)證都是通過(guò)區(qū)塊鏈進(jìn)行驗(yàn)證的,可以較小的人工干預(yù)實(shí)現(xiàn)可信計(jì)算,因此本文方案是可信的且具有驗(yàn)證性。為了保證數(shù)據(jù)用戶(hù)能夠獲取完整數(shù)據(jù),在數(shù)據(jù)上傳驗(yàn)證過(guò)程中加入了密文的完整性校驗(yàn)碼,能夠隨時(shí)對(duì)密文進(jìn)行校驗(yàn),確保了數(shù)據(jù)的完整性。并且在本文方案中可以跟蹤與驗(yàn)證區(qū)塊鏈中訪(fǎng)問(wèn)控制信息,任何數(shù)據(jù)的上傳與用戶(hù)的訪(fǎng)問(wèn)都將被記錄為一個(gè)不可篡改的訪(fǎng)問(wèn)事務(wù),可以確認(rèn)哪個(gè)數(shù)據(jù)擁有者將何文件提交到CSP,哪個(gè)數(shù)據(jù)用戶(hù)與霧節(jié)點(diǎn)進(jìn)行交互對(duì)數(shù)據(jù)進(jìn)行了訪(fǎng)問(wèn),任何數(shù)據(jù)的上傳與用戶(hù)的訪(fǎng)問(wèn)都將被記錄為一個(gè)不可篡改的訪(fǎng)問(wèn)事務(wù),因此整個(gè)訪(fǎng)問(wèn)方案滿(mǎn)足可溯源性。
2) 在本文方案中,由多屬性權(quán)威機(jī)構(gòu)運(yùn)行密鑰生成算法生成屬性密鑰并發(fā)送給用戶(hù),但用戶(hù)并無(wú)法從該屬性密鑰中獲取與該屬性相關(guān)的其他任何信息。同時(shí),在屬性授權(quán)機(jī)構(gòu)中建立用戶(hù)屬性列表,當(dāng)用戶(hù)的屬性被整體撤銷(xiāo)時(shí),需要在屬性列表中刪除與用戶(hù)標(biāo)識(shí)UID 相關(guān)的所有屬性信息,該用戶(hù)在申請(qǐng)?jiān)L問(wèn)時(shí),霧節(jié)點(diǎn)并不能從屬性授權(quán)機(jī)構(gòu)中獲取到用戶(hù)的相關(guān)屬性信息,所以會(huì)拒絕該用戶(hù)的訪(fǎng)問(wèn)。當(dāng)用戶(hù)所擁有的某個(gè)屬性被撤銷(xiāo)時(shí),只需要在屬性列表中修改撤銷(xiāo)屬性信息即可,這樣霧節(jié)點(diǎn)獲取的用戶(hù)屬性集合將不包含已撤銷(xiāo)屬性,當(dāng)文件的訪(fǎng)問(wèn)結(jié)構(gòu)中包含已撤銷(xiāo)屬性的數(shù)據(jù)時(shí),將無(wú)法通過(guò)用戶(hù)權(quán)限驗(yàn)證階段,因此本文方案滿(mǎn)足前向安全性。
3) 本文方案使用對(duì)稱(chēng)加密密鑰ck 對(duì)文件進(jìn)行加密,然后設(shè)置訪(fǎng)問(wèn)結(jié)構(gòu)A*對(duì)ck 加密,只有DU的屬性滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)時(shí)才能解密ck+sG。假設(shè)多個(gè)未滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)的用戶(hù)相互勾結(jié)交換密鑰,組成了滿(mǎn)足訪(fǎng)問(wèn)結(jié)構(gòu)中的屬性集。根據(jù)密鑰生成KeyGen算法,用戶(hù)私鑰中屬性將與用戶(hù)標(biāo)識(shí)UID 進(jìn)行綁定,則產(chǎn)生不同的私鑰SKi,UID=ki+H(UID)n,假設(shè)互相勾結(jié)的用戶(hù)身份分別為r1,2r,因?yàn)椴煌脩?hù)之間的用戶(hù)標(biāo)識(shí) UID 不同,通過(guò)解密計(jì)算得到drxG。其中便無(wú)法推出sG,所以仍然無(wú)法對(duì)密文進(jìn)行解密。因此,本文方案具有抗共謀攻擊性。
本節(jié)對(duì)本文方案在理論上和實(shí)驗(yàn)上進(jìn)行分析,證明其可行性。本文方案與文獻(xiàn)[17]、文獻(xiàn)[18]、文獻(xiàn)[24]方案的功能比較如表1 所示。
表1 功能比較
通過(guò)功能比較可以發(fā)現(xiàn),在訪(fǎng)問(wèn)結(jié)構(gòu)的比較中,文獻(xiàn)[24]方案使用了與門(mén)的訪(fǎng)問(wèn)結(jié)構(gòu),其結(jié)構(gòu)單一不夠靈活,并且文獻(xiàn)[17,24]方案中采用單一授權(quán)機(jī)構(gòu)進(jìn)行授權(quán),存在單點(diǎn)故障問(wèn)題。而本文方案與文獻(xiàn)[24]方案均避免了雙線(xiàn)性配對(duì)帶來(lái)的計(jì)算開(kāi)銷(xiāo),能夠提升整體效率。采用外包計(jì)算的本文方案與文獻(xiàn)[17]方案能夠降低用戶(hù)在解密時(shí)的計(jì)算開(kāi)銷(xiāo)。
本文方案與文獻(xiàn)[17]、文獻(xiàn)[18]、文獻(xiàn)[24]方案中用戶(hù)加密、用戶(hù)解密、外包解密中的計(jì)算開(kāi)銷(xiāo)比較如表2 所示,其中,L表示訪(fǎng)問(wèn)矩陣中包含屬性個(gè)數(shù),Ls表示滿(mǎn)足訪(fǎng)問(wèn)矩陣的最少屬性數(shù)量,N表示系統(tǒng)內(nèi)屬性數(shù)量,ω表示與門(mén)結(jié)構(gòu)中屬性數(shù),P表示雙線(xiàn)性配對(duì)操作,E表示群內(nèi)的乘法,Eg、ET分別表示群G內(nèi)的指數(shù)操作與群GT內(nèi)的指數(shù)操作。
從表2 可以看出,文獻(xiàn)[18,24]方案并沒(méi)有使用外包計(jì)算技術(shù),用戶(hù)的計(jì)算開(kāi)銷(xiāo)隨著訪(fǎng)問(wèn)控制策略的復(fù)雜化而呈線(xiàn)性增加趨勢(shì)。但在使用了外包計(jì)算的本文方案與文獻(xiàn)[17]方案中,用戶(hù)解密時(shí)的計(jì)算開(kāi)銷(xiāo)是穩(wěn)定的。文獻(xiàn)[17]方案中授權(quán)用戶(hù)與未授權(quán)用戶(hù)檢查外包密文的正確性,雖然實(shí)現(xiàn)外包計(jì)算的正確性驗(yàn)證,但需要指定2 種訪(fǎng)問(wèn)控制策略,用戶(hù)加密時(shí)的開(kāi)銷(xiāo)要大于本文方案。文獻(xiàn)[18]方案為了使整個(gè)CP-ABE 方案做到可溯源,設(shè)計(jì)了可溯源算法,能夠識(shí)別系統(tǒng)中泄露信息的惡意用戶(hù),但會(huì)導(dǎo)致用戶(hù)的計(jì)算開(kāi)銷(xiāo)過(guò)大,用戶(hù)加密與解密開(kāi)銷(xiāo)要遠(yuǎn)大于其他方案。本文方案與文獻(xiàn)[24]方案中均使用橢圓曲線(xiàn)加密中標(biāo)量乘法取代了雙線(xiàn)性配對(duì)操作,在加解密時(shí)的計(jì)算開(kāi)銷(xiāo)均小于其他方案。綜上所述,本文方案的計(jì)算開(kāi)銷(xiāo)要小于其他方案。
表2 計(jì)算開(kāi)銷(xiāo)比較
本文方案的效率主要受區(qū)塊鏈與CP-ABE 加解密算法的影響,而區(qū)塊鏈上的性能主要取決于共識(shí)算法如PBFT,因此本文更側(cè)重于運(yùn)用橢圓曲線(xiàn)加密中的簡(jiǎn)單標(biāo)量乘法代替雙線(xiàn)性配對(duì)計(jì)算后CP-ABE 的效率。通過(guò)仿真實(shí)驗(yàn),將本文方案與文獻(xiàn)[17-18,24]方案在用戶(hù)加密、用戶(hù)解密與外包解密等方面進(jìn)行比較分析。本文基于charm-crypto 框架使用Python2.7 進(jìn)行仿真實(shí)驗(yàn),并選擇基于512 B 有限域上階為160 的橢圓曲線(xiàn);使用Intel Xeon E5-2690 處理器,16 GB 內(nèi)存,搭建環(huán)境為Ubuntu16.04 系統(tǒng)的服務(wù)器作為霧節(jié)點(diǎn)和AA;使用Intel i5-4200U 1.6 GHz 處理器,4 GB 內(nèi)存,搭建環(huán)境為Ubuntu16.04 64 位系統(tǒng)的筆記本電腦充當(dāng)用戶(hù)。實(shí)驗(yàn)中所有結(jié)果均為 10 次結(jié)果的平均值。
數(shù)據(jù)擁有者加密計(jì)算時(shí)間比較如圖3 所示。從圖3 中可以看出,本文方案與文獻(xiàn)[17-18,24]方案的數(shù)據(jù)擁有者在加密計(jì)算時(shí)的消耗時(shí)間隨屬性數(shù)量的增加而越來(lái)越多。其中,文獻(xiàn)[18]方案的增長(zhǎng)率最高,隨著屬性數(shù)量的增加其消耗時(shí)間遠(yuǎn)超其他方案,而本文方案的增長(zhǎng)率最小。使用橢圓曲線(xiàn)中簡(jiǎn)單標(biāo)量乘法的本文方案與文獻(xiàn)[24]方案在數(shù)據(jù)擁有者加密時(shí)的消耗時(shí)間遠(yuǎn)少于其他方案,且本文方案效率更高。
圖3 數(shù)據(jù)擁有者加密計(jì)算時(shí)間比較
數(shù)據(jù)用戶(hù)解密計(jì)算時(shí)間比較如圖4 所示。從圖4 中可以看出,沒(méi)有將解密計(jì)算外包的文獻(xiàn)[18,24]方案中數(shù)據(jù)用戶(hù)在執(zhí)行解密計(jì)算時(shí),其消耗時(shí)間會(huì)隨屬性數(shù)量的增加而越來(lái)越多;而在設(shè)計(jì)了外包計(jì)算的本文方案與文獻(xiàn)[17]方案中,用戶(hù)在解密計(jì)算時(shí)的開(kāi)銷(xiāo)不會(huì)因?yàn)樵L(fǎng)問(wèn)策略的復(fù)雜化而增加用戶(hù)計(jì)算負(fù)擔(dān),并且本文方案解密消耗時(shí)間更少。
圖4 數(shù)據(jù)用戶(hù)解密計(jì)算時(shí)間比較
外包解密時(shí)間比較如圖5 所示。從圖5 可以明顯看出,避免了雙線(xiàn)性對(duì)配對(duì)操作的本文方案在外包解密操作時(shí)所消耗時(shí)間要遠(yuǎn)少于文獻(xiàn)[17]方案,并且隨著訪(fǎng)問(wèn)結(jié)構(gòu)中屬性數(shù)量的增加,這種差距將越來(lái)越明顯,所以本文方案在外包解密算法中效率更高。
圖5 外包解密計(jì)算時(shí)間比較
本文提出了一種霧計(jì)算中基于無(wú)配對(duì)CP-ABE可驗(yàn)證的訪(fǎng)問(wèn)控制方案,利用橢圓曲線(xiàn)加密中的簡(jiǎn)單標(biāo)量乘法替代雙線(xiàn)性配對(duì)計(jì)算,并設(shè)計(jì)安全高效的外包計(jì)算,減少了用戶(hù)解密時(shí)計(jì)算開(kāi)銷(xiāo)。在霧節(jié)點(diǎn)中部署區(qū)塊鏈不僅可以為霧計(jì)算提供可信和安全的環(huán)境,還可以根據(jù)區(qū)塊鏈防篡改可溯源的特性實(shí)現(xiàn)對(duì)訪(fǎng)問(wèn)事務(wù)的正確性驗(yàn)證并記錄訪(fǎng)問(wèn)授權(quán)過(guò)程。對(duì)本文方案的安全性進(jìn)行了分析,仿真實(shí)驗(yàn)結(jié)果表明,本文方案的用戶(hù)解密時(shí)間消耗較小且穩(wěn)定,整體計(jì)算效率更高。但本文方案仍存在一些不足之處?,F(xiàn)有訪(fǎng)問(wèn)策略會(huì)顯式地附加在密文上,或者僅實(shí)現(xiàn)了部分隱藏以防止公開(kāi)可見(jiàn),會(huì)出現(xiàn)接收者的持有屬性被窺探的情況,導(dǎo)致用戶(hù)的隱私泄露。因此需要一種完全隱藏屬性的訪(fǎng)問(wèn)策略,能夠?qū)傩孕畔⑼耆[藏在訪(fǎng)問(wèn)策略中,使任何有價(jià)值的屬性信息都不透露給未授權(quán)的接收者。