胡 燕
(羅定開放大學 教務處,廣東 羅定 527200)
數(shù)據(jù)規(guī)模大幅度增長,促進了互聯(lián)網(wǎng)大數(shù)據(jù)時代的到來。大數(shù)據(jù)指的是規(guī)模龐大,不能被輕易存儲、計算的數(shù)據(jù)集合;多源大數(shù)據(jù)指的是不同來源的數(shù)據(jù),數(shù)據(jù)類型繁多、信息量龐大、可靠度較高[1]。人們在享受多源大數(shù)據(jù)提供便利服務的同時,也存在隱藏的安全問題,比如用戶個人隱私保護以及多維大數(shù)據(jù)安全共享等問題[2-3]。若用戶個人隱私遭到泄漏,可能遭受不法分子的惡意騷擾甚至詐騙,被不法分子惡意盜取,損害國家以及個人的利益。因此,多維大數(shù)據(jù)安全問題是重中之重[4]。多維大數(shù)據(jù)安全訪問控制能夠保障數(shù)據(jù)安全共享。所謂訪問控制是指通過判斷用戶的身份信息,給予正常用戶訪問權(quán)限,且正常用戶只能訪問已授權(quán)的數(shù)據(jù),拒絕惡意用戶訪問請求,從而保障數(shù)據(jù)的安全[5]。然而如何實現(xiàn)多源大數(shù)據(jù)安全訪問控制,保護數(shù)據(jù)隱私的同時,又能實現(xiàn)數(shù)據(jù)安全共享,是目前亟需解決的問題。
王嘉龍等[6]結(jié)合訪問用戶的數(shù)量,研究一種基于訪問用戶屬性的大數(shù)據(jù)訪問控制方法,在原始的Ranger訪問控制模型中引用密文策略屬性加密方法,運用該方法的加密、解密為大數(shù)據(jù)訪問控制策略中增加訪問控制樹;實現(xiàn)多源大數(shù)據(jù)的安全訪問控制。黃美蓉等[7]結(jié)合過去經(jīng)驗學習,提出一種基于角色的多源大數(shù)據(jù)安全訪問控制方法,該方法能夠代替人工審查訪問用戶是否授權(quán),實現(xiàn)自動化審查;通過提取正確授權(quán)、錯誤授權(quán)等特征,進行訪問控制刻畫,面對不同的訪問用戶均能給出正確判斷,實現(xiàn)大數(shù)據(jù)的安全訪問控制。但是前者在加密、解密的過程中占用了大量時間,增加了存儲空間的開銷;后者存在授權(quán)過度或者是授權(quán)不足的問題,導致正常用戶無法訪問數(shù)據(jù),數(shù)據(jù)信息易被惡意用戶盜取。Qin等[8]提出了一種基于ABE和區(qū)塊鏈技術(shù)的輕量級解密訪問控制方案。使用區(qū)塊鏈技術(shù)進行代理計算,在該過程中實施加密操作。通過區(qū)塊鏈獲得授權(quán),并記錄訪問行為,以此建立一種用戶信譽激勵機制。根據(jù)用戶的訪問行為計算用戶的信譽,給出信譽評分,從而動態(tài)調(diào)整訪問方案。Banerjee等[9]提出了區(qū)塊鏈設想的細粒度用戶訪問控制方案。支持多個屬性權(quán)限以及固定的密鑰和密文?;诿艽a策略屬性對IoT智能設備收集的數(shù)據(jù)進行加密,并發(fā)送到附近的網(wǎng)關(guān)節(jié)點。網(wǎng)關(guān)節(jié)點根據(jù)加密數(shù)據(jù)形成交易,以形成部分區(qū)塊。將部分區(qū)塊轉(zhuǎn)發(fā)到對等網(wǎng)絡中的云服務器轉(zhuǎn)換為完整區(qū)塊,使用拜占庭容錯機制將完整區(qū)塊添加到區(qū)塊鏈中共識算法中,實現(xiàn)用戶訪問控制。王金威[10]為了降低網(wǎng)絡安全訪問延時,提高網(wǎng)絡利用率,設計了基于IPv6環(huán)境的安全訪問控制模型,利用ReliefF算法獲取特征子集,采用PCA方法對網(wǎng)絡信息進行降維處理,基于上下文約束概念建立訪問控制模型,實現(xiàn)安全訪問控制。趙男男[11]基于聯(lián)合特征辨識方法設計信息編碼,建立模糊信道編碼模型提取特征值,通過優(yōu)化BP神經(jīng)網(wǎng)絡進行數(shù)據(jù)聚類,結(jié)合自適應濾波方法檢測網(wǎng)絡攻擊,保證信息安全性。但是上述方法在加密、解密的過程中占用了大量時間,增加了存儲空間的開銷,同時數(shù)據(jù)信息易被惡意用戶盜取。
屬性加密(Attribute-based encryption,ABE)把訪問用戶身份視為一種屬性,當用戶的屬性超過多源大數(shù)據(jù)加密者設置的閾值時,用戶可進行解密[12]。屬性加密分為密文、密鑰兩種策略屬性。屬性加密能夠起到很好的多源大數(shù)據(jù)安全訪問控制效果,實現(xiàn)多源大數(shù)據(jù)安全共享[13]。但是,屬性加密比較復雜,直接用其加密多源大數(shù)據(jù),會形成大量的計算開銷;且需要龐大的屬性集才能夠管理全部的屬性,如何高效運用屬性加密是多源大數(shù)據(jù)安全訪問控制面臨的一個難題。為此,本文提出基于改進屬性加密的多源大數(shù)據(jù)安全訪問控制方法,維護大數(shù)據(jù)實現(xiàn)安全共享。
1.1.1 安全訪問控制機制
由于數(shù)據(jù)規(guī)模較大,多源大數(shù)據(jù)擁有者通常將大數(shù)據(jù)存儲在云端,無法像管理本地數(shù)據(jù)一樣去管理云端中的大數(shù)據(jù)。云服務提供商為獲取自身利益,存在非法訪問用戶的私密數(shù)據(jù)信息現(xiàn)象,因此用戶的隱私遭到泄露。
為保護數(shù)據(jù)安全,多源大數(shù)據(jù)擁有者先加密大數(shù)據(jù),再將加密后的大數(shù)據(jù)上傳到云端,訪問用戶獲取到訪問權(quán)限,才能夠得到訪問該大數(shù)據(jù)的解密密鑰。目前,運用比較多的是基于屬性加密的多源大數(shù)據(jù)安全訪問控制模型[14-15],分為密文策略屬性加密(Ciphertext Policy Atteribute Based Encryption,CP-ABE)和密鑰策略屬性加密兩種方法。
密鑰策略屬性加密中,每個多源大數(shù)據(jù)密文具有相應的屬性,所有訪問用戶的密鑰都有相應的訪問控制結(jié)構(gòu)[16]。若該訪問用戶密鑰的訪問控制結(jié)構(gòu)和已經(jīng)加密的多源大數(shù)據(jù)密文屬性相匹配,則該訪問用戶的密鑰能夠解密多源大數(shù)據(jù)密文,擁有訪問權(quán)限;若兩者不能夠匹配,則該訪問用戶的密鑰不能解密多源大數(shù)據(jù)密文,說明該訪問用戶沒有訪問權(quán)限。如果訪問用戶想要訪問多個大數(shù)據(jù)文件,就需要多個密鑰,才能夠解密多個大數(shù)據(jù)文件。
CP-ABE中,每個訪問用戶都有相應的屬性,根據(jù)用戶的屬性生成該訪問用戶的私鑰,每個多源大數(shù)據(jù)文件中都有一個訪問控制結(jié)構(gòu)[17]。如果訪問用戶的屬性能夠達到訪問多源大數(shù)據(jù)文件的要求,則該訪問用戶的私鑰能夠解開多源大數(shù)據(jù)密文;如果不能滿足要求,則不能解開該密文。
CP-ABE的優(yōu)點為:多源大數(shù)據(jù)擁有者可以根據(jù)訪問用戶的屬性,給自身擁有的每個大數(shù)據(jù)文件賦予不同的訪問控制策略。每個訪問用戶只有一個密鑰。多源大數(shù)據(jù)擁有者在不改變公鑰、私鑰的情況下,可以直接修改多源大數(shù)據(jù)文件的訪問控制策略。因此,本文提出一種基于CP-ABE的多源大數(shù)據(jù)安全訪問控制模型。
1.1.2 基于CP-ABE的安全訪問控制模型
基于CP-ABE的多源大數(shù)據(jù)安全訪問控制模型由用戶、數(shù)據(jù)擁有者、認證頒發(fā)機構(gòu)和屬性管理機構(gòu)組成[18],多源大數(shù)據(jù)安全訪問控制模型如圖1所示。
圖1 多源大數(shù)據(jù)安全訪問控制模型
證書頒發(fā)機構(gòu)能夠為訪問用戶、多源大數(shù)據(jù)擁有者、屬性管理機構(gòu)等頒發(fā)公鑰證書。訪問用戶的公鑰證書在多源大數(shù)據(jù)擁有者的訪問用戶權(quán)限列表中,該訪問用戶即可訪問多源大數(shù)據(jù)。
屬性管理機構(gòu)根據(jù)不同用戶更新、發(fā)布以及撤銷用戶屬性,該機構(gòu)主要負責生成公共屬性密鑰,將密鑰頒發(fā)給具有訪問權(quán)限的用戶。
多源大數(shù)據(jù)擁有者將多源大數(shù)據(jù)加密后再上傳至云中,結(jié)合CP-ABE設置訪問控制策略管理訪問用戶怎樣訪問特定的多源大數(shù)據(jù)資源,管理數(shù)據(jù)資源的訪問權(quán)限。本文只有多源大數(shù)據(jù)擁有者才能夠更新訪問控制策略[19]。
訪問用戶想要訪問(讀或者寫)多源大數(shù)據(jù)時,屬性管理機構(gòu)將會給該訪問用戶頒發(fā)屬性。訪問用戶將訪問多源大數(shù)據(jù)的請求發(fā)送到控制模型的授權(quán)中心,經(jīng)過授權(quán)中心的檢驗,給予該用戶訪問多源大數(shù)據(jù)的權(quán)限。
本文提取出基于CP-ABE的多源大數(shù)據(jù)安全訪問控制方法。CP-ABE由屬性、訪問結(jié)構(gòu)以及訪問樹三部分組成[20]。
設集合P={P1,P2,…,Pn}代表多源大數(shù)據(jù)全部屬性,訪問用戶的屬性用C表示,訪問用戶屬性是多源大數(shù)據(jù)屬性集合中的非空子集,C?{P1,P2,…,Pn},說明根據(jù)屬性N能夠辨別2N個用戶。
設u表示訪問結(jié)構(gòu),且u?2{P1,P2,…,Pn}?φ。訪問結(jié)構(gòu)能夠辨別訪問用戶的屬性,若訪問用戶的屬性集合在訪問結(jié)構(gòu)中,則表示該集合已被授予訪問權(quán)限;若訪問用戶的屬性集合不在訪問結(jié)構(gòu)中,則表示該集合沒有獲取訪問權(quán)限。
訪問樹用于描述一個訪問結(jié)構(gòu),多源大數(shù)據(jù)的加密密鑰隱藏在其中,訪問樹的葉節(jié)點象征著訪問用戶的屬性。該樹中的所有節(jié)點均為一個多項式,采用前序遍歷的方式,按照從左至右的順序進行訪問[21-22]。
CP-ABE由以下四個步驟構(gòu)成。
Setup:多源大數(shù)據(jù)擁有者生成主密鑰和公鑰。
Encypt:多源大數(shù)據(jù)擁有者運用公鑰、訪問結(jié)構(gòu)加密多源大數(shù)據(jù)文件,得到多源大數(shù)據(jù)密文。
KeyGen:訪問用戶結(jié)合其屬性和主密鑰得到屬于該訪問用戶的私鑰。
Decrypt:利用訪問用戶的私鑰將已經(jīng)加密的多源大數(shù)據(jù)密文解密,得到多源大數(shù)據(jù)明文。
將CP-ABE用于多源大數(shù)據(jù)安全訪問控制機制中,雖然增加多源大數(shù)據(jù)訪問控制的安全性能,但CP-ABE并沒有和多源大數(shù)據(jù)安全訪問控制模型相結(jié)合,無法提高該訪問控制模型的效率。因此,本文提出基于改進屬性加密的多源大數(shù)據(jù)安全訪問控制方法,更加全面的定義多源大數(shù)據(jù)的安全訪問控制過程。
以往的屬性加密算法通常基于訪問策略控制訪問權(quán)限,在只有滿足特定屬性或?qū)傩越M合的用戶才能解密和訪問加密數(shù)據(jù)。而改進屬性加密算法引入了訪問樹這種更加靈活的控制方式,能夠適應不同場景和需求的變化。
1.3.1 計算主密鑰和公鑰
在集合P={P1,P2,…,Pn}中共有n個元素,設p表示元素的素數(shù)階,p的乘法循環(huán)群用G和GT表示,設g表示G的生成元。設M個群元素h1,h2,…,hM∈G和屬性集合P相關(guān)聯(lián),從中任意選取指數(shù)a、b。
多源大數(shù)據(jù)所有者的主密鑰為K,其計算公式為:
K=ga
(1)
多源大數(shù)據(jù)所有者的公鑰為K′,其計算公式為:
K′={g,K(g,g)a,gb,h1,…,hM}
(2)
1.3.2 文件加密
多源大數(shù)據(jù)擁有者設定待加密存儲的多源大數(shù)據(jù)在云存儲中心有且僅有一個ID,為了提高屬性加密算法的靈活性,使其可以適應不同屬性用戶的需求,將訪問樹機制引入文件加密中,任意選取一個對稱密鑰S加密多源大數(shù)據(jù)文件,得到密文用C(t)表示,具體表達式為:
C(t)=Encypt(K′,{S,Ksi,Kve},u,t)
(3)
式(3)中,簽名密鑰的讀、寫權(quán)限分別為Kve、Ksi,其中Ksi主要表示用戶進行寫的步驟后,簽名該多源大數(shù)據(jù)文件;Kve也被稱為驗證密鑰,主要用于驗證簽名結(jié)果。多源大數(shù)據(jù)訪問樹的訪問結(jié)構(gòu)為u,加密多源大數(shù)據(jù)過程的時間戳為t。
訪問用戶權(quán)限列表中所有訪問用戶的屬性集合用Pu表示,計算出訪問用戶的私鑰用Kpru表示,具體表達式為:
Kpru=keyGen(K,Pu)
(4)
對訪問用戶的私鑰后加密,將加密后的私鑰發(fā)送給該訪問用戶。
多源大數(shù)據(jù)擁有者將多源大數(shù)據(jù)文件加密后儲存在云中,將具有訪問多源大數(shù)據(jù)文件權(quán)限的用戶ID,已經(jīng)訪問多源大數(shù)據(jù)文件的用戶名單以及刪除訪問多源大數(shù)據(jù)文件權(quán)限的用戶名單等訪問用戶權(quán)限列表儲存在云中。
1.3.3 獲取用戶授權(quán)和讀寫數(shù)據(jù)文件
在多源大數(shù)據(jù)安全訪問控制模型中,所有訪問用戶都有一個公鑰、一個私鑰,用戶證書中存儲訪問用戶的公鑰,并公開驗證消息來源的真實性;多源大數(shù)據(jù)擁有者在建立多源大數(shù)據(jù)文件時將私鑰發(fā)送給訪問用戶,訪問用戶通過客戶端儲存私鑰,為保證多源大數(shù)據(jù)的可靠性,需要對消息簽名。
如果訪問用戶想要讀取加密的多源大數(shù)據(jù)文件,那么訪問用戶應當查找多源大數(shù)據(jù)密文,從中找到想要讀取的加密文件、訪問結(jié)構(gòu)以及簽名。
通過上述計算,得到訪問多源大數(shù)據(jù)文件的兩種密鑰,分別為S、Kve。訪問用戶將含有上述兩種密鑰的訪問請求發(fā)送到訪問模型的授權(quán)中心,授權(quán)中心接收到訪問請求后,將訪問請求中的S、Kve和云端中存儲的訪問用戶權(quán)限列表中的對稱、驗證密鑰對比,若兩者成功匹配,說明該訪問用戶得到訪問多源大數(shù)據(jù)的權(quán)限。
與此同時,訪問用戶運用密鑰驗證簽名的準確性,若該簽名是準確的,運用對稱密鑰解密加密文件,得到多源大數(shù)據(jù)明文。
1.3.4 控制訪問用戶權(quán)限
1.3.4.1 授予訪問用戶權(quán)限
授予訪問用戶權(quán)限指的是將訪問用戶的屬性集添加到訪問結(jié)構(gòu)中。多源大數(shù)據(jù)擁有者在多源大數(shù)據(jù)文件的密鑰體中得到密文,多源大數(shù)據(jù)擁有者運用私鑰和訪問結(jié)構(gòu),解密密文得到簽名、驗證、對稱三種密鑰,將訪問用戶的屬性集添加到訪問結(jié)構(gòu)中,得到新的訪問結(jié)構(gòu),其表達式為:
u′=u∨Pu
(5)
此時,根據(jù)u′得到新的多源大數(shù)據(jù)密文C′(t)的表達式為:
C′(t)=Encypt(K′,{S,Ksi,Kve},u′,t)
(6)
此時,多源大數(shù)據(jù)擁有者將多源大數(shù)據(jù)文件的密鑰體中的密文更新為C′。
1.3.4.2 訪問用戶權(quán)限擴展與刪除
訪問用戶權(quán)限的擴展就是在訪問結(jié)構(gòu)中添加訪問用戶的屬性,多源大數(shù)據(jù)擁有者依據(jù)訪問用戶的屬性和式(4)得到訪問用戶的私鑰;按照該用戶的訪問請求增加新的訪問權(quán)限,將該權(quán)限的屬性添加到原始多源大數(shù)據(jù)信息中,根據(jù)式(5)和式(6)得到新的訪問結(jié)構(gòu)以及數(shù)據(jù)項,最后將數(shù)據(jù)項寫入多源大數(shù)據(jù)文件密鑰體中。
訪問用戶權(quán)限的刪除就是從多源大數(shù)據(jù)文件密鑰體的訪問結(jié)構(gòu)中刪除訪問用戶的屬性集。當多源大數(shù)據(jù)擁有者按照訪問用戶屬性集和式(4)得到訪問用戶的私鑰,在多源大數(shù)據(jù)文件密鑰體數(shù)據(jù)項中查找出其訪問結(jié)構(gòu),從原訪問結(jié)構(gòu)中刪除該訪問用戶的屬性集,即u′=u-Au,多源大數(shù)據(jù)擁有者得到新的驗證密鑰用Kve′表示,S′表示新的對稱密鑰、Ksi′表示新的簽名密鑰。新的多源大數(shù)據(jù)密文的表達式為:
C′(t)=Encypt(K′,{S′,Ksi′,Kve′},u′,t)
(7)
訪問用戶運用新簽名密鑰對多源大數(shù)據(jù)文件重新簽名,用C′(t)代替C。
通過以上流程,完成改進屬性加密,高效率實現(xiàn)多源大數(shù)據(jù)安全訪問控制,維護大數(shù)據(jù)安全共享。
2 實驗分析
以SQL Server數(shù)據(jù)庫作為本次實驗對象,Python為實驗的開發(fā)語言。本次實驗外部環(huán)境為:酷睿i9-12900處理器,5.1GHZ,30M的三級緩存。操作系統(tǒng)為UNIX,在VMware Workstation 6.5.2虛擬機上安裝Ubuntu 16.04??蛻舳嗽品掌鳛?核16G。
本文方法是在CP-ABE的基礎上進行改進,為驗證本文方法改進效果,在屬性數(shù)量和訪問用戶不同的情況下,將CP-ABE改進前后的多源大數(shù)據(jù)擁有者根據(jù)訪問用戶屬性的主密鑰生成私鑰的時間進行比較,比較結(jié)果如圖2所示。
(a)屬性數(shù)量不同
由圖2(a)可知,隨著訪問用戶以及屬性數(shù)量的增長,多源大數(shù)據(jù)私鑰產(chǎn)生的時間也逐漸增加。屬性數(shù)量在20以內(nèi)時,CP-ABE改進前后,訪問用戶的私鑰產(chǎn)生時間幾乎一致;屬性數(shù)量超過20時,改進后訪問用戶私鑰產(chǎn)生時間較短,且始終低于1s。由圖2(b)可知,當訪問用戶數(shù)量超過100時,改進后訪問用戶私鑰產(chǎn)生時間相比改進前顯著降低,且私鑰產(chǎn)生時間始終低于2s。實驗結(jié)果表明,改進后CP-ABE的私鑰產(chǎn)生時間較短,提高了私鑰產(chǎn)生的效率。
在屬性數(shù)量分別為15、30時,運用本文方法進行多源大數(shù)據(jù)安全訪問控制,統(tǒng)計所占用存儲空間情況,如圖3所示。
圖3 存儲空間占用情況
由圖3可知,隨著訪問用戶的數(shù)量增加,占用的存儲空間也逐漸增大,屬性數(shù)量的增加也會導致占用的存儲空間增加。但當訪問用戶數(shù)量超過150時,在本文方法的控制下存儲空間基本趨于穩(wěn)定,不會因為用戶數(shù)據(jù)量及屬性數(shù)量的增加導致占用的存儲空間劇增。實驗結(jié)果表明,在訪問用戶及屬性數(shù)量增加時,本文方法仍能夠儲存大量多源大數(shù)據(jù)文件的密鑰體數(shù)據(jù),極大的減少了存儲空間開銷。
通過驗證本文方法加密效果,衡量本文方法的安全訪問控制性能。從數(shù)據(jù)庫中任意選取一個多源大數(shù)據(jù)文件,運用本文方法進行加密,加密前后多源大數(shù)據(jù)文件中的字符變化如圖4所示。
(a)加密前的數(shù)據(jù)ASCII值的分布
由圖4(a)可知,加密前多源大數(shù)據(jù)文件中的字符按照某種次序工整的排列,ASCII值也具有相應的分布順序。而圖4(b)中加密存儲后的多源大數(shù)據(jù)文件中的字符雜亂無章,毫無排列規(guī)律,且ASCII值分布比較均勻,完全隱藏原始多源大數(shù)據(jù)文件中的字符。實驗結(jié)果表明,本文方法在加密多源大數(shù)據(jù)后,能夠?qū)⒍嘣创髷?shù)據(jù)內(nèi)容完全隱藏,避免沒有權(quán)限的用戶直接查看多源大數(shù)據(jù)文件,從而提高訪問多源大數(shù)據(jù)的安全性。
為驗證本文方法的實用性,運用本文方法管理訪問用戶的訪問多源大數(shù)據(jù)的權(quán)限,并通過大數(shù)據(jù)安全控制訪問系統(tǒng)呈現(xiàn)本文方法安全訪問控制結(jié)果,如圖5所示。
圖5 本文方法訪問控制結(jié)果
由圖5可知,運用本文方法能夠快速辨別訪問用戶是正常用戶還是惡意用戶。從大數(shù)據(jù)安全控制訪問系統(tǒng)的安全訪問控制日志中可查看某一時間段的訪問用戶,若訪問用戶在多源大數(shù)據(jù)安全控制訪問系統(tǒng)的訪問用戶權(quán)限列表中,則說明該用戶具有訪問多源大數(shù)據(jù)文件權(quán)限,可以查看有訪問權(quán)限的多源大數(shù)據(jù)文件。若訪問用戶不在該列表中,說明系統(tǒng)檢測出該用戶為惡意用戶,阻止該用戶訪問多源大數(shù)據(jù)文件。實驗結(jié)果表明,本文方法能夠?qū)崿F(xiàn)多源大數(shù)據(jù)安全訪問控制,阻止惡意用戶訪問數(shù)據(jù),維護多源大數(shù)據(jù)的安全,實用性較好。
為了維護多源大數(shù)據(jù)的安全性,提出基于改進屬性加密的多源大數(shù)據(jù)安全訪問控制方法。通過實驗驗證本文方法生成私鑰的效率、存儲空間占用、數(shù)據(jù)加密效果以及實用性。實驗結(jié)果表明,在屬性數(shù)量和訪問用戶數(shù)量不同的情況下,改進后CP-ABE根據(jù)訪問用戶屬性生成私鑰的時間明顯降低,提高了私鑰生成效率。隨著訪問用戶及屬性數(shù)量的增加,本文方法有效儲存多源大數(shù)據(jù)文件密鑰體數(shù)據(jù),節(jié)約存儲空間,增加多源大數(shù)據(jù)的安全訪問性能。能夠辨別惡意用戶訪問,維護大數(shù)據(jù)安全共享。