曾輝祥,習 寧,謝晴晴,呂 靜,崔志浩,馬建峰
(1.西安電子科技大學 網絡與信息安全學院,陜西 西安 710126;(2.江蘇大學 計算機科學與通信工程學院,江蘇 鎮江 212013)
近年來,基于云的智能家居平臺發展迅速,集網絡通信、網絡系統以及自動化控制于一體,通過互聯網技術將智能家庭設備聯系成家庭網絡,實現遠程操控,為人們提供了舒適高效和便利的生活居住應用[1-2]。在智能家居云[3-4]中,多個設備之間的服務協同極大地豐富了應用的種類,成為主流服務模式之一。例如,用戶在智能移動終端上查看由智能家居醫療設備定期采集和上傳的個人體表特征數據。然而,在跨設備信息交互與共享的同時,用戶的數據面臨著許多安全威脅,例如體表特征數據,由于隱私性高,很容易遭到攻擊者的竊取。
為了保證云端多用戶、多終端數據安全共享,基于屬性加密訪問控制(Attribute Based Encryption,ABE)方案[5]根據訪問策略加密數據,適用于一對多加密,實現數據的細粒度訪問控制。BETHENCOURT等[6]在屬性加密訪問控制的基礎上,首次提出了密文策略屬性基加密(CP-ABE)。CP-ABE允許加密者以任意單調訪問規則指定訪問結構,并且密文與訪問策略相關,而密鑰與用戶屬性相關。傳統的CP-ABE方案依賴可信第三方,存在單點故障問題。為了減輕對可信第三方的依賴,LEWKO等[7]提出了去中心化的分布式密文策略屬性基加密訪問控制方案(Decentralized CP-ABE,DCP-ABE)。該方案中不需要中心權威機構,而是由多屬性中心獨立工作,分別完成一部分任務。HAN等[8]針對分布式CP-ABE中的隱私性做了改善,提出了PPDCP-ABE(Privacy-Preserving DCP-ABE),但分布式CP-ABE缺乏對屬性篡改攻擊的保護。為了克服這一缺陷,JEMEL等[9]將區塊鏈用于CP-ABE中的用戶合法性檢查。GAO等[10]提出了一種基于區塊鏈的去中心化隱藏策略可信CP-ABE。由于區塊鏈的不可篡改性,該方案有效地解決了分布式CP-ABE的缺陷。然而,在該方案中節點的接入與退出成本開銷大和時延長,無法抵御用戶假冒屬性攻擊,不利于節點狀態頻繁變動的智能家居環境。邱云翔等[11]提出了一種基于 CP-ABE 算法的區塊鏈數據訪問控制方案。但由于該方案基于原始CP-ABE算法,節點計算負擔大,數據共享時延長。FAN等[12]提出了一種基于區塊鏈的車載社交網絡安全可驗證數據共享方案。該方案依賴傳統的可信第三方AA服務器管理用戶屬性,由云服務提供商(Cloud Service Provider,CSP)保存屬性私鑰,因此存在第三方單點故障與攻擊者惡意假冒合法云服務提供商導致數據泄露的風險。牛淑芬等[13]利用區塊鏈技術保證了CP-ABE可搜索加密方案中數據的完整性與不可篡改性。尚松超等[14]提出了基于區塊鏈的權重屬性基加密數據共享模型,靈活地解決企業不同級別部門間數據共享的問題,但權重計算帶來了額外的計算開銷。
針對傳統CP-ABE依賴可信第三方、分布式CP-ABE難以抵御用戶屬性篡改以及基于區塊鏈的CP-ABE不利于節點移動、無法抵御用戶假冒屬性攻擊的問題,筆者提出了基于區塊鏈的去中心化密文數據安全共享方案,在實現去中心化功能的同時,減輕了智能設備的計算負擔,保證了數據共享的安全與高效。筆者的具體貢獻如下:
(1) 提出了基于區塊鏈的去中心化密文數據安全共享方案。通過結合聯盟區塊鏈、CP-ABE以及可驗證外包解密等技術,實現了智能家居下數據分布式存儲和安全共享。
(2) 設計了基于智能合約的細粒度訪問控制機制,以智能合約取代可信第三方,實現靈活、可擴展的數據安全共享流程,解決傳統可信網絡中訪問策略決策中心化的問題。
(3) 通過結合可驗證外包解密技術,提出了輕量級CP-ABE算法,減輕智能設備的計算負擔,保證智能家居環境下資源受限節點的可靠性。
(4) 對基于區塊鏈的去中心化密文數據安全共享方法進行了測試,針對不同屬性/策略數量,分別測試系統與文獻[7,10-12]中的方案性能。實驗結果表明,在基于區塊鏈實現去中心化的情況下,筆者提出的方案的時間開銷在用戶屬性私鑰生成和加密部分與文獻[10-12]中的方案相近,在解密部分比文獻[10-11]中的方案顯著地降低了。此外,對比基于DCP-ABE的方案[7],筆者提出的方案在時延方面大幅度減少了。
1) 雙線性映射
雙線性映射可將兩個循環群的元素映射至第3個循環群。
定義1雙線性映射e可表示為e:G0*G0=G1,其中G0和G1都是階為素數p的乘法循環群。假設g是G0的一個生成元,Zp是一個有限域。雙線性映射e具有以下特點。
(1) 雙線性:?u,v∈G0,?a,b∈Zp,
e(ua,vb)=e(u,v)ab。
(1)
(2) 非退化性:若g為G0中的元素,則e(g,g)為G1中的元素。
(3) 可計算性:?u,v∈G0,計算e(u,v)是有效的。
筆者選擇G0為由一組橢圓曲線上的點構成的一個群,G1為一個乘法有限域上的子群,參數的具體生成方法詳見文獻[15]。
2) 訪問結構
訪問結構是訪問策略的具體表示。
定義2訪問架構Γ可表示為集合Γ={a1,a2,…,an},Γ代表本框架中所有屬性的集合,其中a1是一個屬性。用戶的屬性集以S表示,S?Γ{?}。訪問結構A?2|a1,a2,…,an|{?}。A是單調的。如果對?B,C有B∈A,且B∈C,則有C∈A。
3) 訪問樹
訪問結構A以樹T表示,x是T的節點。Tx表示T中以x為根結點的子樹。T中的每一個非葉子節點Tx代表門限策略,由子節點數numx和門限閾值kx描述,其中kx∈[1,numx]。當kx=1時,kx是一個或門。當kx=numx時,kx是一個與門。Tx的每個葉子節點由用戶的屬性集S和門限閾值kx表示。Tx(S)=1,表示用戶屬性集S滿足Tx,x為非葉節點時計算所有子節點x。若Tx′(S)>kx,則Tx(S)=1。當x為葉子節點時,若attr(x)∈S,則Tx(S)=1。
為了處理訪問樹,定義函數attr(x)獲取x對應的屬性;parent(x)獲取x在T中的父節點;num(x)表示x的子節點數;index(x)獲取x每個子節點的索引。
針對數據共享去中心化、抵御用戶屬性假冒與篡改攻擊等需求,結合智能家居環境下智能設備低性能、狀態變化頻繁等要求,為了實現無可信第三方、節點低計算量的安全共享效果,筆者在聯盟區塊鏈、CP-ABE和外包解密等方法的基礎上構建了面向智能家居的去中心化密文數據共享框架。具體如圖1所示。
圖1所示框架包含了3個實體,即數據擁有者(Data Owner,DO)、數據訪問者(Data User,DU)、屬性權威機構(Attribute Authorities,AAs),以及身份屬性區塊鏈(Identity-Attribute Chain,IAC)與文件區塊信息鏈(File Information Chain,FIC)。
1) 屬性權威機構
AAs是構成區塊鏈網絡的節點群,也是聯盟鏈的參與者與維護者,由一組高性能服務器組成。AAs={Serveri|4≤i≤n},其中n為服務器數量。AAs負責管理用戶屬性以及在用戶與部署在其本地的智能合約之間轉發數據。
AAs根據用戶身份分配相應的屬性并通過智能合約計算和分發屬性私鑰,將身份與屬性以交易的形式記錄在IAC上。此外,AAs通過智能合約整合用戶上傳文件信息和文件密鑰密文形成交易上傳至FIC上。
AAs同時承擔著協助DU完成部分解密計算的角色。
2) 數據擁有者(DO)
DO是數據提供者,擁有數據的控制權。DO制定文件的訪問策略T。當屬性集滿足Tx(S)=1時,DU可以訪問數據。DO為智能家居中的一組共享數據的智能設備。DO計算和存儲能力受限。DO可以將共享的文件加密后上傳至云存儲系統。考慮智能設備的可移動性,DO可以動態加入或退出訪問控制系統。

