徐俊偉,袁景凌,2,向廣利
1(武漢理工大學(xué) 計(jì)算機(jī)與人工智能學(xué)院,武漢 430000)2(武漢理工大學(xué) 交通物聯(lián)網(wǎng)湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430000)
隨著區(qū)塊鏈[1]技術(shù)的不斷發(fā)展,智能合約[2]的出現(xiàn)將區(qū)塊鏈的應(yīng)用場景從加密貨幣擴(kuò)展到金融、電子政務(wù)、物聯(lián)網(wǎng)等各行業(yè)中.眾多產(chǎn)業(yè)加速落地區(qū)塊鏈應(yīng)用的同時(shí),鏈上數(shù)據(jù)的透明性成為了數(shù)據(jù)隱私的重大威脅.在應(yīng)用區(qū)塊鏈的生產(chǎn)系統(tǒng)中,尤其涉及到個(gè)人信息如地址、電話、單位等個(gè)人敏感數(shù)據(jù)信息,被記錄在區(qū)塊鏈各節(jié)點(diǎn)中.如何對此類信息進(jìn)行隱私保護(hù)[3]和靈活的細(xì)粒度訪問控制是區(qū)塊鏈應(yīng)用進(jìn)一步發(fā)展急需解決的問題.
目前基于角色的訪問控制機(jī)制、基于對象的訪問控制和基于屬性的訪問控制為數(shù)據(jù)隱私安全提供較好的訪問控制權(quán)限.但傳統(tǒng)的訪問控制機(jī)制在對用戶信息改變的情況下,對歷史授權(quán)數(shù)據(jù)的訪問權(quán)限存在失效的問題,并且系統(tǒng)權(quán)限過于集中可能導(dǎo)致單點(diǎn)故障或者權(quán)限濫用的不足.
針對以上問題,本文利用區(qū)塊鏈結(jié)合屬性基加密的訪問控制,提出可更新屬性的鏈上數(shù)據(jù)訪問控制的方法.利用智能合約的部署,寫入當(dāng)前訪問策略與所有節(jié)點(diǎn)屬性到區(qū)塊中.當(dāng)訪問策略更新或節(jié)點(diǎn)屬性發(fā)生變化時(shí),可根據(jù)不同區(qū)塊中記錄的訪問策略與節(jié)點(diǎn)屬性進(jìn)行訪問權(quán)限驗(yàn)證,實(shí)現(xiàn)對區(qū)塊鏈交易數(shù)據(jù)在不同策略下的塊間管理,同時(shí)也有效解決單點(diǎn)故障和權(quán)限集中管理的問題.
區(qū)塊鏈系統(tǒng)必要的安全特性和部分隱私保護(hù)方法[4]如:共識(shí)協(xié)議、哈希算法、盲簽名等技術(shù)之外,利用訪問控制對區(qū)塊鏈數(shù)據(jù)進(jìn)行權(quán)限管理[5]實(shí)現(xiàn)隱私保護(hù)方面也有相關(guān)研究,如傳統(tǒng)的基于角色的訪問控制方法(Role-Based Access Control,RBAC)和常用于分布式環(huán)境下的基于屬性基加密(Attribute-Based Encryption,ABE)的訪問控制方法[6,7].在ABE加密方案實(shí)現(xiàn)又可分為密文-策略屬性基加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)方法和密鑰-策略屬性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)方法[8,9].田等人[10]分析了兩類屬性撤銷以及3種不同的屬性撤銷方案,為云存儲(chǔ)數(shù)據(jù)安全共享提供了理論參考.基于訪問控制方法保護(hù)區(qū)塊鏈數(shù)據(jù)隱私研究方面,Jemel等人[11]提出節(jié)點(diǎn)驗(yàn)證訪問者身份,利用屬性基加密方法,在基于CP-ABE在時(shí)間維度方面,不增加撤銷成本的情況下引入了訪問授權(quán)的有效期,避免一次授權(quán)永久使用的不足.田等人[12]提出基于屬性加密算法,分別生成交易區(qū)塊和訪問策略區(qū)塊,通過不斷追加訪問策略區(qū)塊,實(shí)現(xiàn)對區(qū)塊內(nèi)容可見性的動(dòng)態(tài)調(diào)整.但增加了區(qū)塊結(jié)構(gòu)的復(fù)雜度,并且對之前區(qū)塊可見性權(quán)限區(qū)塊仍然存在.Yan等人[13]提出ANAC機(jī)制,基于所有授權(quán)用戶和元數(shù)據(jù)所有者之間的關(guān)系來強(qiáng)制訪問.通用訪問結(jié)構(gòu)和門限秘密共享實(shí)現(xiàn)區(qū)塊鏈存儲(chǔ)個(gè)人數(shù)據(jù)的訪問控制結(jié)構(gòu).
消除區(qū)塊交易與個(gè)人相關(guān)聯(lián)來對區(qū)塊數(shù)據(jù)隱私保護(hù)的研究中,Mahmood等人[14]結(jié)合環(huán)簽名和零知識(shí)證明對用戶錢包地址進(jìn)行偽裝,提出了數(shù)據(jù)可擦除的模型來改變用戶對數(shù)據(jù)的訪問以增強(qiáng)區(qū)塊數(shù)據(jù)的隱私.
消除交易與個(gè)人信息關(guān)聯(lián)在一定程度上保護(hù)了數(shù)據(jù)隱私,由于結(jié)果仍存儲(chǔ)在區(qū)塊鏈上,仍對用戶隱私造成潛在威脅.后續(xù)研究人員提出對交易信息加密隱藏的方法保護(hù)鏈上數(shù)據(jù)的隱私,也稱為賬本信息隱藏,Ben-Sasson 等人[15]利用零知識(shí)證明技術(shù)構(gòu)造交易,該方法可以隱藏交易信息來實(shí)現(xiàn)對用戶數(shù)據(jù)隱私的保護(hù),如交易發(fā)起者、交易接收者以及交易金額等.Saberhagen 等人[16]提出了 CryptoNote 協(xié)議,該協(xié)議中發(fā)起人選擇多個(gè)相同輸出構(gòu)造合法的環(huán)簽名,進(jìn)而隱藏真實(shí)發(fā)起人.目前多個(gè)區(qū)塊鏈項(xiàng)目如DigitalNode、ByteCoin、Boolberry,使用該協(xié)議作為底層框架進(jìn)而對用戶隱私進(jìn)行保護(hù).
在數(shù)據(jù)隔離省去耗時(shí)的數(shù)據(jù)加密過程保護(hù)區(qū)塊鏈上數(shù)據(jù)隱私方法的研究中,蔡等人[17]提出雙層協(xié)同的隱私數(shù)據(jù)保護(hù)方法,分為鏈間和鏈內(nèi)兩種方式保護(hù)隱私.分別對數(shù)據(jù)進(jìn)行分流處理、分區(qū)存儲(chǔ)和指定參與方的方式實(shí)現(xiàn)鏈上數(shù)據(jù)隱私保護(hù).
上述方案針對區(qū)塊鏈中訪問控制問題提出不同的解決方案進(jìn)行數(shù)據(jù)隱私保護(hù),根據(jù)屬性基加密方案實(shí)現(xiàn)細(xì)粒度[18]的訪問控制,利用簽名技術(shù)以及零知識(shí)證明等密碼學(xué)方法增強(qiáng)數(shù)據(jù)隱私,如表1所示.但以上方案存在策略及節(jié)點(diǎn)屬性更新后,對歷史區(qū)塊訪問控制失效或權(quán)限模糊、使用雙鏈結(jié)構(gòu)增加了系統(tǒng)的復(fù)雜度以及系統(tǒng)應(yīng)用構(gòu)造實(shí)現(xiàn)困難等不同的問題.
表1 區(qū)塊鏈隱私保護(hù)方案對比Table 1 Comparison of blockchain privacy protection schemes
2.2.1 雙線性對
a)雙線性:對所有的u,v∈1,a,b∈p,有e(ua,vb)=e(u,v)ab.
b)非退化性:e(g,g)≠1.
c)可計(jì)算性:存在有效多項(xiàng)式時(shí)間算法,對于?g1,g2∈1,計(jì)算e(g1,g2)的值.
2.2.2 線性秘密共享
定義在實(shí)體集P上線性秘密共享方案Π需滿足:
b)秘密共享方案Π存在一個(gè)l×n的共享矩陣M,函數(shù)ρ定義矩陣行i得到ρ(i),i=1,…,l.隨機(jī)選取v=(s,r2,…,rn),r2,…,rn∈p,s∈p為秘密共享值.Mv是根據(jù)方案Π得到關(guān)于s的l個(gè)共享組成的向量,(Mv)i屬于實(shí)體ρ(i).
2.2.3 訪問結(jié)構(gòu)
定義P={P1,P2,…,Pn}是一個(gè)群組,若?B,C:B∈,B?C,C∈,稱集合?2{P1,P2,…,Pn}是單調(diào)的.訪問結(jié)構(gòu)是集合群組P的一個(gè)非空子集.如?2{P1,P2,…,Pn}{?},在訪問結(jié)構(gòu)中的子集就被稱為授權(quán)的集合,反之則反.
在屬性基加密中,群組的角色由屬性構(gòu)成,訪問結(jié)構(gòu)包含了被授權(quán)的屬性.通常情況下,訪問結(jié)構(gòu)是指單調(diào)的訪問結(jié)構(gòu).
2.2.4 智能合約
比特幣采用基于堆棧的腳本語言,沒有復(fù)雜的循環(huán)和流程控制;以太坊則開發(fā)圖靈完備的腳本語言構(gòu)造復(fù)雜的去中心化應(yīng)用.智能合約是由事件驅(qū)動(dòng)的、具有狀態(tài)的、運(yùn)行在可復(fù)制的共享區(qū)塊鏈數(shù)據(jù)賬本的計(jì)算機(jī)程序,能夠主動(dòng)或被動(dòng)處理數(shù)據(jù),接收、存儲(chǔ)和發(fā)送價(jià)值,以及控制和管理各類鏈上智能資產(chǎn)等功能,通過預(yù)定觸發(fā)條件、相應(yīng)規(guī)則,進(jìn)而執(zhí)行預(yù)設(shè)的響應(yīng)內(nèi)容[19].以太坊借助智能合約將區(qū)塊鏈技術(shù)擴(kuò)展到除加密貨幣外的很多領(lǐng)域.其中智能合約運(yùn)行機(jī)制如圖1所示.在經(jīng)過各方確認(rèn)簽署類合同條款后,智能合約以代碼的形式存儲(chǔ)在區(qū)塊鏈當(dāng)中.
圖1 智能合約運(yùn)行機(jī)制Fig.1 Smart contract mechanism
本文使用密文策略加密(CP-ABE)方案,數(shù)據(jù)擁有者可自定義設(shè)置訪問策略,數(shù)據(jù)使用者可根據(jù)自身被授權(quán)屬性是否符合該策略要求,符合策略要求的屬性擁有者才擁有數(shù)據(jù)的訪問權(quán)限,對數(shù)據(jù)達(dá)到屬性級別的細(xì)粒度訪問控制.
在屬性基加密的訪問控制機(jī)制下引入智能合約.將訪問控制策略通過智能合約部署在區(qū)塊鏈中,調(diào)用智能合約自動(dòng)判斷數(shù)據(jù)使用者屬性信息,對數(shù)據(jù)的隱私安全實(shí)現(xiàn)靈活的訪問控制.此外區(qū)塊鏈有效避免單點(diǎn)故障服務(wù)器崩潰的風(fēng)險(xiǎn).
針對區(qū)塊鏈數(shù)據(jù)存儲(chǔ)透明公開的問題,提出可更新屬性的鏈上數(shù)據(jù)訪問控制方法.利用區(qū)塊鏈不可篡改的特性,節(jié)點(diǎn)內(nèi)部共同維護(hù)訪問策略與節(jié)點(diǎn)屬性的合約數(shù)據(jù),記錄當(dāng)前策略下各節(jié)點(diǎn)的屬性集.當(dāng)訪問策略更新或者節(jié)點(diǎn)屬性發(fā)生變化時(shí),可根據(jù)訪問策略對應(yīng)的節(jié)點(diǎn)屬性進(jìn)行數(shù)據(jù)的訪問控制驗(yàn)證,以實(shí)現(xiàn)節(jié)點(diǎn)對數(shù)據(jù)的訪問權(quán)限管理.實(shí)現(xiàn)節(jié)點(diǎn)在新策略下對區(qū)塊數(shù)據(jù)交易隱私的訪問授權(quán)改變的同時(shí),對被授權(quán)的歷史交易數(shù)據(jù)仍具有訪問的權(quán)限.
訪問控制系統(tǒng)模型如圖2所示.數(shù)據(jù)擁有者DO(Data Owner)定義數(shù)據(jù)的訪問策略,對其擁有并要分享的原始數(shù)據(jù)經(jīng)高效的AES對稱加密算法得到對稱加密密文數(shù)據(jù),之后使用CP-ABE加密方案進(jìn)行加密得到密文.通過部署的智能合約,將密文數(shù)據(jù)寫入?yún)^(qū)塊當(dāng)中,經(jīng)過P2P網(wǎng)絡(luò)傳播以及各節(jié)點(diǎn)驗(yàn)證,以及通過共識(shí)協(xié)議最終密文數(shù)據(jù)同步到所有節(jié)點(diǎn)的區(qū)塊當(dāng)中.數(shù)據(jù)使用者DU(Data User)調(diào)用智能合約方法獲取存儲(chǔ)在區(qū)塊鏈當(dāng)中的數(shù)據(jù)密文,節(jié)點(diǎn)屬性由授權(quán)中心CA(Central Authority)分配.DU對數(shù)據(jù)密文根據(jù)其屬性是否滿足對應(yīng)策略進(jìn)行授權(quán)操作,當(dāng)且僅當(dāng)DU所擁有屬性滿足DO所預(yù)置的訪問策略時(shí),表示DU具有該數(shù)據(jù)的訪問權(quán)限,進(jìn)而獲取相應(yīng)明文數(shù)據(jù),反之即不滿足DO所預(yù)置的訪問策略,用戶不具有數(shù)據(jù)的訪問權(quán)限.
圖2 訪問控制系統(tǒng)模型Fig.2 Access control system model
其中對稱加密密文數(shù)據(jù)使用IPFS文件系統(tǒng)存儲(chǔ).CA分配給DU的屬性集根據(jù)其私鑰進(jìn)行對稱加密,對屬性集密文以及DO預(yù)置訪問策略通過智能合約寫入?yún)^(qū)塊鏈當(dāng)中.
實(shí)現(xiàn)方案如下,共包含7個(gè)算法:
1)Init(P,S).
授權(quán)中心發(fā)布訪問控制策略P,根據(jù)所有屬性定義各節(jié)點(diǎn)屬性集Si.
2)Setup(1λ)→(PK,MSK).
授權(quán)中心選取安全參數(shù)λ作為輸入,輸出公共密鑰PK和系統(tǒng)主密鑰MSK.
3)KeyGen(Si,MSK)→(SKi).
授權(quán)中心根據(jù)各節(jié)點(diǎn)分配屬性集Si計(jì)算節(jié)點(diǎn)私鑰SKi.
4)EncryptS(SK,Si)→(ES).
授權(quán)中心根據(jù)各節(jié)點(diǎn)私鑰SKi對其自身屬性集Si進(jìn)行對稱加密,獲得各節(jié)點(diǎn)屬性集加密后密文屬性集集合ES.
5)DeployP(P,ES).
利用智能合約將訪問策略P和其所對應(yīng)的密文屬性集集合ES自動(dòng)化部署到區(qū)塊鏈中.
6)Encrypt(PK,mi,P)→(ABEmi).
節(jié)點(diǎn)N根據(jù)公共密鑰PK和訪問策略對明文mi進(jìn)行對稱加密處理后,將得到數(shù)據(jù)信息采用CP-ABE加密方案加密,結(jié)果輸出ABEmi.
7)Decrypt(PK,SKi,ABEmi)→(mi).
節(jié)點(diǎn)發(fā)起對數(shù)據(jù)的訪問請求,根據(jù)自身私鑰SKi首先對策略P對應(yīng)的密文屬性集集合解密得到本節(jié)點(diǎn)屬性集Si,自身屬性滿足訪問策略即可解密ABEmi得到明文mi.
1)Init(P,S)
本文方案訪問策略和各節(jié)點(diǎn)屬性集由可信授權(quán)中心進(jìn)行管理.授權(quán)中心根據(jù)預(yù)先制定的所有屬性分配相應(yīng)屬性集到各節(jié)點(diǎn),訪問策略則由數(shù)據(jù)擁有節(jié)點(diǎn)進(jìn)行設(shè)計(jì),經(jīng)授權(quán)中心管理發(fā)布.訪問策略和節(jié)點(diǎn)屬性集分別用P、Si表示.
2)Setup(1λ)→(PK,MSK)
3)KeyGen(Si,MSK)→(SKi)
授權(quán)中心根據(jù)各節(jié)點(diǎn)分配屬性集Si計(jì)算節(jié)點(diǎn)私鑰SKi.節(jié)點(diǎn)N的屬性集Si={A1,A2,…,Ak},選取K+1個(gè)隨機(jī)元素r,r1,r2,…,rk∈p,SKi={S,gαμr,gr,{gri,(uAih)riv-r}},1≤i≤k.
4)EncryptS(SK,ST)→(ES)
授權(quán)中心根據(jù)各節(jié)點(diǎn)私鑰SKi對其自身屬性集Si進(jìn)行對稱加密,獲得各節(jié)點(diǎn)屬性集加密后密文屬性集集合ES.其中輸入SK={SK1,…,SKn},ST={S1,…,Sn},輸出ES={ESK1(S1),…,ESKn(Sn)}.
5)DeployP(P,ES)
授權(quán)中心節(jié)點(diǎn)發(fā)布訪問控制策略,同時(shí)管理所有節(jié)點(diǎn)屬性,策略與屬性格式如下:
S1={A2,A4,A6,A9},S2={A1,A3,A5,A7,A8}
S為所有節(jié)點(diǎn)屬性結(jié)合,Pi為當(dāng)前訪問策略,S1、S2分別為當(dāng)前不同節(jié)點(diǎn)擁有的屬性集.授權(quán)中心通過智能合約將節(jié)點(diǎn)設(shè)計(jì)訪問策略Policy和該策略所對應(yīng)的更新后密文屬性集集合ES自動(dòng)化部署到區(qū)塊鏈中,使得策略與節(jié)點(diǎn)屬性集相對應(yīng),策略-屬性合約作用區(qū)塊如圖3所示.策略更新迭代或節(jié)點(diǎn)屬性發(fā)生改變都不會(huì)影響此時(shí)區(qū)塊對節(jié)點(diǎn)的訪問授權(quán).
圖3 策略-屬性合約作用區(qū)塊示意圖Fig.3 Policy-attribute block diagram of contract action
記錄當(dāng)前策略、節(jié)點(diǎn)當(dāng)前屬性集、歷史策略、節(jié)點(diǎn)歷史屬性集.通過確認(rèn)屬性集Si與之相應(yīng)策略P是否符合條件,進(jìn)而對數(shù)據(jù)訪問進(jìn)行不同區(qū)塊塊間的訪問控制.
6)Encrypt(PK,mi,P)→(ABEmi)
在應(yīng)用區(qū)塊鏈的系統(tǒng)中,若將原始數(shù)據(jù)文件存儲(chǔ)在區(qū)塊鏈當(dāng)中,其文件存儲(chǔ)大小必然對節(jié)點(diǎn)內(nèi)存造成巨大壓力,同時(shí)也會(huì)拉低區(qū)塊鏈性能指標(biāo).IPFS分布式文件系統(tǒng)使得文件存儲(chǔ)在無需信任的多個(gè)節(jié)點(diǎn)當(dāng)中,文件上傳后得到唯一的哈希值即文件存儲(chǔ)路徑.通過此路徑可對文件進(jìn)行檢索.利用IPFS存儲(chǔ)加密數(shù)據(jù)原件,在對數(shù)據(jù)上鏈時(shí),只需對加密數(shù)據(jù)存儲(chǔ)在IPFS的地址以及數(shù)據(jù)數(shù)字摘要進(jìn)行存儲(chǔ).
首先對原始數(shù)據(jù)文件生成數(shù)字摘要DDi=Hash(mi),通過AES對稱加密算法對文件進(jìn)行加密,得到的密文文件cti=EAES(Ki,mi),密文cti上傳至IPFS文件系統(tǒng)中作為數(shù)據(jù)持久化存儲(chǔ)得到URLi=IPFS←cti.令m=(DDi,cti,URLi),選取y=(s,y2,…,yn)T,其中s為秘密共享的值,計(jì)算λ=(λ1,…,λl)T=My,選取t1,t2,…,tl∈p,計(jì)算C=m·e(g,g)αs,C0=gs,Ci,1=μλivti,Ci,2=(μρ(Mi)h)-ti,Ci,3=gti,i=1,…,l.則:
ABEmi={(M,ρ),C,C0,{Ci,1,Ci,2,Ci,3},1≤i≤l}
(1)
節(jié)點(diǎn)調(diào)用訪問控制合約,數(shù)據(jù)生成節(jié)點(diǎn)將ABEmi密文信息存儲(chǔ)在區(qū)塊鏈當(dāng)中,即Block:ABEmi=EABE(m).一旦新的訪問策略被發(fā)布部署在區(qū)塊鏈當(dāng)中,歷史訪問策略合約失去寫入權(quán)限,僅能被調(diào)用訪問其對應(yīng)的歷史區(qū)塊信息.
(2)
其中i表示當(dāng)前策略索引,max表示發(fā)布策略總數(shù)量.
將ABEmi信息寫入?yún)^(qū)塊鏈,節(jié)點(diǎn)之間做到數(shù)據(jù)高效流通的同時(shí),對區(qū)塊塊高區(qū)間數(shù)據(jù)進(jìn)行細(xì)粒度訪問權(quán)限控制.
7)Decrypt(PK,SKi,ABEmi)→(mi)
解密算法由數(shù)據(jù)使用者執(zhí)行,將公共參數(shù)PK、節(jié)點(diǎn)密鑰SKi和密文ABEmi作為參數(shù),節(jié)點(diǎn)屬性集Si,滿足訪問策略P=(M,ρ)時(shí),即Policy:result(Res,Action)←{Si}ski,其中Res表示授權(quán)結(jié)果,Res∈{getData,Deny},getData表示對授權(quán)結(jié)果響應(yīng),Deny則推出程序.getData進(jìn)一步解密,最后輸出結(jié)果為明文mi.
節(jié)點(diǎn)N計(jì)算J={j:ρ(Mj)∈S}.選取{ωj∈p}j∈J使得∑j∈JωjMj=(1,0,…,0),其中Mj是M的第j行.計(jì)算:
(3)
(4)
mi=DAES(cti,Ki)
(5)
數(shù)據(jù)由信息擁有者DO經(jīng)過AES對稱加密處理后上傳資源信息resource即IPFS文件系統(tǒng)中.訪問策略P、節(jié)點(diǎn)私鑰SK以及節(jié)點(diǎn)屬性S統(tǒng)由授權(quán)中心CA進(jìn)行分配管理,在每次訪問策略P或節(jié)點(diǎn)屬性S發(fā)生變化時(shí),由CA對所有節(jié)點(diǎn)屬性S利用其私鑰SK加密,并將結(jié)果EAES(S)一同與訪問策略P通過合約部署到區(qū)塊鏈中,具體如圖3所示.數(shù)據(jù)使用者DU通過訪問區(qū)塊中策略-屬性,首先根據(jù)自身屬性解密歷史策略對應(yīng)的節(jié)點(diǎn)屬性,節(jié)點(diǎn)屬性符合此訪問策略條件方可進(jìn)行解密操作,解密后請求資源庫返回請求數(shù)據(jù),再次解密獲得原始數(shù)據(jù)信息mi,進(jìn)行哈希校驗(yàn)驗(yàn)證數(shù)據(jù)正確性.具體流程如圖4所示.
圖4 數(shù)據(jù)訪問流程圖Fig.4 Data access control process
定理.若判定性q-PBDHE假設(shè)成立,則敵手在多項(xiàng)式時(shí)間內(nèi)挑戰(zhàn)訪問結(jié)構(gòu)(M*,ρ*)的優(yōu)勢ε是可以忽略的.
證明:敵手選擇訪問訪問結(jié)構(gòu)(M*,ρ*),在多項(xiàng)式時(shí)間內(nèi)以不可忽略的優(yōu)勢ε贏得勝利,則存在不可忽略的優(yōu)勢ε攻擊q-PBDHE假設(shè).
1)初始化:敵手選擇訪問結(jié)構(gòu)(M*,ρ*)和參數(shù)y,其中M*是l×n的矩陣,l,n≤q.
2)系統(tǒng)建立:模擬器隨機(jī)選擇α=aq+1+α′,α′∈p,則e(g,g)α=e(ga,gaq)·e(g,g)α′,并將參數(shù)發(fā)送給敵手.屬性全集S中每個(gè)屬性元素Ai用x表示,令X={ρ*(i)=x},隨機(jī)選取h′,l′∈p,返回給敵手
5)重復(fù)查詢私鑰過程,敵手發(fā)送屬性集給挑戰(zhàn)者以獲取私鑰,但屬性集不滿足訪問結(jié)構(gòu)(M*,ρ*).
本文提出的可更新屬性的鏈上數(shù)據(jù)訪問控制方法對數(shù)據(jù)隱私提供了可更新屬性和訪問策略、細(xì)粒度的訪問控制,同時(shí)利用區(qū)塊鏈節(jié)點(diǎn)共識(shí)機(jī)制和防篡改、去中心化等特點(diǎn)實(shí)現(xiàn)權(quán)限授權(quán)的靈活更新.
1)去中心化
本文提出的訪問控制機(jī)制策略與節(jié)點(diǎn)屬性通過智能合約部署到區(qū)塊鏈當(dāng)中,避免了服務(wù)器單點(diǎn)故障服務(wù)崩潰的風(fēng)險(xiǎn),以及集中式權(quán)限管理.
2)防篡改
利用區(qū)塊鏈節(jié)點(diǎn)的共識(shí)機(jī)制,如PBFT實(shí)用拜占庭共識(shí)機(jī)制,可容錯(cuò)三分之一惡意節(jié)點(diǎn)即N=3f+1,N為節(jié)點(diǎn)總數(shù)、f為惡意或崩潰節(jié)點(diǎn).訪問策略與節(jié)點(diǎn)屬性一旦部署到區(qū)塊鏈中,即使存在小部分惡意節(jié)點(diǎn),區(qū)塊數(shù)據(jù)仍可以保持一致性,有效防止了部分惡意節(jié)點(diǎn)偽造策略或?qū)傩源鄹臄?shù)據(jù)訪問控制權(quán)限.
3)數(shù)據(jù)隱私性和安全性
在數(shù)據(jù)存儲(chǔ)過程中,原文件被加密后存儲(chǔ)在IPFS文件系統(tǒng)中,保證了數(shù)據(jù)的安全性.節(jié)點(diǎn)發(fā)起數(shù)據(jù)訪問請求,利用私鑰解密得到歷史屬性,符合所對應(yīng)的訪問策略才可解密得到數(shù)據(jù)密鑰K、加密數(shù)據(jù)地址URL和原文件數(shù)字摘要DD.細(xì)粒度的訪問控制機(jī)制保護(hù)了數(shù)據(jù)的隱私性.在節(jié)點(diǎn)屬性發(fā)生改變以及訪問策略更新時(shí),節(jié)點(diǎn)仍可通過合約訪問歷史策略-屬性信息,保證歷史授權(quán)不受當(dāng)前屬性或策略變化影響,同時(shí)又對新的授權(quán)策略正確執(zhí)行.
本文實(shí)驗(yàn)測試將訪問策略通過智能合約部署到區(qū)塊鏈以及調(diào)用合約獲取數(shù)據(jù)的訪問授權(quán)過程.實(shí)驗(yàn)硬件環(huán)境如下:操作系統(tǒng)為Windows,處理器為 Intel Core i5-4210,內(nèi)存為8GB.軟件環(huán)境:使用以太坊作為區(qū)塊鏈開發(fā)平臺(tái),go語言客戶端版本為Geth/v1.9.11-stable.合約開發(fā)采用Solidity語言編寫.區(qū)塊鏈節(jié)點(diǎn)通過設(shè)置不同端口來模擬節(jié)點(diǎn)間的通信.對于數(shù)據(jù)實(shí)體加密上傳IPFS文件系統(tǒng)、下載解密獲取原文件不在本實(shí)驗(yàn)中展示.
區(qū)塊鏈讀寫速度與運(yùn)行環(huán)境的硬件相關(guān)外,網(wǎng)絡(luò)延遲也是影響節(jié)點(diǎn)數(shù)據(jù)同步的一個(gè)重要因素.由于上鏈內(nèi)容為ABE(DDi,Ki,URLi),即寫入內(nèi)容大小保持不變.模擬在屬性個(gè)數(shù)為6個(gè),不同節(jié)點(diǎn)數(shù)量的情況下,對數(shù)據(jù)加密、解密、上鏈和讀取所消耗時(shí)間進(jìn)行測試,如表2所示.實(shí)驗(yàn)通過啟動(dòng)不同的端口來代表不同節(jié)點(diǎn),測試區(qū)塊鏈系統(tǒng)中加密、解密、寫入和讀取的時(shí)間代價(jià).帶寬、距離、環(huán)境等因素產(chǎn)生的網(wǎng)絡(luò)延遲則不在測試范圍.
表2 節(jié)點(diǎn)個(gè)數(shù)加解密和讀寫比較Table 2 Encryption/decryption and read/write comparison of nodes number
通過將節(jié)點(diǎn)屬性加密后與當(dāng)前訪問策略部署上鏈,在節(jié)點(diǎn)屬性或訪問策略發(fā)生變化時(shí),保證歷史情況信息的授權(quán)不受當(dāng)前策略的影響.屬性-策略更新分為屬性集加密和屬性-策略部署上鏈兩個(gè)步驟.通過模擬此過程各項(xiàng)指標(biāo)時(shí)間代價(jià)如圖5所示,當(dāng)區(qū)塊鏈節(jié)點(diǎn)個(gè)數(shù)設(shè)置為6個(gè),與訪問策略所對應(yīng)的所有節(jié)點(diǎn)屬性集大小分別設(shè)置為1k、2k、4k、8k時(shí),加密上鏈過程時(shí)間消耗控制在4000ms以內(nèi),讀取解密時(shí)間則在45ms以內(nèi),時(shí)間代價(jià)隨著節(jié)點(diǎn)屬性集大小線性增長.其中enc代表Waters方案,可以看出本方案加密過程總體過程時(shí)間略高于Waters方案,結(jié)合上表中數(shù)據(jù)寫入?yún)^(qū)塊鏈時(shí)間消耗代價(jià),結(jié)果是可預(yù)料的并且是合理的,實(shí)際系統(tǒng)中采用數(shù)據(jù)異步上鏈的方法,以此解決區(qū)塊鏈數(shù)據(jù)寫入延時(shí)的影響.
圖5 屬性-策略更新時(shí)間消耗Fig.5 Attribute-policy update time consumption
本文采用CP-ABE加密方案對數(shù)據(jù)進(jìn)行加密,在加密內(nèi)容ABE(DDi,Ki,URLi)大小不變的前提下,根據(jù)訪問策略所需屬性個(gè)數(shù)的不同,對無區(qū)塊鏈條件下數(shù)據(jù)加密、解密過程時(shí)間消耗與結(jié)合區(qū)塊鏈進(jìn)行存儲(chǔ)讀取進(jìn)行訪問控制的數(shù)據(jù)加密、解密過程時(shí)間消耗進(jìn)行對比.數(shù)據(jù)計(jì)算時(shí)間消耗如圖6所示,在以6個(gè)區(qū)塊鏈節(jié)點(diǎn)同步的狀態(tài)下,隨著訪問策略所需屬性個(gè)數(shù)的增加數(shù)據(jù)加密時(shí)間代價(jià)在1000~1600ms,而解密所需時(shí)間約100~350ms,數(shù)據(jù)上鏈時(shí)間1000~3000ms,數(shù)據(jù)讀取鏈上數(shù)據(jù)時(shí)間13~21ms.對鏈上數(shù)據(jù)讀寫時(shí)間消耗與屬性個(gè)數(shù)無關(guān).
圖6 加解密與鏈上時(shí)間代價(jià)Fig.6 Encryption-decryption to blockchain time consumption
針對云服務(wù)訪問控制機(jī)制存在權(quán)限集中管理、歷史數(shù)據(jù)訪問權(quán)限不可控等不足,利用區(qū)塊鏈智能合約與節(jié)點(diǎn)的共識(shí)機(jī)制,提出基于屬性加密的鏈上數(shù)據(jù)訪問控制方法.該方法將訪問策略與節(jié)點(diǎn)屬性通過智能合約部署到區(qū)塊鏈中,節(jié)點(diǎn)發(fā)出訪問請求時(shí),需解密該數(shù)據(jù)應(yīng)用訪問策略對應(yīng)節(jié)點(diǎn)屬性,符合策略即表示獲得授權(quán).通過記錄訪問策略與節(jié)點(diǎn)屬性,對當(dāng)前以及歷史數(shù)據(jù)訪問權(quán)限做出有效分離,同時(shí)實(shí)現(xiàn)數(shù)據(jù)細(xì)粒度的訪問控制;在保護(hù)數(shù)據(jù)的安全性方面,通過鏈上記錄數(shù)據(jù)存儲(chǔ)地址,鏈下IPFS文件系統(tǒng)實(shí)體存儲(chǔ)加密源數(shù)據(jù)的方式,增強(qiáng)實(shí)體數(shù)據(jù)的安全性.
小型微型計(jì)算機(jī)系統(tǒng)2023年2期