張曉東,陳韜偉,余益民,3
1.云南財經大學 信息學院,昆明 650221
2.云南省區塊鏈應用技術重點實驗室,昆明 650221
3.云南財經大學 智能應用研究院,昆明 650221
目前,新一代信息技術促進了數據的指數級增長,使得數據成為了新的生產要素。然而,隨著數據的開放和共享,越來越多的信息泄露事件使得敏感數據的所有權、安全性和隱私性成為各行各業必須面臨的問題。但傳統的密文共享方法解決敏感數據安全和隱私保護的同時采用中心化的數據訪問控制模型,導致了需要耗費大量的通信開銷和運算代價[1]。而作為一種新型公鑰加密體制的密文屬性基加密算法CP-ABE(ciphertextpolicy attribute-based encryption)[2-3],主要由數據所有者制定訪問策略,將私鑰與屬性相關聯后嵌入密文,實現了“一對多細粒度”的密文訪問控制。因此,將CPABE 算法結合分布式數據共享管理機制可以有效解決上述問題。
2011 年,Waters 等人[4-6]提出一個基于線性秘密共享方案(linear secret sharing scheme,LSSS)的高效率CP-ABE算法,并在標準模型下證明了屬性基加密的安全性。2010 年,Lewko 等人[7]將訪問結構設計為LSSS矩陣,實現了CCA 安全的雙系統加密機制。2012 年,Okamoto等人[8]解除了以往屬性基加密方案對謂詞和屬性大小的限制,提出了無界內積屬性基加密方案。2013年,Gorbunov等人[9]提出了由基于布爾公式向基于多項式邏輯電路的轉變的屬性基加密方案,有效抵御合謀攻擊。2014 年,Waters 等人[10]在Rouselakis 等人[11]研究基礎上提出線上線下結合的屬性基加密方案,減少了在線階段的計算開銷。2015 年,De 等人[12]提出多機構的密文屬性加密機制,但方案中隱私性難以保證。2017年,仲紅等人[13]提出一種高效且可驗證的多授權機構屬性基加密方案(MA-CP-ABE),通過外包解密方式減少解密計算開銷,但其私鑰仍由多個屬性授權機構生成。
綜上,當前的CP-ABE算法由于其屬性密鑰僅與屬性集合相關,而與用戶標識無關,因此無法預防和追溯非法用戶持有合法用戶的私鑰。此外,由于ABE 均由中心化的單權威機構授權,不能滿足大規模分布式應用對于不同機構協作的需求,這要求了該權威機構必須完全誠實可信,違背了分布式應用信任分散的需求[14]。
隨著比特幣區塊鏈系統于2009 年由中本聰[15]首次上線,實現了P2P網絡與密碼學相結合的分布式賬本機制,具有去中心化、防篡改、透明公開驗證等特點。這些特點符合當前CP-ABE對密鑰審計與追溯的需求,同時分布式管理方式也可解決單點故障、計算開銷大等問題。因此,Bramm 等人[16]將CP-ABE 與區塊鏈結合,采用分布式密鑰管理提升系統的安全性和效率;Fan 等人[17]則結合區塊鏈解決了云服務器的數據存儲隱私和密文訪問控制問題;田有亮等人[18]提出了區塊鏈密文溯源系統,實現了交易數據的隱私和動態保護;閆璽璽等人[19]提出一種基于區塊鏈的屬性基搜索加密方案,解決了對半誠實且好奇的模型下云服務器返回搜索結果的可驗證問題。
以上的CP-ABE方案[16-19]中雖然采用區塊鏈系統進行了分布式管理,但方案仍沿用了中央機構CA(central authority)進行密鑰計算和分發,并未解決存在的單點安全隱患。為此,Gao等人[20]通過同態加密的方式將用戶屬性隱藏,區塊鏈作為進行身份證明和驗證的實體,從而獲得主密鑰,并由用戶生成私鑰,實現了分布式的密鑰計算和屬性保存,但其主密鑰仍由中心化機構保管,存在安全隱患;鄭良漢等人[21]設計了一種層次化多權威CP-ABE 算法,通過區塊鏈技術進行私鑰分發,但與區塊鏈的相關程度不高。
因此,本文采用代理密鑰封裝技術,提出屬性基加密的區塊鏈雙鏈方案PKEM-CPABE(proxy key encapsulation mechanism ciphertext-policy attribute-based encryption)。實現數據的隱私保護和加密過程的追蹤審計。本文的主要貢獻如下:
(1)在Waters[4]所提的CP-ABE方案基礎上,通過區塊鏈代理密鑰封裝機制對主密鑰進行封裝。其中,設計主密鑰代理保管節點和密鑰轉換節點,分別負責保管主密鑰密文與解密主密鑰密文,通過區塊鏈節點不同分工實現了主密鑰的安全分布式計算與用戶屬性的管理,無需可信第三方的參與。
(2)方案采用主從式雙鏈架構,主鏈采用POW共識機制,激勵節點參與交易的驗證并獲得信譽積分獎勵,并為子鏈選舉許可計算節點。子鏈共識采用POA 機制,提高算法主密鑰安全分發通信和共識效率。另外,子鏈事務區塊的hash綁定主鏈區塊中,確保子鏈中事務的追蹤與可驗證。
(3)設計了支持雙鏈架構的區塊結構,對算法中參數的產生、使用和分發的交易進行分類歸管。通過全流程追溯防止密鑰濫用,確定作惡用戶節點行為,實現交易的可驗證、可追責和可審計性。
本文中基于PKEM-CPABE算法所涉及的主要參數如表1所示。