圖1 去中心化密文數據安全共享框架
3) 數據訪問者(DU)
DU是數據消費者,通過發起數據訪問請求獲取相應的文件。DU擁有屬性集S。實際中,一個智能設備可以同時為DO與DU。例如,它可能會同時分享和訪問數據。DO與DU均為筆者提到的用戶。
4) 身份屬性鏈(IAC)

圖2 IAC交易結構
IAC記錄用戶的身份注冊信息。IAC上的每一個交易對應于一組用戶的身份屬性對。IAC交易結構如圖2所示。聯盟鏈采用節點準入管理機制和只有智能合約才能訪問到身份屬性,有效地保護了用戶隱私。在本框架中,每個新成員都需要向AAs注冊,從而得到自己的屬性私鑰。注冊過程由AAs調用智能合約自主完成。智能合約構造一個交易記錄用戶的身份、屬性集等信息,并在加密后存儲于IAC上。
除了通用的交易ID、簽名密鑰等一些信息外,IAC區塊上交易信息還包含以下內容:
(1) 設備標識符(Device Identity,DID):DID={0,1}16,每個用戶獨有的身份標識符。
(2) 屬性集(ATTRibute Set,ATTRS):用戶身份對應的屬性集,ATTRS?S。當ATTRS發生改變時,用戶的訪問權限也隨之改變。
5) 文件信息鏈(FIC)
FIC維護用戶上傳文件的元信息FileInfo={FileAddr,Keywords,hash,CTk}。IAC與FIC的區塊結構如圖3所示。

