尚松超,陳勃翰,顏光偉,劉 揚
(中國電子科技集團公司第三十研究所,四川 成都 610041)
在大數據時代背景下,隨著互聯網技術的發(fā)展,不同的企業(yè)或者部門之間數據共享成了一個迫切需求。在數據共享領域,研究人員針對數據的隱私和安全性,從醫(yī)療、物聯網、云存儲等應用場景進行了一系列研究。文獻[1]在2007 年提出一種更加靈活可實現的密文策略屬性基加密方案(Ciphertext Policy Attribute-Based Encryption,CP-ABE),其中由屬性集作為因子關聯密鑰,由訪問策略結構樹作為因子關聯密文。文獻[2]驗證了基于屬性加密的多關鍵字搜索方案中外包私鑰的正確性。文獻[3]提出了帶權重的屬性基加密方案,通過權重訪問策略樹實現訪問控制,從而降低密文的計算和存儲開銷。文獻[4]提出了一種高效的基于非對稱素數階群而構建的基于屬性基加密(Attribute-Based Encryption,ABE)方案,減少樹形訪問結構中雙線性對的運算,同時降低數據屬主端的加密和數據消費者端的解密開銷。文獻[5]中,通過優(yōu)化同態(tài)加密算法的方案,建立加密關鍵字索引方法實現數據的隱私保護和檢索。文獻[6]中,提出了基于可搜索加密和同態(tài)加密的匹配方法,解決物聯網云中數據的隱私泄露。文獻[7]提出將數據分類處理,如用戶的個人隱私相關數據放入用戶鏈中,需要特殊處理的交易記錄以及分享的病例和診療方法放入外部鏈中。通過這個方法實現數據的共享,并通過代理重加密保證數據的安全可靠。文獻[8]提出使用可搜索加密技術(Public Key Searchable Encryption,PEKS)進行關鍵字的加密和搜索,CP-ABE 機制和數字簽名技術實現數據的細粒度訪問控制和完整性保護。文獻[9]提出了一種基于區(qū)塊鏈的電子病例數據搜索方案,基于屬性加密機制實現了云數據的細粒度訪問控制,并利用屬性簽名技術驗證了電子病例數據源的真實性。文獻[10]提出了一種面向電子健康記錄的基于密文策略的權重屬性加密方案,通過分別計算屬性值和權重屬性值的CP-ABE 加解密,實現數據的細粒度訪問控制。然而以上數據共享模型或者方案中,存在如下問題:
(1)應用軟件惡意查詢等情況下,無法實現阻攔;
(2)數據搜索以關鍵字為索引,無法實現數據預覽摘要,必須下載數據文件,造成寬度開銷;
(3)不同企業(yè)或者單位,相同級別權限不一致的數據訪問控制問題。
本文針對以上問題,提出一種基于區(qū)塊鏈的數據共享訪問控制模型,通過利用聯盟鏈的鏈下計算鏈上存儲方式實現數據的共享和可追溯,通過基于權重屬性基的加密機制保證了數據的機密性和細粒度訪問控制。
1.1.1 定義1:訪問結構
定義訪問結構[11]:設{p1,p2,…,pn}為參與者集合,?B,C,若B?C且B?C,則C∈A,稱集合是單調的。一個訪問結構A是一個非空集合{p1,p2,…,pn}的子集,即。在A中的集合稱為授權集合,不在A中的集合稱為非授權集合。
1.1.2 定義2:權重門限訪問結構
定義權重門限訪問結構[12]:設U為全體屬性的集合,令ω∶U→N為一個權重函數,T∈N為門限值,定義,且Γ={A?UU∶ω(A)≥T},則Γ為N的權重門限訪問結構。
1.1.3 定義3:屬性分割算法
屬性分割算法[13]的輸入是一個屬性集合,系統根據屬性的重要性將屬性分割,并賦予不同的權值。對于屬性集A={α1,α2,…,αn}中的每個屬性αi允許系統中的最大權值為ωi=ω(αi),權值為整數。將屬性集中的每個屬性αi依據權重進行分割,分割后屬性αi對應于(αi,1)(αi,2),…,(αi,ωi),設定分割后的最小份額為1,其構成的集合稱為屬性權重分割集A*。
Paillier 等人[14]提出了新的同態(tài)加密算法——Paillier 公鑰加密。該算法具有同態(tài)加法的性質,并在隨機語言模型下具有抵抗適應性攻擊的特點。算法流程如下文所述。
(1)密鑰生成。首先隨機選取兩個大素數p和q,這兩個大素數必須滿足條件gcd[pq,(p-1)(q-1)]=1;其次計算n=pq和λ=lcm(p-1,q-1);最后再次隨機選擇整數,必須滿足條件式μ=[L(gλmodn2)]-1modn,其中L可以表示為式。那么可得公鑰就是(n,g),私鑰就是(λ,u)。
(2)加密算法。對于一個給定的明文,首先隨機選擇一個整數r∈ZN,公鑰為(n,g),那么加密結果為c=gm·rnmodn2。
區(qū)塊鏈技術是一種去中心化、去信任化的分布式數據庫技術方案[15]。采用如圖1 所示的Merkle樹的結構,按照區(qū)塊生成的時間順序鏈接一起,并通過區(qū)塊頭的哈希值保證區(qū)塊的完整性。
圖1 Merkle 樹
區(qū)塊鏈的智能合約是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機協議,主要包括代碼、合約值、合約狀態(tài)3 個部分,位于區(qū)塊鏈的中間協議層。智能合約的工作原理如圖2 所示,通過判斷合約的狀態(tài)值是否滿足預定義的一系列的場景和條件等,如果得到滿足就及時地響應相關動作。
圖2 智能合約
基于區(qū)塊鏈的數據訪問控制模型如圖3 所示,涉及可信中心(Trust Centre,TC)、數據擁有者(Data Owner,DO)、數據請求者(Data Request User,DRU)、聯盟鏈(Consortium Blackchain,CB)、云儲存服務商(Cloud Storage Service Provider,CSP)5個主體。為了加強數據的監(jiān)管和可追溯性,保證接入節(jié)點的安全性,本模型采用半中心化的CB。此外,本模型采用全同態(tài)加密算法將數據摘要和關鍵字進行加密保護;利用CP-ABE 機制實現原始文件的細粒度訪問控制和機密性要求;通過簽名值對比判定數據的一致性。在數據的檢索方面,首先通過智能合約機制優(yōu)先過濾一部分非法訪問,其次將關鍵字索引密文存入CB 中實現快速檢索。
圖3 數據共享訪問控制模型
(1)TC 負責向首次進入CB的每個數據使用者頒發(fā)數字證書。每個數據使用者向TC 提交相關注冊信息(身份信息、單位、職務、密級等),只有TC 身份認證授權后才能獲得公私鑰以及屬性私鑰和數字證書。
(2)DO 主要將數據共享給其他DRU。主要通過制定智能合約規(guī)則和訪問控制策略結構樹實現數據的細粒度訪問控制和機密性,將數據信息摘要提取并加密模糊處理實現數據可預覽。
(3)DRU 若要獲取數據,則需滿足相應權限才能訪問數據。
(4)CB 節(jié)點由不同部門單位、同部門不同級別單位、其他研究性機構等構成,并共同維護區(qū)塊鏈。CB 存儲數據摘要密文和元數據,以防止數據被惡意篡改。
(5)CSP 提供存儲加密數據功能。
基于區(qū)塊鏈的數據訪問控制模型,主要分為系統初始化階段、數據存儲階段和數據搜索與共享階段3 個階段。
本階段主要包含CP-AEB 生成密鑰和Paillier算法生成密鑰。
CP-AEB 生成密鑰包含Setup 和keyGen 兩個步驟。
(1)Setup步驟。TC輸入安全參數λ和屬性集A,輸出公開參數PK和主密鑰MK,Setup(1λ,A)→(PK,MK)。輸入安全參數λ,設p是一大素數,定義G0、G1是Zp階數為g的兩個乘法循環(huán)群,令g為群G0生成元,定義雙線性映射e∶G0×G0→G1。安全參數λ決定群的大小。TC隨機選擇兩個隨機數α,β∈Zp,計 算h=gβ和u=e^(g,g)α,生成公開參數PK={G0,g,h,u}和主密鑰MK={gα,β}。
(2)KeyGen步驟。A={α1,α2,…,αn}表示系統中用戶的屬性集合;A*是屬性A對應的權重屬性分割集,A*=(b1,b2,…,bl),b是屬性A*對應的權重屬性分割集的和;則A'={α1,α2,…,αn,b}表示系統中用戶的屬性所有參數集合。TC輸入DRU以用戶的屬性所有參數集合A'和主密鑰MK,輸出屬性權重私鑰Key Gen(A',MK)→SK。系統隨機選取l∈Zp,并為A'每個屬性cj選擇一個隨機值lj∈Zp,則屬性權重私鑰為SK=(D=g(α+l)/β,Paillier 算法生成密鑰,keyGen(p,q)→(pk,sk),其中pk=(n,g),sk=(λ,u)。
DO 分別計算出元數據(存儲索引密文CT,數據關鍵字和摘要密文CH,原數據哈希值HM),并將其存入CB 中,實現鏈下計算和鏈上存儲。具體的計算步驟如下:
(1)從TC 中獲取對稱密鑰key,將明文數據M對稱加密得到密文C1,C1=EncAES(key,M)。將C1上傳至云存儲服務器,獲得存儲位置索引loc。
(2)構造訪問策略T,如圖4 所示,先通過預處理,將每個屬性權重相加,得到權重值的和b作為葉子節(jié)點,從而減少CP-ABE 計算的開銷。
圖4 訪問策略權限樹
(3)通過CP-ABE,將訪問策略T、存儲位置索引loc、對稱密鑰key,通過加密算法得到密文EncABE(T,key,loc)→CT,設根節(jié)點滿足q'r(0),t∈Zp,A'是屬性所有參數集合,則:
(4)選隨機數r∈ZN,計算關鍵子和數據摘要的同態(tài)加密密文CH,CH=EncHE(M,r)。
(5)計算元數據的哈希值HM,HM=Hash(M)。(6)將元數據格式存入CB 中。
DRU 訪問數據的流程如圖5 所示,先通過智能合約機制去驗證用戶的身份密級和文件的保護期限;如果滿足的情況下,再查詢CB的數據關鍵字和摘要信息;并通過CP-ABE 驗證訪問策略結構樹驗證通過后解密得到數據的索引地址和對稱密鑰;從云服務器下載密文數據,使用對稱密鑰解密得到明文,并對比哈希值確保數據的完整性。具體的步驟如下文所述。
圖5 數據搜索與共享訪問流程
(1)DO 設定智能合約規(guī)則,設置數據的密級和保密期限。DRU 調用智能合約驗證自身密級和數據的密級一致性,并針對數據的保密期限進行審查,符合智能合約規(guī)定的密級和保密期限執(zhí)行步驟(2),否則直接拒絕訪問。設定智能合約的定時輪詢檢測功能,如果文件期限有問題,則直接提醒數據的擁有者,針對CB 元數據進行更改重新上鏈。具體的算法偽代碼如下文所述。
(2)DRU 在CB 查詢中關鍵字或摘要的密文,獲取數據文件索引密文CT和哈希值HM。使用屬性權重私鑰SK驗證DRU 是否滿足訪問控制樹T,其中q是T的一個節(jié)點,設γ是訪問控制樹T的一個根節(jié)點,如果滿足的情況下,計算R=DecryptNode(CT,SK,γ)=e(g,g)γt,獲得原始數據的文件索引loc和對稱密鑰keyAES。
(3)從云存儲服務器下載數據密文C1,并解密數據得到明文Decrypt(C1,keyAES)=C~/e(C,D)/R)→M。
(4)計算哈希值,校驗數據的一致性。
本模型采用鏈下計算鏈上存儲的數據共享方式,因此從數據鏈下加密計算方向和鏈上存儲方向分析數據的安全性。
4.1.1 加密算法安全性
在本模型中,結合數據加密標準(Data Encryption Standard,DES)、Paillier 算法、CP-ABE 等多種加密技術,其中DES 算法可以保證算法的安全性。Paillier 同態(tài)加密算法[14]證明了在隨機語言模型下,該算法能夠抵抗適應性攻擊,具有很好的同態(tài)特性;CP-ABE 算法[16]通過選擇屬性和選擇明文攻擊下的不可區(qū)分性(in-distinguish ability against selective access structure and chosen plaintext attack,IND-SASCPA)游戲,證明了該算法可以達到抵抗選擇明文攻擊下的安全性。本文采用權重屬性集作為葉子節(jié)點和文獻[16]采用普通屬性集作為葉子節(jié)點的研究方法相同,因此證明方法也相同,可以達到抵抗選擇明文攻擊下的安全性要求。
4.1.2 數據的機密性和完整性
在本模型中DES 對稱加密保證了云服務器存儲的數據為密文,通過Pailler 算法同態(tài)加密保證了關鍵字和數據摘要為密文,通過CP-ABE 加密保證了數據文件索引和對稱密鑰為密文。因此,在數據流轉過程中保證了數據的機密性,并通過元數據的哈希值,保證了原文件的完整性。
4.1.3 CB 安全性分析
在本模型中采用CB的方式,即數據區(qū)塊通過Merkle 樹構造,并按照時間順序鏈接保證區(qū)塊消息不能任意修改,除非全網51%的節(jié)點被篡改。此外,本鏈中通過TC的監(jiān)管,保證了接入節(jié)點的安全性,且本模型將關鍵字和數據摘要的密文以及地址索引和對稱密鑰密文存儲在CB 上,因此具備防篡改能力。
通過對比本文數據共享處理的模型和其他場景模型的數據共享功能分析,得到表1。可以看出,相比文獻[5]、文獻[6]、文獻[10]中的模型,本模型具有明顯優(yōu)勢。相比于文獻[8],本模型采用權重屬性基加密,可以實現更精細的粒度控制,且適用范圍更廣;本模型采用關鍵字和摘要同態(tài)加密,可以實現摘要的預覽從而減少帶寬開銷。
表1 模型對比
為了更準確地評估本模型的實際性能,本文對CP-ABE 算法、Pailler 算法和智能合約機制進行實驗仿真。實驗的硬件環(huán)境:Intel?Core TM i5-7500 3.4 GHz的CPU、隨機存取存儲器(Random Access Memory,RAM)為8 GB。實驗環(huán)境構造:在VMware Workstation 12 上安裝Ubuntu 16.04.7;采用Hyperledger Fabric的版本v1.4,進行重構設計智能合約。
本文在不同的屬性策略條件下,選擇512 字節(jié)的數據,對比文獻[10]和本文模型的CP-ABE 加解密開銷。如圖6 所示,結果表明本模型在加解密方面有明顯的優(yōu)勢。其中,文獻[10]將屬性值和屬性權重值相分離,計算了兩次CP-ABE 加解密,而本模型采用權重屬性總計算值作為屬性因子進行加解密可以減少大量開銷。
圖6 CP-ABE 不同方案加解密時間開銷
本文的模型是基于區(qū)塊鏈的元數據來進行CPABE 加解密,因此數據的長度有限。本文選擇256字節(jié)和512 字節(jié)的數據進行實驗仿真。如圖7 所示,結果表明CP-ABE 加解密時間開銷隨著屬性策略的增加時間變長,但是在實際應用在可接收范圍內。
圖7 CP-ABE 不同明文長度加解密時間開銷
本模型采用Pailler 算法針對搜索關鍵字和摘要進行加密,根據文件摘要的長度特點本文選擇長度為1024 字節(jié)、2048 字節(jié)、3072 字節(jié)、4096 字節(jié)進行實驗仿真。如圖8 所示,隨著數據長度的增加,加解密時間增加,但是在實際應用,加密時間在可接收范圍內。
圖8 Pailler 加解密時間開銷
本模型通過將智能合約機制進行仿真實驗,如圖9 所示,隨著元數據數目增加時間開銷越低,滿足實際使用需求。
圖9 智能合約機制的時間開銷對比
本文提出了一個基于區(qū)塊鏈的數據訪問控制模型,通過采用CB的方式,可以保證接入CB的節(jié)點的安全性,實現共享數據的追溯。通過模型分析和實驗仿真表明,本模型可以解決數據共享的安全和訪問控制問題。本文的主要貢獻如下:
(1)由于數據在不同的企業(yè)或者部門中流轉,傳統的檢索方法是針對關鍵字相關檢索,無法預覽共享數據摘要,造成重復多次無用下載,增加寬度開銷和存儲服務器資源使用等,本模型提供了基于同態(tài)加密算法針對共享數據的摘要進行加密,保護數據摘要的機密性同時滿足預覽需求。
(2)傳統的CP-ABE 僅對數據請求者的屬性做了訪問控制,然而數據共享中,不同部門具有相同組織架構但是對數據訪問權限不同的特殊性,本模型通過增加屬性的權重,解決數據共享不同部門的訪問控制需求,并通過改進CP-ABE 機制,減少數據加解密開銷。
(3)由于共享數據的密級應小于或者等于數據請求者密級要求,本模型利用聯盟鏈智能合約機制,優(yōu)先進行數據密級匹配,減少聯盟鏈中數據惡意查詢和下載的開銷。