表1 方案主要參數Table 1 Notations in this paper
設p是一大素數,G0、G1是兩個階為p的乘法循環群,g為群G0生成元,定義雙線性映射[22]e:G0×G0→G1。滿足以下性質:
(1)雙線性:對于任意g∈G0,a,b∈Zp,有e(ga,gb)=e(gb,ga)=e(g,g)ab;
(2)非退化性:存在g∈G0,e(g,g)≠1;
(3)可計算性:存在有效計算e(g,g)。
參與方集合p上的秘密共享方案Γ如果滿足下列條件,則稱為Zp上的線性秘密共享方案[22]:
每個共享秘密的份額組成Zp上的一個向量。
對于秘密共享方案Γ,存在一個l×n矩陣M,映射函數ρ為M的行指定屬性。對于i=1,2,…,l,ρ(i)是與第i行相關聯的參與方。考慮一個列向量v=(s,y2,…,yn),s是被共享的秘密,ri是隨機選取的i=2,3,…,n,根據方案Γ,Mv是秘密s被共享的l個秘密份額,λi=vi·Mi(i=1,2,…,l)表示秘密共享密鑰份額。
線性秘密共享方案具有線性重構的特性,如果S∈A是一個訪問授權集合,那么存在一個常數ωi∈Zp,使得成立,其中λi是秘密s的有效份額,I={i:ρ(i)∈S}。
PKEM-CPABE算法由以下9個算法構成,其關系圖如圖1所示。