圖3 IAC與FIC區塊結構

圖4 FIC交易結構
FIC交易結構如圖4所示。
除了通用的交易ID、簽名密鑰等一些信息外,FIC上交易信息還包含以下內容:
(1) FileAddr:文件在云存儲系統上的地址。用戶根據該地址請求對應的加密文件;
(2) Keywords:文件關鍵詞集合,用于快速檢索與匹配用戶請求文件,即
Keywords={Keyword1,Keyword2,…};
(3) Hash:加密文件的散列值,用于確保文件的完整性,避免由于網絡原因造成的數據缺失,Hash=SHA256(digest(file));
(4) CTK:用戶加密文件所使用的對稱加密密鑰K的密文。
6) 智能合約
為了實現去中心化,筆者設計了智能合約SCIA和SCFI。SCIA負責初始化系統,生成系統主密鑰對(MSK,PK),為用戶生成屬性私鑰,將身份與屬性以交易的形式記錄在IAC上;SCFI負責記錄和維護用戶上傳文件信息和文件密鑰密文,并整合二者形成交易上傳至FIC上,為用戶訪問數據提供查詢功能。SCIA和SCFI分別管理區塊鏈IAC與FIC。
在筆者提出的框架中,屬性管理服務器集群AAs是半誠實的。AAs遵從所提出方案并且對請求結果正常響應,但可能會篡改用戶屬性或同意用戶假冒本身未擁有的屬性。因此,有兩種攻擊者模型需要考慮:
1) 外部攻擊者
外部這類攻擊者企圖篡改用戶屬性,可以挾持服務器節點,在篡改用戶屬性后將其提交至區塊鏈。
2) 內部攻擊者
內部這類攻擊者(例如服務器節點管理者)同意屬性假冒或篡改交易,以牟取私利。
針對以上安全威脅,將達到以下安全目標:
(1) 數據機密性
攻擊者不滿足訪問策略時無法獲取有效數據。
(2) 抵御用戶屬性假冒攻擊
攻擊者對AAs假冒自身未擁有屬性時,無法通過注冊和獲取訪問權限。
(3) 抵御用戶屬性篡改攻擊
攻擊者無法篡改用戶屬性。
在設計模型的基礎上,針對數據訪問過程中用戶屬性存在假冒與篡改等風險,進一步提出了基于區塊鏈的去中心化密文數據安全共享方法,支持區塊鏈記錄用戶屬性,保證了數據的機密性與完整性,提高了數據共享的效率。為了更好地描述所提出的方法,對其中涉及的常規加解密操作進行定義。
定義3Encopt(·),其中opt∈{AES,PPK}。AES表示對稱加密AES(Advanced Encryption Standard)算法;PPK表示使用公鑰PPK執行RSA加密算法。
定義4Decopt(·),其中opt∈{AES,PPK}。PSK表示使用私鑰PSK執行RSA解密算法。
筆者提出的方法包括4個階段:初始化階段(setup phase)、注冊階段(register phase)、文件上傳階段(upload phase)以及安全共享階段(secure sharing phase)。
初始化過程主要完成部署智能合約以及生成系統主密鑰對。初始化及注冊流程見圖5。

