鄭良漢,何 亨+,童 潛,楊 湘,陳 享
1.武漢科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,武漢 430065
2.武漢科技大學(xué) 湖北省智能信息處理與實時工業(yè)系統(tǒng)重點實驗室,武漢 430065
云計算技術(shù)為用戶在第三方服務(wù)器上存儲數(shù)據(jù)提供了一種低成本的解決方案,近年來發(fā)展迅速。隨著云計算技術(shù)的日益普及,許多傳統(tǒng)領(lǐng)域都利用云計算技術(shù)來解決實際問題[1-3],而存儲在云服務(wù)器上的敏感數(shù)據(jù)被攻擊與泄露的新聞屢見不鮮[4-6],因此在云環(huán)境中,建立訪問控制策略來保護用戶數(shù)據(jù)就顯得尤為重要。基于屬性的加密(attribute-based encryption,ABE)[7]是一種同時提供訪問控制和加密功能的加密概念,是解決云計算中安全問題的有效方案。與傳統(tǒng)的一對一的公鑰加密方案不同,ABE是一種一對多的加密算法,這為實現(xiàn)一對多數(shù)據(jù)共享,細粒度、非交互式的訪問控制方案提供了基礎(chǔ)。為了提高ABE 方案的靈活性與安全性,Bethencourt與Sahai等人提出了密文與訪問控制策略相關(guān)聯(lián)的密文策略ABE(ciphertext-policy attribute-based encryption,CP-ABE)[8],用戶密鑰與用戶的屬性集相關(guān)聯(lián),同時文件的訪問控制策略(即訪問結(jié)構(gòu))由數(shù)據(jù)擁有者來制定,密文基于訪問結(jié)構(gòu)來加密。如圖1 所示,數(shù)據(jù)擁有者制定樹形結(jié)構(gòu)的訪問控制策略,即訪問樹,其葉節(jié)點為用戶的屬性,非葉節(jié)點為門限值(and,or,of);只有User 1 和User 4 可以使用密鑰解密密文,因為它們的屬性滿足訪問樹。Waters 于2011 年提出了基于LSSS(linear secret sharing scheme)的CP-ABE[9],進一步地提高了安全性與效率。
在實際運用中,被加密的數(shù)據(jù)文件通常具有層次關(guān)系,這種關(guān)系通常出現(xiàn)在軍事與醫(yī)療領(lǐng)域。以個人電子病歷為例,一份病歷通??梢苑譃閮蓚€文件:含敏感信息的個人信息,如姓名、地址、聯(lián)系方式等;不含敏感信息的診斷與醫(yī)治記錄,這部分可用作醫(yī)學(xué)研究。用戶在分享這兩個文件時,希望其主治醫(yī)生能訪問到所有文件,而醫(yī)學(xué)研究者只能訪問到診斷與醫(yī)治記錄文件?,F(xiàn)有的CP-ABE 算法沒有考慮多個文件的訪問結(jié)構(gòu)具有層次關(guān)系,需要對每個文件分別加密實現(xiàn)其訪問控制需求,這將產(chǎn)生較大的計算與存儲開銷。
現(xiàn)有的大多數(shù)CP-ABE 只有一個授權(quán)機構(gòu),這在用戶數(shù)量很大時給單一授權(quán)機構(gòu)帶來的私鑰分發(fā)與維護的工作壓力極大,短時間內(nèi)大量用戶發(fā)起獲取私鑰請求可能會直接導(dǎo)致系統(tǒng)崩潰,也不滿足當前大規(guī)模的分布式計算環(huán)境。同時單授權(quán)機構(gòu)還存在安全問題,一旦授權(quán)機構(gòu)被攻擊或叛變將導(dǎo)致所有用戶私鑰被泄露。區(qū)塊鏈是以比特幣為代表的數(shù)字加密貨幣體系的核心支撐技術(shù)[10]。區(qū)塊鏈技術(shù)的核心優(yōu)勢是去中心化,能夠通過運用數(shù)據(jù)加密、時間戳、分布式共識等手段,在分布式系統(tǒng)中實現(xiàn)各節(jié)點之間協(xié)調(diào)與協(xié)作,從而為解決中心化機構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲不安全等問題提供了解決方案。區(qū)塊鏈的這些特性使其極其適合解決傳統(tǒng)CP-ABE 單一授權(quán)機構(gòu)存在的問題。
Fig.1 Example of data access process in CP-ABE圖1 CP-ABE 數(shù)據(jù)訪問過程示例
針對上述問題,本文提出了一種云環(huán)境中基于區(qū)塊鏈的多授權(quán)機構(gòu)訪問控制方案(cloud data access control scheme based on blockchain with multi-authority,BMAC)。本文的主要工作與貢獻如下:
(1)設(shè)計了一種層次化的CP-ABE(BMAC-CPABE)算法。如圖2 所示,兩個文件m1、m2的訪問結(jié)構(gòu)為訪問樹T1、T2,T1、T2具有層次關(guān)系,BMACCP-ABE 將它們整合成一個完整的訪問樹T,對于m1、m2,僅需進行一次加密操作。如圖3 所示,User 3的屬性滿足T中與m2相關(guān)的部分,可解密得到m2,User 1 的屬性滿足整個T,可解密得到m1、m2,而User 2 不滿足T中任何部分,無法解密。這種特性顯著降低了CP-ABE 算法的計算與存儲開銷,從而通過BMAC-CP-ABE 可以高效地實現(xiàn)云環(huán)境中對大量數(shù)據(jù)文件的細粒度密文訪問控制。
(2)結(jié)合BMAC-CP-ABE,實現(xiàn)了一種基于區(qū)塊鏈的多授權(quán)機構(gòu)密鑰管理方法。通過區(qū)塊鏈技術(shù),該方法無需中央授權(quán)機構(gòu)(central authority,CA),并使得所有授權(quán)機構(gòu)能夠誠實、并行和去中心化地進行私鑰分發(fā),在授權(quán)機構(gòu)分發(fā)私鑰出錯時,還能進行責任追究,從而解決了在云環(huán)境中進行密文訪問控制時,單一授權(quán)機構(gòu)導(dǎo)致的安全性與可靠性問題。
Fig.2 Example of integrated access structure圖2 整合訪問結(jié)構(gòu)示例
Fig.3 Example of data access process in BMAC-CP-ABE圖3 BMAC-CP-ABE 數(shù)據(jù)訪問過程示例
Sahai 與Waters 于2005 年提出的混雜身份基加密[7]是屬性基加密的原型,用戶的私鑰中包含其擁有的屬性集合A′,消息發(fā)送者選擇一組屬性集合A來加密消息,若A與A′相交元素的個數(shù)大于消息發(fā)送者預(yù)先設(shè)置的門限值t,則用戶能夠成功解密密文。但這種門限結(jié)構(gòu)的訪問結(jié)構(gòu)靈活度十分有限,且門限參數(shù)由授權(quán)機構(gòu)設(shè)置,訪問控制策略并不能由發(fā)送方?jīng)Q定。為實現(xiàn)更靈活的訪問策略,Bethencourt等人于2007 年提出了CP-ABE,使用了樹形訪問結(jié)構(gòu)來支持屬性的AND、OF 和OR 操作,只有用戶私鑰中的屬性集合滿足消息發(fā)送方制定的樹形訪問結(jié)構(gòu)時,才能夠解密出密文,但是此文中的方案只在標準模型下是安全的。2008 年,Goyal 等人提出的一種新的CP-ABE 方 案[11],其 在DBDH(decisional bilinear Diffie-Hellman)假設(shè)下證明是安全的,但是方案的效率很低,私鑰與密文的長度和加解密的時間在最壞的情況下成n3.42次方增長(n為訪問樹中節(jié)點的數(shù)量)。2011 年,Waters提出了一種基于LSSS 矩陣訪問結(jié)構(gòu)的CP-ABE[9],在達到d-Parallel BDHE(decisional parallel bilinear Diffie-Hellman exponent)安 全 的 同時,私鑰與密文長度和加解密時間隨屬性數(shù)量線性增長。2014年,He等人提出了ACPC-CP-ABE(access control mechanism for P2P storage cloud CP-ABE)方案,相對于以往方案具有較高的效率[12]。
對于數(shù)據(jù)文件之間的層次關(guān)系,傳統(tǒng)CP-ABE 方案[13-15]需要對各文件分別進行加密,不同文件對應(yīng)著不同的訪問結(jié)構(gòu),并沒有考慮到文件間的層次關(guān)系。
對于多授權(quán)機構(gòu)問題,2007 年,Chase 首次給出了一個多授權(quán)機構(gòu)的ABE 方案[16],方案中CA 與多個屬性授權(quán)機構(gòu)相互協(xié)作來完成系統(tǒng)初始化與私鑰的分發(fā)。但方案僅支持基本的ABE 方案,不夠靈活,且CA 存在風險。2008 年,Lin 等人采用密鑰分發(fā)和聯(lián)合的零秘密共享技術(shù)提出了一種無CA 的多授權(quán)機構(gòu)的ABE 方案[17],但是方案最多只能防止k個用戶共謀,且方案中的訪問控制策略無法由數(shù)據(jù)擁有者來制定,不符合數(shù)據(jù)共享場景。2013 年,Jung 等人提出了隱私保護的多授權(quán)機構(gòu)CP-ABE(AC-CP-ABE)方案[18],方案中事先將系統(tǒng)屬性進行分組,使用戶屬性在每一組中只會出現(xiàn)一次,AA(attribute authority)以屬性組為單位為用戶分發(fā)私鑰構(gòu)件,最后一個AA在得到全部私鑰構(gòu)件后合成最終私鑰并分發(fā)給用戶。方案中的最后一個AA 存在較大安全隱患且方案中的訪問結(jié)構(gòu)是基于樹形的,效率較低。2015 年,Wang 等人提出了輕量級的多授權(quán)機構(gòu)CP-ABE 方案[19],方案中授權(quán)機構(gòu)私鑰生成的時間復(fù)雜度僅與AA 數(shù)量相關(guān),效率較高。然而方案采用了CA 且CA承擔了較大部分的隱私工作,安全性較低。
近幾年已有學(xué)者將CP-ABE 與區(qū)塊鏈技術(shù)相結(jié)合,2017 年Yuan 等人提出了一種可追究責任的CPABE 方案[20],數(shù)據(jù)的存儲與更改都記錄在區(qū)塊鏈上,任意第三方可驗證持有解密密鑰者的身份。Zhang等人于2018 年提出了一種物聯(lián)網(wǎng)中的基于CP-ABE和區(qū)塊鏈技術(shù)的數(shù)據(jù)共享方案[21],方案中的所有數(shù)據(jù)共享(或訪問)請求都通過區(qū)塊鏈中的事務(wù)(類似于比特幣網(wǎng)絡(luò)中的交易)與智能合約交互,數(shù)據(jù)分享者可通過事務(wù)十分方便地更改訪問控制表,靈活性較高。同年Wang 等人提出了一種基于屬性密碼體制和區(qū)塊鏈技術(shù)的安全電子健康記錄系統(tǒng)[22],實現(xiàn)了細粒度訪問控制的同時保證了醫(yī)療數(shù)據(jù)的完整性和可追溯性。以上方案均將區(qū)塊鏈技術(shù)用于存儲密文,目前尚未有方案將區(qū)塊鏈技術(shù)與授權(quán)機構(gòu)的私鑰分發(fā)工作相結(jié)合。
Beimel 最先給出了LSSS 的定義[23]:一個擁有p個屬性(p∈Zp)秘密的共享方案Π,如果它滿足下面的條件,就稱它是線性的。
(1)每個屬性都可以用Zp中的一個向量來表示。
(2)秘密共享方案Π中存在一個l×n的矩陣M,該矩陣被稱為共享生成矩陣。對所有的行i=1,2,…,l,令函數(shù)ρ(i)表示矩陣M的第i行所對應(yīng)的屬性。選取向量v=(s,r2,r3,…,rn),其中s∈Zp是需要共享的主秘密,r2,r3,…,rd∈Zp隨機選取。由Π可知,λi=(Mv)i是s的l個子秘密。
另外Beimel 證明了當滿足LSSS 分享條件時,就一定可以恢復(fù)出秘密s。
對于任意線性秘密共享方案若滿足上面的定義,則其能夠同時滿足下面介紹的線性重構(gòu)性質(zhì)。令Π是一個訪問結(jié)構(gòu)為T的LSSS 方案,S∈T是一個授權(quán)集合,同時令I(lǐng)={i:ρ(i)∈S},其中I?{1,2,…,l}??梢栽谏删仃嘙大小的多項式時間內(nèi)找到常數(shù)∑i∈I ωiλi=s滿足:使得如果{λi}是方案Π中秘密s的有效分享,則有∑i∈I ωiλi=s。
如果隨機選取的向量v=(s1,s2,…,sj,…,sn),其中sj∈Zp是需要共享的n個秘密中的第j個,其對應(yīng)著同策略樹形結(jié)構(gòu)中的某個非葉節(jié)點。在恢復(fù)秘密時如果擁有的屬性集合能滿足此非葉節(jié)點,則可以在多項式時間內(nèi)找到{ωi∈Zp}i∈I滿足:
其中,εj為第j個元素值是1,其余元素值是0 的長度為n的行向量。然后計算得sj=∑i∈I ωi,jλi,從而實現(xiàn)滿足部分策略得到部分秘密的結(jié)果。
D-Parallel BDHE 假設(shè)[9]定義如下:用生成器g選擇素數(shù)階p的雙線性群G,并隨機選擇β,s,b1,b2,…,bq∈Zp。如果敵手僅知曉:
那么其無法得到e(g,g)βq+1s∈GT。
如圖4 所示,每個數(shù)據(jù)區(qū)塊一般包含區(qū)塊頭Header和區(qū)塊體Body 兩部分。區(qū)塊頭封裝了當前版本號、前一區(qū)塊地址、當前區(qū)塊的目標哈希值、解隨機數(shù)、Merkle根以及時間戳等信息。
Merkle 樹是一個基于哈希算法的數(shù)據(jù)結(jié)構(gòu),它的特點是每一個非葉子節(jié)點都是其葉子節(jié)點的哈希值。在點對點的網(wǎng)絡(luò)中,可以使用Merkle 樹來驗證數(shù)據(jù)是否被篡改或接收到的數(shù)據(jù)是否損壞。在區(qū)塊鏈中生成的所有記錄通過Merkle 樹的哈希過程生成唯一的Merkle根,存在區(qū)塊鏈的頭部。
每次記賬權(quán)的節(jié)點將當前區(qū)塊鏈接到前一區(qū)塊,形成最新的區(qū)塊主鏈。各個區(qū)塊依次環(huán)環(huán)相接,形成從創(chuàng)世區(qū)塊到當前區(qū)塊的一條最長主鏈,從而記錄了區(qū)塊鏈數(shù)據(jù)的完整歷史。此特性能夠提供區(qū)塊鏈數(shù)據(jù)的溯源和定位功能,任意數(shù)據(jù)都可以通過此鏈式結(jié)構(gòu)順藤摸瓜、追本溯源。
如何在分布式系統(tǒng)中高效地達成共識是分布式計算領(lǐng)域的重要研究問題,區(qū)塊鏈技術(shù)的核心優(yōu)勢之一就是能夠在決策權(quán)高度分散的去中心化系統(tǒng)中使得各節(jié)點高效地針對區(qū)塊數(shù)據(jù)的有效性達成共識。通俗地來說就是區(qū)塊鏈技術(shù)可以在海量的節(jié)點中選取出擁有合法記賬權(quán)的節(jié)點,并對此節(jié)點生成的區(qū)塊進行校驗,以保證網(wǎng)絡(luò)分布式記賬的一致性。
早期的比特幣區(qū)塊鏈采用高度依賴節(jié)點算力的工作量證明(proof of work,PoW)機制來實現(xiàn)比特幣網(wǎng)絡(luò)的共識。其核心思想是通過引入分布式節(jié)點的算力競爭來保證數(shù)據(jù)一致性和共識的安全性[24]。PoW 共識機制很明顯的缺點是強大的算力會導(dǎo)致大量的資源浪費(如電力)。隨著區(qū)塊鏈技術(shù)的發(fā)展和各種競爭幣的相繼涌現(xiàn),研究者提出多種不依賴算力而能夠達成共識的機制,例如點點幣首創(chuàng)的權(quán)益證明(proof of stake,PoS)共識[25],PoS 共識本質(zhì)上是采用權(quán)益證明來代替PoW 中的基于哈希算力的工作量證明,是由系統(tǒng)中具有最高權(quán)益而非最高算力的節(jié)點獲得區(qū)塊記賬權(quán)。
Fig.4 Block structure of blockchain圖4 區(qū)塊鏈的區(qū)塊結(jié)構(gòu)
比特股首創(chuàng)了授權(quán)股份證明(delegated proof of stake,DPoS)共識機制[26],其基本思路類似于“董事會決策”,即系統(tǒng)中每個股東節(jié)點可以將其持有的股份權(quán)益作為選票授予一個代表,獲得票數(shù)最多且愿意成為代表的前n個節(jié)點將進入“董事會”,按照既定的時間表輪流對交易進行打包結(jié)算并且簽署(即生產(chǎn))一個新區(qū)塊。每個區(qū)塊被簽署之前,必須先驗證前一個區(qū)塊已經(jīng)被受信任的代表節(jié)點所簽署。“董事會”的授權(quán)代表節(jié)點可以從每筆交易的手續(xù)費中獲得收入,授權(quán)代表節(jié)點必須對其他股東節(jié)點負責,如果其錯過簽署相對應(yīng)的區(qū)塊,則股東將會收回選票從而將該節(jié)點“投出”董事會。DPoS 共識機制中每個節(jié)點都能夠自主決定其信任的授權(quán)節(jié)點且由這些節(jié)點輪流記賬生成新區(qū)塊,因而大幅減少了參與驗證和記賬的節(jié)點數(shù)量,可以實現(xiàn)快速共識驗證。
本文中區(qū)塊鏈技術(shù)所使用的共識機制借鑒于DPoS 機制但有所不同。系統(tǒng)中所有節(jié)點(屬性授權(quán)機構(gòu)AA)自動進入“董事會”并維護一個積分表,按照既定的時間表輪流對私鑰生成操作進行記錄并生成新區(qū)塊。根據(jù)系統(tǒng)的負載情況,每一時間輪中擁有記賬權(quán)的節(jié)點(即需要進行私鑰分發(fā)工作的節(jié)點,當值節(jié)點)可能會有多個,而其他節(jié)點成為監(jiān)督節(jié)點,驗證當值節(jié)點產(chǎn)生的數(shù)據(jù)塊的有效性。在一個時間輪結(jié)束后,所有合法數(shù)據(jù)塊被整合到一個區(qū)塊中并鏈接至上一區(qū)塊,對生成過錯誤數(shù)據(jù)塊的當值節(jié)點進行扣分,正確完成任務(wù)的當值節(jié)點進行加分,之后開始下一時間輪的工作。
BMAC 概述如下:首先,屬性授權(quán)機構(gòu)(AA)群執(zhí)行系統(tǒng)初始化操作并生成系統(tǒng)屬性與相關(guān)密鑰;之后,當有用戶想要分享數(shù)據(jù)文件時,他先選擇n個對稱密鑰{ck1,ck2,…,ckn}用以對稱加密這n個數(shù)據(jù)文件{f1,f2,…,fn},然后使用BMAC-CP-ABE 算法加密{ck1,ck2,…,ckn},并將生成的密文上傳至云服務(wù)商(cloud server,CS);當有數(shù)據(jù)訪問者(data visitor,DV)想要訪問數(shù)據(jù)文件時,他先從AA 群處獲取與其屬性相關(guān)的私鑰,然后從CS 處下載密文并嘗試解密,若DV 的屬性滿足數(shù)據(jù)擁有者制定的部分訪問控制策略時,他能解密得到部分對稱密鑰,滿足全部訪問控制策略時能得到全部的對稱密鑰,之后DV 使用他得到的對稱密鑰去解密密文,得到原始的數(shù)據(jù)文件。
本文認為在BMAC 中CS 是誠實且好奇的,即與相關(guān)工作[24]為相同的安全性假設(shè),CS 將會誠實地執(zhí)行用戶所請求的操作,但它也試圖獲取存儲在其中的機密數(shù)據(jù)文件和對稱密鑰。此外,CS 一直在線,提供穩(wěn)定的服務(wù)。AA 被劃分為當值A(chǔ)A 與監(jiān)督AA,當值A(chǔ)A 會按照算法規(guī)則產(chǎn)生系統(tǒng)公鑰、主密鑰與用戶私鑰,但可能給用戶分發(fā)與其屬性不相符的私鑰;監(jiān)督AA 會對當值A(chǔ)A 的私鑰分發(fā)工作進行監(jiān)督。AA 一直在線,不會主動泄露系統(tǒng)主密鑰和用戶私鑰,且有一種將私鑰安全傳輸給用戶的方法。用戶可以隨時獲得系統(tǒng)的服務(wù)。此外,任何數(shù)量的未經(jīng)授權(quán)的用戶都可能發(fā)起串謀攻擊并試圖獲取機密數(shù)據(jù)。
在BMAC 中設(shè)計基于區(qū)塊鏈的多授權(quán)機構(gòu)密鑰管理方法,首先描述了用作區(qū)塊鏈共識與系統(tǒng)負載均衡的滑動窗口工作模式,之后描述了存儲私鑰的區(qū)塊結(jié)構(gòu)與AA 間的協(xié)作過程,最后描述了用戶獲取到錯誤私鑰時的責任追究。
4.3.1 滑動窗口工作模式
基于DPoS 共識機制[26],設(shè)計滑動窗口工作模式確定系統(tǒng)中每個屬性授權(quán)機構(gòu)AA 的身份,保證AA輪流成為當值A(chǔ)A 或監(jiān)督AA,不存在擁有特殊權(quán)利的AA,達到去中心化的目的,同時用于實現(xiàn)區(qū)塊鏈的共識與系統(tǒng)的負載均衡。
系統(tǒng)建立時由首個AA 產(chǎn)生系統(tǒng)公鑰、主密鑰與區(qū)塊鏈中加密數(shù)據(jù)的對稱密鑰,然后分發(fā)給其他AA共同維護。AA 群協(xié)商出一個時間輪表并維護一個積分表,每輪開始時,根據(jù)私鑰分發(fā)的工作壓力大小選擇一個或多個AA 成為當值A(chǔ)A,其他AA 成為監(jiān)督AA。當值時間結(jié)束時,工作窗口向右滑動。如圖5所示,初始時工作量較小,工作窗口大小為1,AA1成為當值A(chǔ)A,其余成為監(jiān)督AA。首個當值時間結(jié)束后向AA 群發(fā)起私鑰申請的數(shù)量增多,工作窗口隨之增大為3,因此第二個當值時間AA2、AA3、AA4成為當值A(chǔ)A,其余成為監(jiān)督AA。第三個當值時間AA5、AA6、AA7成為當值A(chǔ)A,其余成為監(jiān)督AA。第三個當值時間結(jié)束時工作壓力有所減小,因此工作窗口減為2,第四個當值時間AA8、AA1成為當值A(chǔ)A,其余成為監(jiān)督AA。
Fig.5 Slide work window圖5 滑動工作窗口
4.3.2 區(qū)塊結(jié)構(gòu)與協(xié)作過程
每當用戶向AA 群發(fā)起私鑰申請工作,則全體AA 記錄其用戶編號UID與其擁有的屬性集合Attrset。當值A(chǔ)A 為其分發(fā)私鑰,并在完成時將數(shù)據(jù)寫到Item 中,每個Item 可存10 條數(shù)據(jù),每個Item block 擁有10 個Item 與一個header,Item 與Item block 的存儲層級結(jié)構(gòu)如圖6 所示。其中header 中的IbID為此Item block 的 標 識 符,UIDs為 此Item block 中 所 有Item 中的UID合集,AID為完成此Item block 的AA的標識符。Item 中每條數(shù)據(jù)包含被分發(fā)私鑰的用戶的標識符UID、分發(fā)私鑰時的時間戳Time、用戶的屬性集合Attr set、分發(fā)私鑰過程中的隨機數(shù)t、分發(fā)的私鑰SK。在AA 完成了此Item block 之后,將其廣播給其他AA,由監(jiān)督AA 對其進行審計。每個監(jiān)督AA會對此Item block 100 條數(shù)據(jù)隨機抽取一到兩條,首先用自己的UID與Attr set表審計此條數(shù)據(jù)中的Attr set是否錯誤,然后用Attr set、t、PK、MSK計算出SK,審計SK是否存在錯誤。若審計不通過,則廣播此Item block 的IbID與出問題的UID,收到廣播的所有AA 對此條可能出錯的數(shù)據(jù)進行審計,若的確出錯,則在系統(tǒng)積分表上對負責此數(shù)據(jù)的AA 執(zhí)行扣分,負責此數(shù)據(jù)的AA 對此條數(shù)據(jù)進行重寫并廣播修改后的Item block。若審計通過,則廣播通過。若所有監(jiān)督AA 對此Item block 的審計均通過,則判定此Item block 合 法,對 負 責 此Item block 的AA 進 行 加分。在當值時間結(jié)束時,每個AA 對所有合法的Item block 進行哈希操作并生成存儲私鑰分發(fā)信息的Merkle 樹,最后生成此當值輪的區(qū)塊。為保證用戶私鑰的安全性,區(qū)塊中的所有Item block 會被對稱加密,然后此區(qū)塊將其鏈到上一區(qū)塊之后。所有AA 共同維護一條不可篡改的區(qū)塊鏈。加密之前的每一區(qū)塊的結(jié)構(gòu)如圖7 所示。
Fig.6 Structure of item block圖6 Item block 結(jié)構(gòu)
Fig.7 Structure of blockchain圖7 區(qū)塊鏈結(jié)構(gòu)
4.3.3 責任追究
當用戶私鑰發(fā)現(xiàn)自己的私鑰存在問題(自己的屬性集滿足訪問結(jié)構(gòu)卻不能完成解密,或不滿足訪問結(jié)構(gòu)卻能解密)時,可以向AA 群提出申訴。
所有AA 根據(jù)申訴用戶的私鑰的時間戳來找到相應(yīng)區(qū)塊,然后根據(jù)每個Item block 的header 中的UIDs 找到此用戶的私鑰分發(fā)記錄,重新對其進行私鑰生成計算,若不存在錯誤,則駁回申訴;若的確存在錯誤,則對負責此用戶私鑰分發(fā)的AA 進行扣分,當值節(jié)點對此用戶重新進行私鑰分發(fā)工作。
每次產(chǎn)生扣分操作時,若某AA 的信用積分已低于0,則AA 群在此輪當值結(jié)束時將其踢出,并重新進行系統(tǒng)初始化。
BMAC-CP-ABE 算法包含4 個函數(shù):系統(tǒng)建立、私鑰生成、加密和解密,具體如下:
(1)系統(tǒng)建立
如函數(shù)1 所示,系統(tǒng)建立函數(shù)輸入系統(tǒng)中的屬性集合U和安全參數(shù)k,輸出系統(tǒng)主密鑰MK和系統(tǒng)公鑰PK。
函數(shù)1系統(tǒng)建立
(2)私鑰生成
如函數(shù)2 所示,私鑰生成函數(shù)輸入PK、MK、用戶屬性集合S,輸出一個與S相關(guān)的用戶私鑰SK。
函數(shù)2私鑰生成
(3)加密
如函數(shù)3 所示,加密函數(shù)以明文集{mj,j∈(1,n)},PK和LSSS 矩陣結(jié)構(gòu)(M,ρ)為輸出,輸出密文CT。M的維度為l×n,Mi表示M的第i行,ρ(i)是將Mi映射到其代表的屬性的函數(shù)。
函數(shù)3加密
(4)解密
如函數(shù)4 所示,解密函數(shù)以CT與SK為輸入,輸出明文集{mj,j∈(1,n)}。MA是由m中的一組行向量組成的矩陣,它對應(yīng)于與SK相關(guān)聯(lián)的屬性集S。εj是長度為n的行向量,其第j個元素是1,其他的元素是0。I={i:ρ(i)∈S}。
函數(shù)4解密
BMAC 包括6 個操作:系統(tǒng)初始化、數(shù)據(jù)文件加密、對稱密鑰加密、用戶授權(quán)、對稱密鑰解密和數(shù)據(jù)文件解密。其實現(xiàn)步驟圖如圖8 所示。
(1)系統(tǒng)初始化
AA 群指定一個系統(tǒng)屬性集U并調(diào)用函數(shù)1 生成主密鑰MK和系統(tǒng)公鑰PK。PK與MK由所有AA 共同維護。
(2)數(shù)據(jù)文件加密
數(shù)據(jù)擁有者(data owner,DO)選擇n個對稱密鑰{ck1,ck2,…,ckn},并通過對稱加密算法加密他的數(shù)據(jù)文件{f1,f2,…,fn}。數(shù)據(jù)文件密文表示為EF={Eck1(f1),Eck2(f2),…,Eckn(fn)}。此操作對應(yīng)于步驟圖中的步驟①②。
(3)對稱密鑰加密
DO 分別為他的數(shù)據(jù)文件{f1,f2,…,fn}定義訪問樹{T1,T2,…,Tn},并將它們集成到單個訪問樹T中。然后他使用標記法[27]將訪問樹T轉(zhuǎn)換為訪問控制矩陣(M,ρ)。之后他調(diào)用函數(shù)3 去加密他的對稱密鑰{ck1,ck2,…,ckn}并生成對稱密鑰密文CT,最后他將CT與EF發(fā)送至云服務(wù)商CS,并由CS 去存儲它們。此操作對應(yīng)于步驟圖中的步驟③④⑤。
(4)用戶授權(quán)
當任意DV 想要訪問數(shù)據(jù)文件時,此DV 向AA群發(fā)起申請,AA 群中由滑動窗口工作模式選取出來的當值A(chǔ)A 調(diào)用函數(shù)2 以輸出私鑰SK,通過監(jiān)督AA審計并確認合法后存儲到區(qū)塊鏈中,之后將SK通過安全通道傳輸給DV。此操作對應(yīng)于步驟圖中的步驟⑥。
(5)對稱密鑰解密
DV 從CS 處下載對稱密鑰密文CT,之后此用戶調(diào)用函數(shù)4 去獲得對稱密鑰。當他的屬性能滿足部分訪問結(jié)構(gòu)時,他能獲取與這部分結(jié)合的對稱密鑰{ck1,ck2,…,ckn}。當且僅當他的屬性滿足整個訪問結(jié)構(gòu)時,他能獲取到全部的對稱密鑰。此操作對應(yīng)于步驟圖中的步驟⑦⑧。
(6)數(shù)據(jù)文件解密
數(shù)據(jù)訪問者從CS 中下載{Eck1(f1),Eck2(f2),…,Eckn(fn)},并使用對稱密鑰{ck1,ck2,…,ckn} 去解密數(shù)據(jù)文件{f1,f2,…,fn}。
Fig.8 Implementation steps of BMAC圖8 BMAC 實現(xiàn)步驟圖
為了進一步提高效率,進行了如下轉(zhuǎn)換:
{ck1,ck2,…,ckn}為n個對稱密鑰。此外,調(diào)用函數(shù)3去加密{ck1′,ck2′,…,ckn′}并生成對稱密鑰CT。解密時,調(diào)用函數(shù)4 來獲取對稱密鑰。在函數(shù)4 中,一旦成功獲取到了ckj′,就能立馬停止解密過程,因為憑借ckj′就能獲取到其中包含的其他對稱密鑰。此操作對應(yīng)于步驟圖中的步驟⑨⑩。
在4.2 節(jié)給出的安全性假設(shè)下,BMAC 具有數(shù)據(jù)機密性、串謀抵抗、細粒度訪問控制和授權(quán)機構(gòu)安全等安全特性。
(1)數(shù)據(jù)機密性
本文在Waters 的算法[9]的基礎(chǔ)上設(shè)計了BMACCP-ABE,兩者存在著一個主要的區(qū)別:在BMACCP-ABE 中,使用了秘密向量v中的所有元素來允許在一個訪問控制策略中攜帶多個秘密,在該策略下,允許多個明文被加密。也就是說,BMAC-CP-ABE 利用了向量v中的所有元素,使用它們中的每一個元素分別加密明文,如函數(shù)3 所示;而在Waters 的算法中,向量中只有一個元素用于加密明文,對于多個明文,它們的算法需要多次執(zhí)行。在文獻[9]中,Waters 的CP-ABE 算法在d-Parallel BDHE 假設(shè)下是選擇性安全的。因此,在相同的安全假設(shè)下,BMAC-CP-ABE具有相同的安全性。
(2)串謀抵抗
任何數(shù)量的未經(jīng)授權(quán)的用戶都可能為了訪問機密數(shù)據(jù)文件而發(fā)起串通攻擊。在BMAC-CP-ABE中,AA 群為每個用戶隨機選擇一個元素t,并使用t為每個用戶生成一個私鑰。當用戶解密密文時,首先要進行計算,這就要求其私鑰的組成部分包含相同的t,也就是說,不同的數(shù)據(jù)訪問者不能將其私鑰進行集成以增強其解密能力,因為他們在私鑰中的t值不同。因此,BMAC-CP-ABE能夠有效地抵抗合謀攻擊。
(3)細粒度訪問控制
在BMAC-CP-ABE 中,LSSS 矩陣訪問結(jié)構(gòu)由支持“and”“or”與“of”閾值操作的訪問樹轉(zhuǎn)換而來,它可以表示任何復(fù)雜的訪問控制策略。只有擁有與訪問結(jié)構(gòu)匹配的屬性的數(shù)據(jù)訪問者才能成功獲取明文。因此,BMAC 實現(xiàn)了細粒度的訪問控制。細粒度訪問控制可靈活地制定訪問策略?;贑P-ABE的方案將制定訪問策略的權(quán)利交給用戶,更加符合數(shù)據(jù)共享場景。
(4)授權(quán)機構(gòu)安全性
單授權(quán)機構(gòu)系統(tǒng)存在著安全隱患,一旦授權(quán)機構(gòu)被攻擊者所控制或者發(fā)生變節(jié),其可能隱晦地為一些非法用戶分發(fā)超出他們訪問權(quán)限的私鑰,這導(dǎo)致整個系統(tǒng)不會立即崩潰,而非法用戶能持續(xù)地獲取任意數(shù)據(jù)文件,從而帶來嚴重的安全威脅。區(qū)塊鏈采用純數(shù)學(xué)方法而不是中心機構(gòu)來建立分布式節(jié)點間的信任關(guān)系,從而形成去中心化的可信任的分布式系統(tǒng)。在BMAC 中所有AA 會按照事先共同商定的規(guī)則輪流成為當值A(chǔ)A 或監(jiān)督AA,不存在擁有特殊權(quán)利的AA,當值A(chǔ)A 進行的用戶私鑰分發(fā)工作會被監(jiān)督AA 所監(jiān)督,這些措施避免了單授權(quán)機構(gòu)系統(tǒng)中CA 帶來的安全問題。BMAC 中,當值A(chǔ)A 會將數(shù)據(jù)塊對稱加密之后再存儲到區(qū)塊中,區(qū)塊與區(qū)塊成鏈式結(jié)構(gòu),所有AA 共同維護這一條不可篡改的區(qū)塊鏈,此方法保證了區(qū)塊鏈數(shù)據(jù)不可篡改和不可偽造,因而具有較高的安全性。區(qū)塊鏈采用帶有時間戳的鏈式區(qū)塊結(jié)構(gòu)存儲數(shù)據(jù),從而為數(shù)據(jù)增加了時間維度,具有極強的可驗證性和可追溯性,使得用戶進行私鑰出錯申訴時可有效追究AA 的責任。
方案的性能評估分兩部分:一是在單授權(quán)機構(gòu)場景下對BMAC-CP-ABE 的性能評估;二是在多授權(quán)機構(gòu)場景下對AA 群的性能評估。
實驗平臺的配置為Windows 7 操作系統(tǒng),Intel Pentium G4560 3.50 GHz 處理器,8.00 GB RAM 的個人PC,使用的語言為Java,算法的實現(xiàn)均基于JPBC(Java pairing-based cryptography library)[28]。該實現(xiàn)使用的雙線性對為512 位有限域上,基于超奇異曲線y2=x3+x的160 階A 型橢圓曲線組。最終的實驗結(jié)果均為10 次實驗的平均值。
5.2.1 單授權(quán)機構(gòu)
單授權(quán)機構(gòu)場景下,對BMAC-CP-ABE 的性能評估從兩方面著手:一是算法的時間開銷;二是私鑰與密文的存儲開銷。均與AC-CP-ABE[18]、基于LSSS的CP-ABE(LS-CP-ABE)[9]、ACPC-CP-ABE[12]進行比較。
此外,還制定了以下訪問策略:假設(shè)明文為M=(m1,m2,…,mn),對于AC-CP-ABE、LS-CP-ABE 與ACPCCP-ABE,加密m1,m2,…,mn需要分別制定n個策略:
BMAC-CP-ABE 對于這種n層的訪問結(jié)構(gòu)只需制定1 個策略:
時間開銷的實驗結(jié)果如圖9 所示,存儲開銷如圖10 所示。系統(tǒng)屬性數(shù)量變化時,4種算法的私鑰生成時間開銷如圖9(a)所示,私鑰存儲開銷如圖10(a)所示。而在文件訪問結(jié)構(gòu)層次變化時,4種算法的私鑰生成時間與存儲開銷均不會發(fā)生變化。圖9(b)和圖9(c)顯示了隨著屬性數(shù)量的增加,文件訪問結(jié)構(gòu)固定為兩層時4種算法加密和解密的時間開銷。在這種情況下,4種算法的密文存儲開銷如圖10(b)所示。圖9(d)和圖9(e)分別顯示了在系統(tǒng)屬性數(shù)量n=30時,在不同的文件訪問結(jié)構(gòu)層次下4種算法的加密和解密時間開銷。圖10(c)是這種情況下4種算法的密文存儲開銷。
如圖9(a)與圖10(a)所示,隨著系統(tǒng)屬性數(shù)的增長,LS-CP-ABE、ACPC-CP-ABE 與BMAC-CP-ABE的私鑰生成時間始終為AC-CP-ABE 的25%左右,LSCP-ABE 與BMAC-CP-ABE 略優(yōu)于ACPC-CPABE,對于私鑰存儲開銷,其他3種算法約為ACPC-CP-ABE的50%。如圖9(b)、圖9(c)、圖10(b)所示,BMACCP-ABE 的加密時間優(yōu)于AC-CP-ABE 與LS-CPABE,次于ACPC-CP-ABE,解密時間和密文存儲開銷均優(yōu)于其他3種算法。如圖9(d)、圖9(e)與圖10(c)中得到,在系統(tǒng)屬性數(shù)不變,文件訪問結(jié)構(gòu)層次數(shù)增加時,BMAC-CP-ABE 的優(yōu)勢更加明顯:AC-CPABE、LS-CP-ABE 與ACPC-CP-ABE 的加解密時間與密文開銷仍然會線性增長,而BMAC-CP-ABE 是恒定不變且始終保持低水平的。以上實驗結(jié)果驗證了BMAC-CP-ABE 相較于已有的方案顯著減少了私鑰生成、加密和解密時間,以及私鑰和密文存儲開銷。因此,通過BMAC-CP-ABE 可以高效地實現(xiàn)云環(huán)境中對大量數(shù)據(jù)文件的密文訪問控制。
Fig.9 Time cost comparison of 4 algorithms圖9 4種算法的時間成本比較
Fig.10 Storage cost comparison of 4 algorithms圖10 4種算法的存儲開銷比較
5.2.2 多授權(quán)機構(gòu)
在多授權(quán)機構(gòu)場景下,對BMAC 生成私鑰的時間開銷與存儲區(qū)塊鏈產(chǎn)生的存儲開銷進行性能評估。
為直觀起見,設(shè)AA 群共有10 個AA,當值A(chǔ)A 與監(jiān)督AA 始終各為5 個,監(jiān)督AA 對Item block 中數(shù)據(jù)的審計量為2%。區(qū)塊中AID、UID、IbID、時間戳均以8 Byte 整形存儲,屬性的文字編碼為UTF-8,長度限制12 Byte,對哈希樹的哈希方法為AES256,不考慮AA 群中AA 相互溝通產(chǎn)生的時間開銷。
圖11 顯示了系統(tǒng)屬性數(shù)量為30 時,隨著生成私鑰數(shù)量的增長,AC-CP-ABE 單、多授權(quán)機構(gòu),BMACCP-ABE 單、多授權(quán)機構(gòu)的時間消耗情況。圖12 顯示了這種情況下BMAC 中AA 群為存儲區(qū)塊鏈產(chǎn)生的額外存儲開銷情況。
如圖11 與圖12 所示,BMAC 引入?yún)^(qū)塊鏈技術(shù)實現(xiàn)多授權(quán)機構(gòu)密鑰管理后,授權(quán)機構(gòu)為用戶分發(fā)私鑰時產(chǎn)生的時間開銷顯著降低,為同方案單授權(quán)機構(gòu)下的20%,對比使用傳統(tǒng)方式實現(xiàn)多授權(quán)機構(gòu)方案的AC-CP-ABE 為50%。引入?yún)^(qū)塊鏈技術(shù)之后會產(chǎn)生額外的存儲開銷,但此開銷較低,分發(fā)1 000 個私鑰產(chǎn)生的區(qū)塊大小僅為1.69 MB。在授權(quán)機構(gòu)數(shù)量為10 個時整個系統(tǒng)的存儲總開銷為16.9 MB。在當前存儲介質(zhì)越來越廉價的環(huán)境下,這樣以空間換時間的做法完全是可接受的。因此通過基于區(qū)塊鏈的多授權(quán)機構(gòu)密鑰管理方法可顯著提升授權(quán)機構(gòu)的私鑰分發(fā)效率。
Fig.11 Time cost comparison of two algorithms圖11 兩種算法的時間消耗比較
Fig.12 Storage cost of AA group圖12 AA 群的存儲開銷
現(xiàn)有的CP-ABE 沒有考慮多個數(shù)據(jù)文件的訪問結(jié)構(gòu)之間存在層次關(guān)系,需要數(shù)據(jù)擁有者生成多個密文來實現(xiàn)多個數(shù)據(jù)文件的訪問控制需求,這將給數(shù)據(jù)擁有者、數(shù)據(jù)訪問者和云服務(wù)商帶來大量的計算與存儲開銷;在已有的訪問控制方案中亦未考慮單授權(quán)機構(gòu)帶來的安全性與可靠性問題。因此,本文設(shè)計了一種基于LSSS 的高效分層CP-ABE 算法,該算法使用一種集成的訪問結(jié)構(gòu),能夠同時對多個具有分層訪問關(guān)系的數(shù)據(jù)文件進行一次性加密。當數(shù)據(jù)訪問者的屬性與訪問結(jié)構(gòu)的一部分或全部匹配時,他只需解密一次就可以獲得與該部分關(guān)聯(lián)的數(shù)據(jù)或全部數(shù)據(jù)?;谶@種分層的CP-ABE 算法,本文提出了一種云環(huán)境中基于區(qū)塊鏈的多授權(quán)機構(gòu)訪問控制方案BMAC。BMAC 能夠?qū)崿F(xiàn)安全、高效和細粒度的數(shù)據(jù)訪問控制,顯著減少了私鑰生成、加密和解密時間,以及私鑰和密文存儲開銷,同時利用區(qū)塊鏈的特性使AA 群能夠誠實、并行和去中心化地為用戶分發(fā)私鑰,并在私鑰分發(fā)出錯時還能進行責任追究。