圖1 PKEM-CPABE算法流程圖Fig.1 Process of PKEM-CPABE algorithm
(1)系統初始化
AbeSetup(1k)→(PK,MSK)。輸入安全參數k和屬性集合U,輸出系統密鑰對(PK,MSK)。
設α,β∈Zp及群G0的元素h1,h2,…,hu,其中{1,2,…,u}表示屬性集合U對應的屬性標號,系統輸出密鑰對(PK,MSK)為:
(2)用戶初始化
PkemSetup(1φ)→(pk,sk)。算法輸入系統安全參數φ,輸出用戶公私鑰對(pk,sk)。
定義G2是Zq階數為q的循環群,令f為群G2的生成元,定義哈希函數Hi,隨機選擇a∈Zq,輸出用戶密鑰對為(pk,sk):
(3)主密鑰的封裝
PkemMSK(MSK,pkA)→(CTMSK,capsule1)。算法輸入系統主密鑰MSK和用戶公鑰pkA,輸出封裝后的的主密鑰密文CTMSK和膠囊capsule1。
定義哈希函數H2,隨機選擇e,v∈Zq,定義G 為AES對稱加密函數:EAES,DAES。輸出主密鑰密文CTMSK和膠囊capsule1為:
(4)用戶私鑰轉換
PkemKeyGen(skA,pkB)→(XA,rkA→B)。輸入A的用戶私鑰skA和B的用戶公鑰pkB,輸出轉換密鑰rkA→B。
隨機選擇xA∈Zq,定義哈希函數H3,計算轉換密鑰rkA→B:
(5)用戶私鑰重加密
PkemEnc(rkA→B,capsule1)→capsule2。輸入轉換密鑰rkA→B和膠囊capsule1,輸出膠囊capsule2:
(6)主密鑰解密
PkemDec(CTMSK,XA,skB,capsule2)→MSK。通過輸入主密鑰密文CTMSK,用戶私鑰skB和capsule2,輸出主密鑰MSK。
定義哈希函數H3,計算主密鑰MSK:
(7)系統加密
AbeEnc(PK,m,(M,ρ))→CT。輸入系統公鑰PK、明文m和訪問控制策略(M,ρ),輸出密文CT。加密過程中采用秘密共享技術,最終密文CT為:
(8)屬性私鑰生成:
AbeKeyGen(MSK,S)→SK。輸入系統主密鑰MSK和用戶屬性集合S,輸出用戶的屬性私鑰SK。
(9)解密
AbeDec(CT,SK)→m。輸入密文CT、屬性集合S對應的私鑰SK,如果S滿足訪問結構,則輸出明文m,反之則解密失敗。
解密計算:
本文安全模型選擇明文攻擊下的不可區分性(indistinguish ability against selective access structure and chosen plaintext attack,IND-SAS-CPA)游戲,游戲中挑戰者(challenger)和敵手(adversary)的交互過程如下[23]。
(1)初始化。挑戰者初始化系統AbeSetup(1k),保存用于應答的秘密參數mk,并將公鑰pk發送給敵手,敵手宣布要挑戰的舊訪問策略(M,ρ) 和新訪問策略(M*,ρ*)。
(2)詢問。敵手向挑戰者發送多個屬性集合S1,S2,…,Sn,這些屬性不滿足訪問策略(M,ρ)和(M*,ρ*),挑戰者運行AbeKeyGen(MSK,S)將生成的相應屬性私鑰并發給敵手。
(3)挑戰明文。①敵手發送兩條等長明文m0、m1給挑戰者,挑戰者隨機選取c∈{0,1}使用舊訪問策略進行mc加密;②挑戰者根據(M*,ρ*)進行策略更新,生成相應更新密文CT*;③挑戰者將更新密文CT*發送至敵手。
(4)重復步驟(2),敵手向挑戰者發送屬性集合Sn+1,Sn+2,…,Sn+m,申請相對應私鑰,其屬性不滿足訪問結構(M*,ρ*)。
(5)猜測。敵手輸出c的判斷結果c∈{0,1}。
定義1若多項式時間敵手贏得以上安全模型游戲優勢可以忽略,則本文方案安全。
本文采用雙鏈架構,主鏈public chain(PC)基于POW共識算法;子鏈child chain(CC)基于POA共識算法。
(1)PC:主鏈中將信譽積分作為主鏈網絡的激勵機制以吸引節點參與共識并獲得積分獎勵,同時抵抗作惡節點的攻擊和確保網絡安全。另外,主鏈上設置主密鑰代理存儲節點PSN(proxy storage node)、密鑰轉換節點RKCN(re-key calculate node)等許可計算節點的選舉,被選舉出的PSN、RKCN節點與數據擁有者DO、數據使用者DU 共同維護子鏈賬本。PC 中的區塊pb(public block)存儲由DO 上傳的加密密文CT 摘要和各節點信譽積分RS(rating score)。
(2)CC:PSN、RKCN 節點由主鏈選舉構成子鏈,并與DO、DU節點組成的臨時計算委員會,采用POA共識機制,提高子鏈事務處理速度和讀寫吞吐量、降低交易成本。子鏈中的區塊cb(child block)存儲各參數傳遞過程的事務信息,實現密鑰傳遞的可追溯性。
在雙鏈結構中,PC和SC通過hash值方式進行錨定。DO 將密文CT存儲于IPFS 數據庫中,將密文CT地址摘要記錄在公鏈;子鏈中各節點通過智能合約進行交互。
在雙鏈架構中,設計信譽積分RS,作為節點的量化評價指標,可以客觀反映出該節點的好壞。同時,信譽積分采取連帶責任制,對于表現好的節點,根據其貢獻程度獎勵一定數量的積分值作為獎勵;對于故障或惡意節點,作為懲罰則扣除相應的RS。
3.1.1 投票機制
本文結合信譽積分提出一種新的計算節點總票數(Votes)的公式:
其中,AV表示贊成票,NV表示反對票,RSi為第i個節點所擁有的RS值,m為該節點獲得贊成票個數,n為該節點獲得反對票個數。為第i個節點投票所占權重??傎澇善睖p去總反對票數,與節點自身RS值相加,獲得最終票數Votes。
3.1.2 節點選舉
基于PKEM-CPABE雙鏈架構中的子鏈節點負責代理主密鑰封裝的密鑰存儲和轉換密鑰計算。對于Votes值小于0的節點則默認其Votes值為0。在一輪投票中,對所有參與節點Votes值進行由高到低排序,將節點分為不同類型:
(1)PSN:Votes值為前20%的節點;
(2)RKCN:Votes值為20%~80%的節點;
(3)危險節點:Votes值為最后20%的節點。
3.1.3 信譽積分獎懲機制
在子鏈CC 中,對于成功貢獻的節點會給予一定的獎勵;反之,則給予一定的懲罰。設共有k個節點參與,單個節點的工作量為WL(work load),獎勵系數為τ,根據其工作量所占權重,進行獎勵或懲罰。
以某積極節點為例,當其成功完成其工作時,工作量為WLi,節點獲得獎勵:
參與投積極票AV的節點也將獲得獎勵,設共有m個節點為該節點投積極票,獎勵系數為γ:
則該節點最終信譽積分為RSFinal=RS+Score。
若該節點需要受到懲罰,Score計算方法同上式,參與投積極票NV的節點也將受到懲罰,該節點最終信譽積分為RSFinal=RS-Score,當信譽積分RS等于0時,便不再減少。
3.1.4 RS閾值與獎勵調整因子
當RS增加到一定值時,需要利用獎勵調整因子平衡該節點與網絡中其他節點的關系。設α為RS的閾值,αmax為RS最大值,β為該節點達到RS閾值時對應的投票輪數,x為投票輪數,當Score大于閾值后所獲取的獎勵為:
當節點RS值達到閾值時,此后所獲獎勵將逐步減緩,但RS值仍保持增長。既使得某節點在選舉中保持優勢,又維護了其他節點被選舉的公平性,保持了網絡中各節點的積極性。
3.2.1 雙鏈及區塊結構
基于PKEM-CPABE的雙鏈架構如圖2所示。