h=gb,
(2)
e(g,g)a,
(3)
生成主密鑰對(MSK={b,ga},PK={G0,g,h,e(g,g)a})。MSK是系統主密鑰,PK為系統公鑰。

圖5 系統初始化及用戶注冊過程
當新用戶加入系統時,它首先發送注冊請求至AAs處,注冊請求包含其設備標識符DID。AAs根據DID驗證用戶身份。驗證通過后,AAs為用戶分配對應的屬性集K和公私鑰對〈PPK,PSK〉,轉發〈DID,S〉至智能合約SCIA。SCIA選擇隨機數r∈Zp,計算
(4)
對S內的每一個屬性j,選擇隨機數rj∈Zp,計算
(5)
得到屬性私鑰SK={SKr,SKs}。最后SCIA通過AAs將〈SK,PPK,PSK〉返回給用戶,并將〈DID,S〉以交易的形式上傳至IAC。
數據共享是用戶上傳數據的過程。文件上傳階段流程見圖6。在這個階段中,DO首先選擇密鑰K,計算Cf=EncAES(K,file),并將Cf上傳至云存儲系統。隨后,DO加密K得到CTK。

圖6 文件上傳過程
DO選擇一個隨機數s∈Zp,計算
(6)
(7)
在T的葉子節點集Y,對?y∈Y計算
Cy=gqy(0),
(8)
(9)

在計算CTS時,qx(·)的具體構造過程如下:
(1) 從根節點R開始,自頂向下對T的每一個節點x選擇一個多項式qx(·)。qx(·)的次數dx比其門限值kx小1,即dx=kx-1;
(2) 從根節點R開始,選擇一個隨機數qR(0)=s,并隨機選擇qR(·)的dR個點完善qR(·);
(3) 對其他節點x,設qx(0)=qparent(x)(index(x)),隨機選擇dx個點完善qx(·)。
最后,DO對FileInfo簽名,將〈FileInfo,σDO(FileInfo)〉通過AAs轉發至SCFI。SCFI驗證簽名通過后,將FileInfo上傳至FIC。
安全共享是用戶訪問數據的過程,流程如圖7所示。在此階段中,DU通過屬性服務器集群AAs向合約發起訪問請求〈DID,Keywords〉。SCIA根據DID判斷用戶是否為已注冊狀態。SCFI根據Keywords獲取對應的FileInfo,計算CFI=EncPPKDU(FileInfo)并將其返回DU。

圖7 安全共享過程
DU通過FileAddr下載Cf,獲取FileInfo=DecPSKDU(CFI)。為了恢復K,DU選擇一個隨機數t∈Zp,轉換屬性私鑰
(10)
發送〈SK′,CTK〉至AAs。
AAs作為解密外包服務器(Decryption Server Provider,DSP)對T中的每個葉子節點x進行解密計算:
DecryptLeaf(CTK,SK′,x)=e(g,g)rqx(0),
(11)
然后返回結果給DU。

