莊朝源,郭 瑞,楊 耿
1.西安郵電大學 網絡空間安全學院,西安 710121
2.西安郵電大學 無線網絡安全技術國家工程實驗室,西安 710121
隨著信息技術和互聯網技術的發展,數據使用量呈爆發式增長態勢,本地的計算和存儲能力已經無法滿足人們對數據處理日益增長的需求。云計算擁有強大的計算能力和數據存儲能力,可以將復雜的計算任務進行拆分后,轉交給多個分布式服務器進行計算分析,再將結果返回給用戶,所以云計算成為人們存儲、處理數據的重要技術。云存儲是建立在云服務器上的新型存儲技術,可以將存儲資源進行整合,為用戶提供龐大的數據存儲空間和低廉的數據托管成本,便于用戶對海量數據進行共享。然而,將數據直接存儲在第三方云服務器中,會導致用戶失去對數據的控制。在面對惡意用戶和未授權用戶的非法訪問時,數據中所包含的隱私信息存在被竊取的安全隱患。訪問控制[1]技術可以利用數據擁有者設定訪問策略來確保數據訪問的安全性,但是云計算環境下數據多存儲在不同的用戶實體中,數據量龐大且具有動態擴展等特性,無法滿足用戶對云中共享數據進行靈活的細粒度訪問控制需求。
基于密文策略的屬性加密方案(ciphertext-policy attribute-based encryption,CP-ABE)[2]可以為云計算環境中的數據提供機密性和細粒度訪問控制。數據擁有者對明文進行加密并在密文中設定訪問策略,用戶根據屬性集生成密鑰,解密時用戶密鑰中包含的屬性集必須滿足密文中的訪問策略,該用戶才能成功完成解密。在CP-ABE 中,數據擁有者可以靈活的設置訪問策略,向指定的用戶授予訪問權限,對用戶進行細粒度訪問控制,保證數據接入安全。然而,訪問策略本身涉及數據擁有者、訪問者、數據本身的敏感信息,存在相關信息被泄露的安全風險;并且CP-ABE 中用戶加、解密需要消耗龐大的計算資源,導致數據保護過程效率低下,阻礙屬性加密體制在云計算環境中的廣泛應用。
此外,在訪問控制系統中引入區塊鏈,利用區塊鏈搭建去中心化機構的平臺,為各方構建分布式應用程序。云計算環境中存儲的數據可能被多個實體共同擁有,為了使相關數據擁有者參與訪問控制授權過程,區塊鏈平臺可以由多個數據擁有實體組成,在基于相關數據擁有實體的共識基礎上為用戶生成屬性證書,并生成屬性證書編號。屬性授權中心在為用戶生成屬性密鑰前,需要在區塊鏈中驗證用戶是否擁有屬性證書。
針對云計算環境下訪問控制過程中存在的靈活性差、信息泄露、效率低下等問題,本文構建了一種基于區塊鏈的可驗證外包解密的匿名屬性加密方案(anonymous attribute-based encryption scheme with verifiable outsourcing decryption based on blockchain,AVOCBABE),具體工作如下:
(1)本方案引入屬性匹配技術,即在解密階段之前添加屬性匹配過程,用于測試屬性私鑰與密文中隱藏的訪問策略是否匹配,無需解密。
(2)本方案將部分解密外包給云服務器,用戶可以對第三方外包結果進行驗證,確保外包解密結果的正確性,極大地降低了用戶終端的計算代價。
(3)本方案的用戶屬性密鑰由屬性授權機構和用戶共同生成,可以防止屬性授權機構權力過大,直接獲取數據。同時對用戶的身份進行匿名化,利用生成的假名可以對用戶真實身份進行追蹤。
(4)本方案利用區塊鏈技術為數據擁有實體提供平臺,通過區塊鏈的共識機制使數據擁有者有效的參與到屬性證書授權的過程中,并基于所有相關實體的共識為用戶生成屬性證書。
Sahai 和Waters[3]在2005 年首先提出了屬性基加密(attribute-based encryption,ABE)的概念,通過用戶的屬性來靈活控制數據的訪問權限,廣泛應用于各種訪問控制場景。屬性加密主要分為兩類:密文策略的屬性加密(CP-ABE)[4]和密鑰策略的屬性加密(KP-ABE)[5-6]。在CP-ABE 中,用戶的屬性密鑰與屬性列表相關聯,并且密文是指定在系統的屬性范圍上定義的訪問策略。僅當用戶的屬性列表與密文的訪問策略匹配時,用戶才能解密密文;在KP-ABE 中,將在系統屬性上定義的訪問策略編碼為用戶的屬性秘密密鑰,并根據屬性列表創建密文,僅當相應的屬性列表與用戶的屬性密鑰相關聯的訪問策略匹配時,用戶才能解密密文。在云計算中,數據擁有者可以使用CP-ABE 靈活的指定訪問策略來決定用戶解密需要具備哪些屬性,更加適用于訪問控制場景中。然而,一些CP-ABE 方案[7-10]中的訪問策略必須在密文中顯示,不支持隱私保護,并且計算效率存在問題。
針對訪問策略敏感信息泄露問題,越來越多的研究人員提出支持策略隱藏的CP-ABE方案,使得訪問策略不在密文中明確的表達,而是將策略隱藏在密文中進行存儲。Nishide 等人[11]通過多值屬性的布爾公式實現了訪問策略的隱私保護,但是該方案策略表達方式受限。為了提高隱藏策略CP-ABE 方案的解密效率,Zhang 等人[12]設計了一種策略隱藏CP-ABE解決方案,在完全解密之前執行屬性匹配操作,使用特有的密文組件來測試屬性列表是否滿足隱藏的訪問策略,與完全解密相比,屬性匹配過程計算消耗更小,方案在DBDH 假設、D-Line 假設下具有選擇明文安全性。Zhou 等人[13]設計了一種隱藏策略的CP-ABE方案,方案可以將密文長度壓縮為常數,支持AND 門策略并在q-type 假設下證明方案安全。為了提高策略的表現力,Xiong 等人[14]設計了一種支持LSSS 接入結構的策略隱藏廣播加密方案,但是該方案中存在較多的雙線性對計算,在執行過程中用戶需要耗費大量的計算資源。Zhang等人[15]使用隱藏訪問策略的CP-ABE 實現了對個人健康記錄數據的細粒度訪問控制,并且支持大規模屬性集合,方案中公共參數的大小和解密成本都是恒定的。Zeng 等人[16]在醫療物聯網(internet of medical things,IoMT)生態環境下提出一種有效的部分策略隱藏和支持大屬性宇宙的ABE方案,只顯示非敏感屬性而將敏感屬性隱藏,且該方案對于任何的公開解密密鑰的用戶都可以進行有效的追蹤。Liu等人[17]使用線性秘密共享方案隱藏部分策略,利用多權限抵抗用戶之間聯合通信造成的共謀攻擊,保護IoT環境下數據的隱私安全。
在現有ABE 方案中,密文大小和解密成本隨著屬性策略的復雜性而增加,因此,2011 年,Green 等人[18]首次提出外包ABE 方案,將復雜的ABE 解密計算交給第三方云服務器進行外包解密,極大地降低了用戶端解密過程的計算量。由于第三方云服務器不是完全可信,所以外包解密結果的正確性需要進行驗證。Lai等人[19]提出一種支持外包解密驗證的ABE 方案,在密文中引入驗證元素,根據用戶密鑰生成重加密密鑰,將重加密密鑰發送給第三方云服務器進行解密,并設計了一種驗證外包結果的方法。Qin等人[20]提出一種將任何具有外包解密的ABE 方案轉換化成具有可驗證的外包解密的ABE方案,通過第三方將屬性密文轉化為更短的密文,并具有可驗證性。李聰等人[21]提出可追責、可驗證的外包解密CP-ABE 方案,可對用戶密鑰泄露問題進行追責,通過轉移密鑰的方法實現外包可驗證方案,并在標準模型中證明該方案的安全性。Fan等人[22]在物聯網環境下提出一種策略隱藏外包解密的CP-ABE方案,利用單向匿名密鑰協議將屬性匿名化實現策略隱藏,采用霧節點輔助的可驗證外包解密,減少用戶計算的復雜性。Guo 等人[23]提出應用于無線體感網絡的輕量級可驗證的CP-ABE 方案,為用戶提供了外包解密的正確性驗證,并且密文大小恒定。Zhao等人[24]在霧計算場景中構建了電子健康細粒度訪問控制系統(access control system in fog-enabled e-health,AC-FEH),利用霧節點進行數據加解密操作,將數據擁有者和用戶的計算成本最小化,并且證明了在q-parallel bilinear Diffie-Hellman exponent(BDHE)假設下證明了系統底層CP-ABE 方案的選擇性安全。
本章介紹了雙線性映射的形式定義,然后描述了方案中基于的困難問題、訪問結構和聯盟鏈中背書策略的相關知識。
設q是一個大素數,G1和GT是兩個階為p的乘法循環群,g是G1上的一個生成元,其雙線性映射[25]e?:G1×G1→GT滿足以下性質。
(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的乘法循環群,且滿足雙線性映射e?:G1×G1→GT,g是G1的一個生成元,選取隨機數a,b,c,z∈Zp。給定五元組(g,ga,gb,gc,Z),其中Z∈GT,如果沒有一個算法能夠以不可忽略的優勢在多項式時間內區分Z=e?(g,g)abc或Z=e?(g,g)z,那么認為DBDH問題是難解的。

本文基于聯盟鏈Hyperledger Fabric[27]平臺,為數據訪問者生成、存儲屬性電子證書。屬性授權中心以區塊鏈中的電子證書作為憑證,為數據訪問者生成屬性私鑰。屬性證書授權依賴于背書策略,該策略規定某些對等方需要背書才能將交易視為有效交易,每個認可對等方都會根據策略評估智能合約中的請求,基于共識協議將交易標記為接受或拒絕并在區塊鏈中提交。數據擁有者通過制定的背書策略參與用戶屬性證書授權過程。如圖1 所示,為背書交易過程,用戶向區塊鏈中的擁有數據的實體申請屬性證書,通過預先設定的背書策略把該申請發送給一個或多個實體,并由實體中的背書節點對用戶的屬性信息進行審核。每個認可對等實體收到申請提議后首先校驗客戶端簽名,確認請求的有效性,然后在指定實體中的背書節點進行處理,若該實體同意此申請,則對客戶端的申請提案進行背書簽名并返回給客戶端,若不同意則不進行背書簽名。客戶端收集到的背書簽名滿足預先設定的背書策略,表示該申請已經正確背書,則將申請信息發送給排序服務節點進行排序,生成區塊,并將新的區塊廣播給其他節點進行更新。若收集的背書簽名不滿足預先設定的背書策略,則該提案將被遺棄。

圖1 Hyperledger Fabric背書交易流程Fig.1 Hyperledger Fabric endorsement transaction process
本章主要介紹方案的系統模型、系統框架和安全模型。
如圖2 所示,AVOCB-ABE 系統模型中主要包括5個實體:云服務器(CSP)、聯盟鏈(CB)、屬性授權中心(AA)、數據使用者(DU)、數據擁有者(DO)。

圖2 AVOCB-ABE系統模型Fig.2 System model of AVOCB-ABE
屬性授權中心(AA):負責為整個系統初始化生成公共參數和主密鑰,根據數據使用者的屬性列表和區塊鏈中的屬性證書生成屬性密鑰,AA 是系統中完全可信實體。
聯盟鏈(CB):用于生成、存儲DU的屬性證書,在其共識機制的基礎上生成屬性證書編號CID,屬性授權中心在為用戶生成屬性密鑰前,需要在區塊鏈中驗證用戶的屬性證書;存儲外包驗證的哈希值。
云服務器(CSP):主要分為云存儲服務器和云計算服務器。云存儲服務器存儲數據擁有者生成的數據密文和區塊鏈生成的TxID;云計算服務器主要對用戶屬性和密文策略進行屬性匹配、外包解密等計算。
數據擁有者(DO):參與聯盟鏈中屬性證書的授予;為擁有的數據制定背書策略;使用對稱密鑰加密數據,定義執行基于屬性的訪問策略,并通過訪問策略對對稱密鑰進行加密,將數據密文和密鑰密文存儲到云服務器上。
數據使用者(DU):在聯盟鏈中選取需要訪問的數據,按照數據的背書策略申請屬性證書;向云服務器發送訪問請求并要求進行外包解密,下載部分解密密文,使用私鑰正確的恢復出數據。
本方案主要包括以下步驟。
(1)Setup(1λ)→(PK,MK):系統初始化算法,由屬性授權中心AA執行,通過輸入安全參數λ,輸出公共參數PK和主私鑰MK。
(2)Encrypt(PK,M,W,K)→CTw:加密算法,由數據擁有者執行,首先使用對稱加密對數據M加密,然后輸入公共參數PK、對稱密鑰K、訪問策略W,執行基于屬性的訪問策略加密輸出密文CTw。
(3)AnonyAlg(ID,PKu,MK)→ID′:身份匿名化,由用戶和屬性授權中心AA 執行,AA 接收用戶的ID,用戶公鑰PKu,系統主私鑰MK,輸出用戶的假名ID′,返回給用戶。
(4)AAKeyGen(PK,MK,L)→SKv,SK1,i:密鑰生成算法,由屬性授權中心AA 執行生成部分密鑰,通過輸入公共參數PK、主私鑰MK、用戶屬性列表L,輸出屬性匹配密鑰SKv,部分外包解密密鑰SK1,i,并將SKv,SK1,i發送給DU。
(5)UserKeyGen(SKv,SK1,i,SKu,PK)→SKL:密鑰生成算法,由數據訪問者DU執行。輸入屬性匹配密鑰SKv,部分外包解密密鑰SK1,i,用戶私鑰SKu,公共參數PK,生成完整屬性密鑰。
(6)AttMat ch(PK,CTw,SKv)→Vatt:屬性匹配算法,由云服務器CSP執行,輸入公共參數PK,用戶屬性匹配密鑰SKv,密文CTw進行屬性驗證,然后將驗證結果Vatt輸出。
(7)OutDec(PK,Vatt,CTw,SKo)→CT′ :外包解密算法,由云服務器CSP執行,輸入公共參數PK,屬性匹配的結果Vatt,密文CTw,用戶外包解密密鑰SKo,然后輸出部分解密密文CT′。
(8)UserDec(CTw,CT′,PK,SKL)→K:用戶解密算法,由用戶DU執行,接收到部分解密密文CT′,對外包解密結果進行驗證。輸入公共參數PK,密文CTw,解密密鑰SKu,輸出對稱加密密鑰K,然后用對稱解密算法得出明文M。
(9)Trace(ID′,MK,T)→ID :追蹤算法,由AA 執行,輸入用戶的假名ID′,表單T,主密鑰MK,輸出用戶的真實ID。

通過定義敵手的能力來表明隱藏訪問策略的CP-ABE 方案的安全需求,并定義了相應的安全概念。在構造的證明中使用選擇密文訪問策略和選擇明文攻擊下的不可區分性(indistinguishability against selective ciphertext-policy and chosen-plaintext attacks,IND-sCPCPA)的概念,可以將其稱為IND-sCP-CPA游戲,包括敵手A 和挑戰者B,具體游戲如下所示。
Init:敵手A 提交挑戰密文訪問策略W*0、W*1給挑戰者B。
Setup:挑戰者A 選擇足夠安全的參數λ,并運行Setup(1λ)算法生成公共參數PK和主私鑰MK,主私鑰MK由B 保存,將公共參數PK發送給敵手A。
階段1 敵手A 將屬性列表L發送給挑戰者B 進行查詢,當L|≠W*0∧L|≠W*1或L|=W*0∧L|=W*1時,挑戰者B 運行KeyGen(PK,MK,L)密鑰生成算法計算A 的密鑰SKL,并返回給A ;否則返回⊥。

階段2 與階段1相似。
猜測階段 敵手A 輸出對v的猜測v′∈{0,1} ,若v=v′則A 獲勝。

定義2 如果沒有敵手A 能夠以不可忽略的優勢在多項式時間內打破IND-sCP-CPA 游戲,那么認為AVOCB-ABE方案是IND-sCP-CPA安全的。
本章主要描述了整個系統的交互流程和具體的算法構造。
如圖3所示,本方案的執行整體流程包含以下步驟:

圖3 方案流程Fig.3 Solution process
(1)在云計算環境下,AA 作為完全可信實體,執行Setup操作初始化系統公共參數和系統主密鑰。
(2)DO根據系統公共參數、在系統的屬性范圍上定義的訪問策略對數據進行加密,并指定區塊鏈中所涉及的實體設置背書策略,將用于外包驗證的哈希值存儲在區塊鏈上,并返回TxID。最后,DO把TxID和密文存儲在CSP中。
(3)DU 根據要訪問數據所涉及的實體發送屬性信息,區塊鏈利用背書策略對DU生成屬性證書和證書編號CID。
(4)DU 將ID、屬性列表L發送給AA。先對DU 的真實ID進行匿名化處理,在系統中DU使用假名進行操作。AA與區塊鏈交互驗證用戶的屬性證書和編號CID是否存在。若存在,執行KeyGen生成部分密鑰,發送給DU,由DU在客戶端生成完整屬性密鑰。
(5)DU 利用TxID 在CSP 中查找密文,發送屬性匹配密鑰和外包解密密鑰,CSP將用戶的屬性信息和密文訪問策略進行驗證,若驗證成功,則進行外包解密,將外包解密結果返回給DU。
(6)DU對外包結果進行驗證,若外包結果正確,DU使用私鑰對外包結果解密獲得明文。
(7)若云計算環境中用戶存在惡意行為,AA可以通過Trace恢復出用戶真實ID,查明用戶身份。
本文提出了一種AVOCB-ABE方案,具有用戶身份可追蹤、策略隱藏、屬性匹配、可外包等特點,具體如下:
(1)Setup(1λ)→(PK,MK):G,GT為兩個階為大素數p的乘法循環群,g是G的一個生成元,e?:G×G→GT是一個雙線性映射,定義映射函數:H1:{0,1}*→Z*p,H2:GT→Z*p。假設系統中有n個屬性,其屬性集U={ω1,ω2,…,ωn},且每個屬性有多個取值,第i個屬性ωi有ni個屬性值,Si={vi,1,vi,2,…,vi,ni}為屬性ωi的多值集且|Si|=ni;選擇隨機數α,β∈Z*p,h∈G,計算Y=e?(g,h)α,X=e?(g,g)αβ,P=gβ;公共參數PK=<G,GT,e?,g,h,Y,X,P,H1,H2>,系統主私鑰MK=<α,β >。
(2)Encrypt(PK,M,W,K)→CTw:加密模塊分為對稱加密和屬性加密兩部分。
①對稱加密:DO選擇對稱加密算法加密明文M,計算CM=Enc(K,M)為對稱加密密文。
②屬性加密:DO將對稱密鑰按照訪問策略進行屬性加密。設DO選擇屬性策略W={w1,w2,…,wn},且每個屬性有屬性值wi=vi,ni,并為每個屬性選取屬性值選擇隨機數s,s′∈Z*p,計算密文:

DU 將真實ID、公鑰發送給AA 計算協商密鑰R=(hut)β,生成假名ID′=ID⊕H(R)。建立表單T將用戶公鑰與假名一一對應存儲。
(4)KeyGen(PK,MK,L)→SK:由AA 和DU 兩方共同構造屬性密鑰,防止AA權力過大。


(6)Trace(ID′,MK,T)→ID:系統中若存在惡意用戶,將其公開的假名ID′發送給AA 申請追蹤,AA 通過ID′在表單T中查詢用戶公鑰,使用主密鑰MK計算協商密鑰R=(hut)β,恢復出用戶真實身份ID=ID′⊕H(R)。

定義3 方案AVOCB-ABE 在IND-sCP-CPA 模型下,在DBDH假設下,不存在敵手A 能夠以不可忽略的優勢在多項式時間內攻破本方案,則本方案是INDsCP-CPA安全的。
證明 挑戰者生成DBDH挑戰,B是一個攻擊DBDH問題的多項式時間敵手,A 是攻擊本方案CTW*v的多項式時間敵手,B 利用A 來攻擊DBDH 問題,B 看作A的挑戰者。具體挑戰過程如下所示。

階段2 挑戰者B 按照階段1繼續進行。

猜測階段 敵手A 輸出對β的猜測β′∈{0,1},若β′=β,B 輸出v′=0,Z=e?(g,g)abc;若β′≠β,B 輸出v′=1,Z=e?(g,g)z。等式與定義1 中敵手B 區分DBDH 兩個元組的優勢相同。根據定義1 任何攻擊者無法以不可忽略的概率優勢攻破DBDH 問題。因此,該方案中不存在敵手A能夠以不可忽略的優勢在多項式時間內打破IND-sCPCPA模型。
本章通過通信開銷、功能比較將現有方案和本文方案進行了對比分析,利用PBC Go密碼學庫對方案進行仿真。


表1 通信開銷對比Table 1 Comparison of communication overhead

如表2 所示,將本文方案與文獻[19]方案、文獻[12]方案、文獻[20]方案、文獻[24]方案進行了比較,在保護敏感屬性方面,只有文獻[12]方案和本文方案實現了策略隱藏,保護用戶隱私。在屬性匹配方面,只有文獻[12]方案和本文方案對用戶屬性和訪問策略進行了預先匹配。在外包方面,文獻[19]方案、文獻[20]方案、文獻[24]方案和本文方案實現了外包解密,將復雜的解密運算外包給云服務器,減少用戶端計算開銷,但文獻[24]方案在外包解密后無法對外包結果進行正確性驗證。本文將外包結果與在區塊鏈中存儲數據進行對比,確保云服務器外包的正確性。綜上所述本方案具有更加豐富的功能。

表2 功能和用戶解密效率比較Table 2 Comparison of functions and user decryption efficiency
該方案使用Golang1.15.6 Linux/amd64 版本和Goland編譯器,引入PBC Go[28]密碼庫對算法進行仿真實現,其中采用了PBC Go 庫中具有160 位階的A 型橢圓曲線參數。該仿真是在處理器為Intel?Core?i7-8850H CPU 2.59 GHz 和16.0 GB RAM 的筆記本電腦上,基于Ubuntu 18.04-amd64的系統上進行。方案中各個運算所消耗的時間如表3所示,其中Te表示一次雙線性運算的時間,Tp表示一次指數運算的時間,Tm表示一次點乘的運算時間,Th表示一次從{0,1}*符串映射到Z*p上的哈希運算時間。

表3 各個運算運行時間Table 3 Running time of different operations
針對本方案主要仿真了加密、密鑰生成、屬性匹配、外包解密、用戶解密階段的計算成本和屬性密鑰大小。如圖4(a)~(f)所示,測試將屬性個數從0 遞增到100,隨著屬性個數增加計算各部分算法所消耗的時間。如圖4(a)所示,當密文中的屬性策略達到100 個時,數據擁有者最多使用480 ms對數據進行加密。如圖4(b)所示,是AA為用戶生成屬性密鑰的運算時間,AA最多需要730 ms為具有100個屬性的用戶生成密鑰。如圖4(c)所示,將用戶屬性密鑰和密文中隱藏的屬性進行匹配,最多耗時140 ms。如圖4(d)所示,在第三方云服務器中進行外包解密得到部分解密密文,隨著密文中屬性個數增加外包解密最多耗時138 ms。如圖4(e)所示,將部分解密結果返回給用戶,在用戶端進行解密,解密所耗費的時間為0.84 ms,并且解密時間恒定,與屬性個數無關。如圖4(f)所示,AA為用戶生成的密鑰大小恒定,長度為4|G|+|Zp*|,不隨著屬性個數的增加而變大。

圖4 方案各部分計算和通信成本Fig.4 Computation and communication cost of each part of scheme
本文使用聯盟鏈Hyperledger Fabric 進行仿真,各數據擁有實體作為聯盟鏈組織或節點,為DU 生成、存儲屬性證書,并生成證書編號。
在Hyperledger Fabric 的基礎網絡中創建3 個組織(Org1,Org2,Org3),組織中的不同節點可以代表不同的實體。在實例化鏈碼過程中根據鏈碼的功能需要編寫背書策略,屬性證書提交時進行背書的實體節點由交易所屬的鏈碼和鏈碼所定義的背書策略共同決定。
如圖5 所示,利用程序啟動Hyperledger Fabric 網絡,根據配置文件進行初始化、創建通道、節點加入通道、安裝鏈碼、實例化鏈碼、創建客戶端、啟動Web 服務等操作,在網頁中可視化的對區塊鏈中的數據進行添加、查詢等操作。

圖5 啟動Hyperledger Fabric網絡Fig.5 Start Hyperledger Fabric network
如圖6、7 所示,對用戶的屬性進行添加操作,添加成功后返回證書編號(圖6中的交易ID),利用屬性證書ID 對該屬性證書的內容進行查詢,從區塊鏈中查詢返回屬性證書內容。

圖6 創建屬性證書Fig.6 Create attribute certificates

圖7 查詢屬性證書Fig.7 Query attribute certificates
本文構建了一種高效、策略隱藏、可外包計算的CP-ABE 訪問控制方案,解決云計算環境中數據的存儲、共享的訪問控制和安全問題。為了防止屬性授權機構權力過大,用戶完整屬性密鑰由屬性授權機構和用戶共同生成。解密階段引入屬性匹配技術,測試屬性私鑰與密文中隱藏的訪問策略是否匹配,通過可驗證外包解密算法,降低用戶終端的計算代價。基于區塊鏈共識機制生成屬性證書,通過設置背書策略有效的使數據擁有者參與到訪問證書授權的過程中。在隨機諭言模型下證明選擇性密文策略和選擇明文攻擊的安全性,利用PBC Go密碼學庫對方案算法進行效率分析,并使用區塊鏈對方案中屬性證書的生成、存儲進行了仿真驗證。