圖2 雙鏈架構和區塊結構Fig.2 Architecture and structure of blockchain
每個數據塊一般包含區塊頭和區塊體兩部分。區塊頭封裝了當前版本號、前一區塊地址、當前區塊目標哈希值、Merkle根、隨機數以及時間戳等信息。其中,公鏈PC的前一區塊信息中包括前一pb塊的Hash值和掛接于該區塊的子鏈cb塊的Hash值,而子鏈區塊cb的前一區塊信息中包括前一cb區塊的Hash值。
3.2.2 事務結構
為實現基于PKEM-CPABE的雙鏈架構中密鑰流轉的來源追溯,定位各節點行為。本文基于PKEM-CPABE算法對區塊結構進行設計,利用區塊鏈進行密鑰傳遞過程的行為追責。事務結構7元組定義如下:
其中,ID表示事務標識號;From和To分別表示該事務的發送方與接收方;TxType表示該事務類型,Y為可以公開,N為不可公開;TimeStamp表示事務發布時間戳;Sig表示發布者簽名;Data表示事務包含的可選數據域。
某共識節點在收到一筆事務后進行狀態初始化,提取事務信息并下載至本地,根據TxType 字段判斷該事務是否可公開,從Data字段中獲取事務的公共參數。
基于PKEM-CPABE 的數據共享模型如圖3 所示,共包含個參與方,分別是數據擁有者DO(data owner)、數據使用者DU(data user)、主密鑰代理存儲節點PSN(proxy storage node)、轉換密鑰計算節點RKCN(re-key calculate node)、星際文件系統IPFS(inter planetary file system)和區塊鏈BC(blockchain)。