(12)
最終DU得到文件明文file=DecAES(K,Cf)。
DecryptLeaf(CTK,SK′,x)的具體計算過程如下:對T中的每個節點x,若x為葉子節點,令i=attr(x),則當i∈S時,
(13)
當i?S時,規定DecryptLeaf(CTK,SK′,x)=⊥。
若x為非葉子節點,則對x所有子節點z,計算Fz=DecryptLeaf(TK,SK′,z)。
令Sx為x的子節點集合,且Sx大小為kx,Fz≠⊥。若Sx不存在,則函數返回⊥;否則,算法使用多項式差值法計算下列函數值:
(14)
其中,i=index(z),S′x={index(z):z∈Sx}。
本節主要對提出方案的數據機密性、數據完整性、共謀攻擊以及屬性篡改與假冒攻擊等幾個方面做了安全性分析,最后與其他方案做了對比,如表1所示。

表1 安全性對比
1)數據機密性保證
數據所有者對明文數據使用AES對稱加密算法加密,對稱密鑰K使用CP-ABE方案加密進而上鏈,故在整個區塊鏈網絡中僅對該數據密文可見。數據所有者直接通過制定訪問控制策略T對該數據的訪問權限進行限制,僅包含滿足策略T屬性的用戶才能對密文進行正確解密,獲得有效明文。
2) 共謀攻擊
共謀攻擊有多用戶共謀、用戶與AAs共謀以及用戶與存儲服務器共謀三種情況。針對多用戶共謀的情況,因為用戶在AAs上SCIA處獲取密鑰時,每個用來生成屬性密鑰的r都不相同,而在解密時只有由相同的r生成密鑰可以結合共同解密,所以不同屬性的多個用戶無法結合其屬性來解密密文,有效地防止了用戶間的共謀攻擊。針對用戶與AAs共謀的情況,由于用于加密K的隨機數s只存在于DO處,所以當DU的屬性集不滿足訪問策略時,AAs與DU均無法還原s從而獲取正確的屬性私鑰。針對用戶與存儲服務器共謀的情況,即使服務器可以將數據發送至不滿足訪問控制策略的用戶,但由于得到的僅是密文,沒有正確屬性私鑰的用戶仍然無法得到有效的數據。
3) 屬性篡改與假冒攻擊
考慮到屬性管理節點面臨攻擊者劫持以及注冊過程中屬性假冒攻擊,造成用戶屬性集的泄露或篡改,威脅屬性私鑰的安全。筆者提出的方案結合區塊鏈技術,在基于拜占庭容錯協議的聯盟鏈網絡上建立多屬性管理服務器集群(AAs),以區塊鏈的形式維護用戶的屬性集。屬性管理服務器會遭到惡意攻擊而成為拜占庭節點。

證明 設拜占庭節點為f。為了保證網絡達成安全共識,當f同時為故障節點和惡意節點時,網絡包含f+1個正常節點,即n≥2f-1;當故障節點與惡意節點不同時,有f個故障節點和f個惡意節點,網絡節點數滿足n-2f>f,即n>3f。
因此,在拜占庭節點占比不超過1/3時,本方案可抵御屬性假冒與篡改攻擊。
與相關工作對比,文獻[7]使用分布式AA服務器管理用戶屬性,而文獻[12]基于傳統的可信第三方AA服務器。兩者[7,12]抵御屬性假冒攻擊的安全閾值為100%,但對用戶屬性遭到篡改攻擊時無能為力。文獻[10]抵御屬性篡改攻擊的安全閾值為75%,但由于沒有屬性管理功能,無法抵御屬性假冒攻擊。文獻[11]無AA管理用戶屬性,缺乏對用戶屬性篡改與假冒攻擊的保護。
4)數據完整性
文件信息FileInfo中的Hash為文件數據的散列值。由于FileInfo存儲于區塊鏈上,攻擊者無法對其篡改。在用戶完成解密獲得最終的數據明文后,可通過對明文進行散列運算完成文件數據的完整性檢驗,保障了數據的完整性。
從表1可以看出,筆者提出的方案克服了文獻[7,11-12]中難以防御屬性篡改攻擊和文獻[10-11]中缺乏對屬性假冒攻擊保護的缺陷,提高了數據訪問的安全性,為智能家居下的數據安全共享提供了可靠的保障。
在筆者提出的方案中,采用雙線性配對運算和指數運算開銷兩項指標來探討其計算性能。為了方便描述,用AU表示數據訪問者屬性數量,用Ap表示密文訪問策略屬性數量,用TG0代表一次G0域指數運算,用TG1代表一次G1域的指數運算,用B代表一次雙線對運算,一個群元素空間所占存儲大小為L。筆者提出的方案中所使用的可驗證外包解密CP-ABE算法的性能見表2和表3。
1) 計算性能