圖3 PKEM-CPABE系統架構圖Fig.3 System architecture of PKEM-CPABE
(1)初始化。數據擁有者DO 通過2.1 節算法Abe-Setup(1k)生成系統主密鑰對(PK,MSK)。各節點通過算法PkemSetup(1φ)生成各自的用戶公私鑰對(pk,sk)。
(2)加密。數據擁有者輸入公共密鑰PK、數據集合m以及訪問策略(M,ρ),通過算法AbeEnc(PK,m,(M,ρ))輸出加密數據CT,數據擁有者將CT發送給IPFS,事務信息為Tx=(ID,DO,IPFS,Y,TimeStamp,Sig,CT)。
(3)主密鑰(MSK)封裝。數據擁有者通過算法PkemMSK(MSK,pkA),輸入PSN 節點公鑰pkPSN和主密鑰MSK,獲得封裝好的主密鑰密文CTMSK和膠囊capsule1,并通過事務Tx=(ID,DO,CC,Y,TimeStamp,Sig,CTMSK)將CTMSK上傳至子鏈,通過事務Tx=(ID,DO,RKCN,N,TimeStamp,Sig,capsule1)將capsule1發送給RKCN。
(4)用戶私鑰轉換。當DU請求獲取主密鑰MSK,向PSN 發送請求,PSN 驗證Sig簽名后,輸入自己的私鑰skPSN和DU公鑰pkDU,通過算法PkemKeyGen(skA,pkB)生成轉換密鑰rkPSN→DU和XA。并發送給RKCN:Tx=(ID,PSN,RKCN,N,TimeStamp,Sig,(XA,rkPSN→DU))。
(5)用戶私鑰重加密。轉換密鑰計算節點RKCN收到計算請求,輸入capsule1和rkPSN→DU,通過算法PkemEnc(rkA→B,capsule1) 生成新的膠囊capsule2,并連同XA發送給DU。Tx=(ID,RKCN,DU,N,TimeStamp,Sig,(XA,capsule2))。
(6)主密鑰解密。DU 獲得XA和capsule2后,從鏈上獲得主密鑰密文CTMSK,輸入XA,capsule2和skDU,通過算法PkemDec(CTMSK,XA,skB,capsule2)獲得主密鑰MSK:Tx=(ID,CC,DU,Y,TimeStamp,Sig,CTMSK)。
(7)屬性私鑰生成。DU獲得MSK后,輸入自身屬性集合S,通過算法AbeKeyGen(MSK,S)獲得屬性私鑰SK。
(8)解密。DU 通過事務Tx=(ID,PC,DU,Y,TimeStamp,Sig,CT)獲得密文CT,輸入屬性私鑰SK,通過算法AbeDec(CT,SK)獲得明文m。
定理1若困難性假設q-parallel BDHE 成立,則不存在多項式時間敵手能夠選擇挑戰訪問結構(M*,ρ*)攻破本文方案。
證明在本文選定結構模型下,如果敵手A在多項式時間的以ε的優勢攻破本文方案,則存在另一敵手B以ε/2 的優勢解決判定性q-parallel BDHE假設。
選取兩個乘法循環群G0、G1以及雙線性映射e:G0×G0→G1,隨機選擇β,s,b1,b2,…,bq∈Zp,公開:
隨機選取θ∈{0,1},若θ=0,則取設置T=(y,Z);若θ=1,取Z∈G1,設置T=(y,Z)。
B收到多元組T后,通過與敵手A進行以下游戲[23]。
(1)初始化。B 選擇隨機數α?∈Zp,計算e(g,g)α=敵手B 隨機選擇α=α′+βq+1并按以下方式編排群元素h1,h2,…,h|u|。對于每一個x(1 ≤x≤|U|)都選擇一個對應的隨機數zx,令X是使得ρ*(i)=x的指標i的集合。求hx:
由于gzx的隨機性,hx是隨機分布的。如果X≠?,則有hx=。
(2)Phase 1。A對不滿足矩陣M*的集合S做秘密鑰提取詢問。B 選擇隨機數r∈Zp,求向量ω=(ω1,ω2,…,ωn*)∈使得ω1=-1 且對所滿足ρ*(i)∈S的i,ω·=0。由LSSS的定義知這樣的向量一定存在,否則向量(1,0,0,…,0)在S的張成空間中。求:
對?x∈S,計算Kx。當x∈S,沒有i使得ρ*(i)=x時,令Kx=。當x∈S,且有多個i使得ρ*(i)=x時,因為·ω=0。根據這一特性可以消除Kx中包含的。再次令X表示使得ρ*(i)=x的指標i的集合,B 可以按照下式構造Kx:
(3)挑戰。敵手發送兩個等長挑戰消息m0和m1。B 隨機選β∈{0,1},計算mβ的密文的各分量:C=mβ·Z·e(g,g)αs和C′=gs。
(4)Phase 2。與Phase 1類似。
(5)Guess。A輸出對c的猜測c′,如果c′=c,B 輸出θ=0,表示T∈Pq-parallelBDHE,此時敵手的優勢Pr[c=;如果θ≠0,則表示T∈Rq-parallelBDHE。此時敵手的優勢為。敵手B 攻擊qparallel BDHE假設的優勢為:
故任何多項式時間敵手贏得IND-SAS-CPA游戲的優勢可以忽略。
證畢。
定理2令Γ=(KG,RG,E,R,D)是一種單向代理密鑰封裝方案。
標準(密文)安全:底層密碼系統(KG,E,D)是語義安全的,不會被未獲得解密權的挑戰者攻破。
證明對于所有的PPT算法Ak,Ei∈E和m0,m1∈Mk:
密鑰安全:即使發動合謀攻擊,委托人(或被委托人)的密鑰仍無法被計算或推算。
證明對于所有PPT算法Ak:
證畢。
(1)可信任與隱私性。為保證主密鑰安全,當前CPABE方案均需要用戶向密鑰中心提供屬性集合來生成用戶所需的私鑰SK,易導致信任成本高、單點故障、用戶隱私泄露和私鑰安全等問題。本文提出的PKEMCPABE方案利用代理密鑰封裝機制,在私鑰SK生成過程中各節點間相互制約,有效抵御許可計算節點臨時作惡問題。
①PSN節點:DO在使用PkemMSK(MSK,pkPSN)對主密鑰進行封裝時,為防止PSN 作惡,將密鑰E,V嵌入KMSK,即PSN需要同時持有pkPSN,E,V才可生成解密密鑰KMSK。而DO 將E,V封裝進capsule1并發送給RKCN 節點,PSN 僅持有pkPSN,無法通過生成KMSK來解密CTMSK,因此可有效防止PSN節點作惡。
②RKCN 節點:為防止RKCN 節點作惡,PSN 節點使用PkemKeyGen(skPSN,pkDU)生成轉換密鑰rkPSN→DU時,使用密鑰XA,pkDU對skPSN進行加密,RKCN 需再持有XA和skDU才可生成解密密鑰KMSK。因此可有效防止RKCN節點作惡。
③鑒于以上分析可知,區塊鏈網絡中各參與方均無法獲得生成用戶屬性私鑰SK所需的主密鑰MSK和用戶屬性隱私,且屬性私鑰由DU本地保存,很好地解決了信任成本高、單點故障、隱私泄露和私鑰安全等問題。
(2)可追溯性。本文所提出的PKEM-CPABE 方案中,初始化、數據加解密、主密鑰加解密以及相關密鑰生成均在鏈下計算,而鏈上則通過事務進行相關參數的傳遞,所有事務均為不可篡改,因此鏈上節點可追溯整個過程.此外,由于事務的不可篡改,各節點還可通過事務信息檢測惡意節點相關攻擊,維護區塊鏈網絡穩定。
基于區塊鏈的PKEM-CPABE算法實驗采用一臺主機(CPU為酷睿i7 8代,內存為16 GB,主頻2.20 GHz,操作系統為Ubuntu19.04),并利用基于配對的PBC密碼庫(v0.5.14)[24]和Python來實現本文PKEM-CPABE算法,利用以太坊區塊鏈設置若干節點,采用Solidity 編寫的智能合約進行模擬。同時,使用基于512 bit 有限域上的橢圓曲線y2=x3+x構造160 位橢圓曲線群,實驗數據在條件相同情況下,獨立重復性實驗30次取得平均值。
如圖4所示,當數據大小設置為308 Byte,訪問策略屬性值在2~16 范圍內分別選取間隔為2 的數值。由于本文方案在加密時需要引入代理密鑰封裝機制,隨著屬性個數的增加,與文獻[4]的方案進行比較,本文方案加密時間和解密時間代價平均高出50 ms。
如圖5所示,當數據大小設置為308 Byte,訪問策略屬性個數設置為2~16、間隔為2時,隨著屬性個數增加,密鑰生成平均時間總體高于Waters方案27 ms。

圖5 同文件下單用戶密鑰生成時間對比Fig.5 Keygen time comparision of same message and single-user
如圖6所示,當數據大小設置為308 Byte,訪問策略屬性個數設置為4個,用戶數量分別以偶數遞增為16時,本文方案密鑰生成時間對比Waters方案有明顯的優勢。由于Waters方案私鑰SK由密鑰中心生成,本文方案由各用戶單獨生成,因此在分布式應用時具有明顯優勢。

圖6 同文件下多用戶密鑰生成時間對比Fig.6 Keygen time comparision of same message and multi-user
為對3.1節信譽積分和投票機制進行仿真,設定100個網絡節點進行投票模擬,其中優秀節點、普通節點和惡意節點的占比分別設置為20%、60%和20%,初始積分RS=60,閾值RS=80,最大RS=100。隨機選取工作量比例0~0.5,獎勵系數與懲罰系數值為0~10,節點作惡概率范圍0~0.5,共進行50輪投票。
如圖7所示,多輪投票后優秀節點獲得的票數逐漸升高并在后續投票過程保持領先,由于無不良記錄,其他節點更傾向于投票給信譽值高的節點;普通節點則比較穩定;而惡意節點的RS值隨著選舉輪數的增加,其信譽值逐漸減少,有效阻止了惡意節點進入子鏈。

圖7 50輪投票結果Fig.7 50 rounds of voting results
當前眾多基于區塊鏈的CP-ABE 數據共享方案仍采用一個或多個權威機構來進行密鑰的生成、分發和屬性的管理工作,工作量巨大且影響工作效率;并且容易造成單點故障和用戶隱私泄露等問題。因此,本文引入密鑰封裝機制,設計了一種PKEM-CPABE算法,能夠實現無授權機構參與下的可證明數據安全共享及其隱私保護?;谶@種可分布式計算的CP-ABE算法,本文設計了適用于該算法的雙鏈架構、區塊結構和信譽積分機制。仿真結果表明本文所提方案能夠實現安全、高效和細粒度的數據訪問控制,顯著減少了私鑰生成時間,提高了系統效率,同時利用雙鏈特性使各節點能夠誠實、并行和去中心化地為用戶分發私鑰,并實現了密鑰的全過程管理和操作行為可追溯的鏈上監管。