2) 存儲性能
本方案中私鑰需要存儲空間為(2AU+1)L,密文需要存儲空間為(2Ap+2)L,與其他文獻對比如表3所示。

表2 用戶計算開銷對比

表3 存儲開銷對比
筆者提出的方案在PBC庫和CP-ABE基礎開發工具包的基礎上進行實驗,使用橢圓曲線為y2=x3+x,實驗環境為主頻4.0 GHz的雙核CPU,內存16 GB,Ubuntu18.04 64位操作系統。此外,以AAs為區塊鏈節點,基于Hyperledger-Fabric系統與使用拜占庭容錯共識機制構建區塊鏈網絡。
對實驗性能的評估主要從屬性私鑰生成、用戶加密和解密以及方案總開銷時間方面進行對比,采用策略屬性數量逐漸增加的方式進行實驗。文獻[7]是基于分布式計算實現去中心化數據共享,從表2可以看出,此方案在計算時延方面大于其余方案,并且隨著分布式節點數與屬性或策略數增加,其所需的傳輸時延也急劇增加,故與其他方案存在顯著差距。為了使筆者提出的方案與其他方案開銷對比明顯,文獻[7]的開銷不在實驗比較結果中展出。
在圖8中,隨著屬性的增加,屬性私鑰的計算更加復雜,而筆者提出的方案耗時與文獻[10-12]的相近。
由圖9至圖11可看出,隨著訪問策略或屬性數量的增加,相較于基于區塊鏈可信數據共享方案[10]以及基于CP-ABE的區塊鏈數據訪問控制方案[11],筆者提出的方案在各方面上的時間開銷均有顯著降低。由此可見,與基于區塊鏈的可信數據共享方案[10]以及基于CP-ABE的區塊鏈數據訪問控制方案[11]相比,筆者提出的方案在降低數據共享的時間開銷的情況下,實現了防止用戶屬性假冒與篡改等安全性,提高了數據共享的可靠性;與使用CSP代理計算的基于區塊鏈車載數據共享方案[12]對比,筆者提出的方案基于外包解密技術而降低了用戶解密時延,在保證數據共享效率的同時,可有效地抵御用戶的屬性篡改與惡意用戶竊取CSP屬性私鑰而導致數據泄露的威脅。

圖8 用戶屬性私鑰生成時間

圖10 用戶解密時間
此外,文獻[10]由于以用戶作為區塊鏈網絡節點,在訪問控制發生前首先需要為用戶接入區塊鏈網絡與部署智能合約,所以存在用戶接入網絡的計算開銷。
筆者提出的方案以AAs為區塊鏈網絡節點,用戶只需與AAs進行交互,無須成為區塊鏈系統節點,從而降低了方案的整體時延,提高了智能家居環境下數據共享的效率。因此,筆者提出的方案在保證安全性的同時,有效地提升了智能家居環境下數據共享的效率。
通過結合聯盟區塊鏈以及外包解密CP-ABE技術,筆者提出了一種新型去中心化密文數據安全共享模型與方法。基于外包解密CP-ABE技術,筆者提出的方案有效地解決了智能家居中數據共享一對多的問題,同時克服了現有的分布式CP-ABE、區塊鏈與CP-ABE結合方案存在的中心單點失效、屬性篡改以及節點動態接入性差等問題,保證了數據的機密性和完整性,提高了數據共享的效率。實驗及分析結果證明,該系統能滿足智能家居環境下智能設備數據安全共享的高效性與安全性等需求。