胡 燕
(羅定開放大學 教務處,廣東 羅定 527200)
數據規模大幅度增長,促進了互聯網大數據時代的到來。大數據指的是規模龐大,不能被輕易存儲、計算的數據集合;多源大數據指的是不同來源的數據,數據類型繁多、信息量龐大、可靠度較高[1]。人們在享受多源大數據提供便利服務的同時,也存在隱藏的安全問題,比如用戶個人隱私保護以及多維大數據安全共享等問題[2-3]。若用戶個人隱私遭到泄漏,可能遭受不法分子的惡意騷擾甚至詐騙,被不法分子惡意盜取,損害國家以及個人的利益。因此,多維大數據安全問題是重中之重[4]。多維大數據安全訪問控制能夠保障數據安全共享。所謂訪問控制是指通過判斷用戶的身份信息,給予正常用戶訪問權限,且正常用戶只能訪問已授權的數據,拒絕惡意用戶訪問請求,從而保障數據的安全[5]。然而如何實現多源大數據安全訪問控制,保護數據隱私的同時,又能實現數據安全共享,是目前亟需解決的問題。
王嘉龍等[6]結合訪問用戶的數量,研究一種基于訪問用戶屬性的大數據訪問控制方法,在原始的Ranger訪問控制模型中引用密文策略屬性加密方法,運用該方法的加密、解密為大數據訪問控制策略中增加訪問控制樹;實現多源大數據的安全訪問控制。黃美蓉等[7]結合過去經驗學習,提出一種基于角色的多源大數據安全訪問控制方法,該方法能夠代替人工審查訪問用戶是否授權,實現自動化審查;通過提取正確授權、錯誤授權等特征,進行訪問控制刻畫,面對不同的訪問用戶均能給出正確判斷,實現大數據的安全訪問控制。但是前者在加密、解密的過程中占用了大量時間,增加了存儲空間的開銷;后者存在授權過度或者是授權不足的問題,導致正常用戶無法訪問數據,數據信息易被惡意用戶盜取。Qin等[8]提出了一種基于ABE和區塊鏈技術的輕量級解密訪問控制方案。使用區塊鏈技術進行代理計算,在該過程中實施加密操作。通過區塊鏈獲得授權,并記錄訪問行為,以此建立一種用戶信譽激勵機制。根據用戶的訪問行為計算用戶的信譽,給出信譽評分,從而動態調整訪問方案。Banerjee等[9]提出了區塊鏈設想的細粒度用戶訪問控制方案。支持多個屬性權限以及固定的密鑰和密文?;诿艽a策略屬性對IoT智能設備收集的數據進行加密,并發送到附近的網關節點。網關節點根據加密數據形成交易,以形成部分區塊。將部分區塊轉發到對等網絡中的云服務器轉換為完整區塊,使用拜占庭容錯機制將完整區塊添加到區塊鏈中共識算法中,實現用戶訪問控制。王金威[10]為了降低網絡安全訪問延時,提高網絡利用率,設計了基于IPv6環境的安全訪問控制模型,利用ReliefF算法獲取特征子集,采用PCA方法對網絡信息進行降維處理,基于上下文約束概念建立訪問控制模型,實現安全訪問控制。趙男男[11]基于聯合特征辨識方法設計信息編碼,建立模糊信道編碼模型提取特征值,通過優化BP神經網絡進行數據聚類,結合自適應濾波方法檢測網絡攻擊,保證信息安全性。但是上述方法在加密、解密的過程中占用了大量時間,增加了存儲空間的開銷,同時數據信息易被惡意用戶盜取。
屬性加密(Attribute-based encryption,ABE)把訪問用戶身份視為一種屬性,當用戶的屬性超過多源大數據加密者設置的閾值時,用戶可進行解密[12]。屬性加密分為密文、密鑰兩種策略屬性。屬性加密能夠起到很好的多源大數據安全訪問控制效果,實現多源大數據安全共享[13]。但是,屬性加密比較復雜,直接用其加密多源大數據,會形成大量的計算開銷;且需要龐大的屬性集才能夠管理全部的屬性,如何高效運用屬性加密是多源大數據安全訪問控制面臨的一個難題。為此,本文提出基于改進屬性加密的多源大數據安全訪問控制方法,維護大數據實現安全共享。
1.1.1 安全訪問控制機制
由于數據規模較大,多源大數據擁有者通常將大數據存儲在云端,無法像管理本地數據一樣去管理云端中的大數據。云服務提供商為獲取自身利益,存在非法訪問用戶的私密數據信息現象,因此用戶的隱私遭到泄露。
為保護數據安全,多源大數據擁有者先加密大數據,再將加密后的大數據上傳到云端,訪問用戶獲取到訪問權限,才能夠得到訪問該大數據的解密密鑰。目前,運用比較多的是基于屬性加密的多源大數據安全訪問控制模型[14-15],分為密文策略屬性加密(Ciphertext Policy Atteribute Based Encryption,CP-ABE)和密鑰策略屬性加密兩種方法。
密鑰策略屬性加密中,每個多源大數據密文具有相應的屬性,所有訪問用戶的密鑰都有相應的訪問控制結構[16]。若該訪問用戶密鑰的訪問控制結構和已經加密的多源大數據密文屬性相匹配,則該訪問用戶的密鑰能夠解密多源大數據密文,擁有訪問權限;若兩者不能夠匹配,則該訪問用戶的密鑰不能解密多源大數據密文,說明該訪問用戶沒有訪問權限。如果訪問用戶想要訪問多個大數據文件,就需要多個密鑰,才能夠解密多個大數據文件。
CP-ABE中,每個訪問用戶都有相應的屬性,根據用戶的屬性生成該訪問用戶的私鑰,每個多源大數據文件中都有一個訪問控制結構[17]。如果訪問用戶的屬性能夠達到訪問多源大數據文件的要求,則該訪問用戶的私鑰能夠解開多源大數據密文;如果不能滿足要求,則不能解開該密文。
CP-ABE的優點為:多源大數據擁有者可以根據訪問用戶的屬性,給自身擁有的每個大數據文件賦予不同的訪問控制策略。每個訪問用戶只有一個密鑰。多源大數據擁有者在不改變公鑰、私鑰的情況下,可以直接修改多源大數據文件的訪問控制策略。因此,本文提出一種基于CP-ABE的多源大數據安全訪問控制模型。
1.1.2 基于CP-ABE的安全訪問控制模型
基于CP-ABE的多源大數據安全訪問控制模型由用戶、數據擁有者、認證頒發機構和屬性管理機構組成[18],多源大數據安全訪問控制模型如圖1所示。

圖1 多源大數據安全訪問控制模型
證書頒發機構能夠為訪問用戶、多源大數據擁有者、屬性管理機構等頒發公鑰證書。訪問用戶的公鑰證書在多源大數據擁有者的訪問用戶權限列表中,該訪問用戶即可訪問多源大數據。
屬性管理機構根據不同用戶更新、發布以及撤銷用戶屬性,該機構主要負責生成公共屬性密鑰,將密鑰頒發給具有訪問權限的用戶。
多源大數據擁有者將多源大數據加密后再上傳至云中,結合CP-ABE設置訪問控制策略管理訪問用戶怎樣訪問特定的多源大數據資源,管理數據資源的訪問權限。本文只有多源大數據擁有者才能夠更新訪問控制策略[19]。
訪問用戶想要訪問(讀或者寫)多源大數據時,屬性管理機構將會給該訪問用戶頒發屬性。訪問用戶將訪問多源大數據的請求發送到控制模型的授權中心,經過授權中心的檢驗,給予該用戶訪問多源大數據的權限。
本文提取出基于CP-ABE的多源大數據安全訪問控制方法。CP-ABE由屬性、訪問結構以及訪問樹三部分組成[20]。
設集合P={P1,P2,…,Pn}代表多源大數據全部屬性,訪問用戶的屬性用C表示,訪問用戶屬性是多源大數據屬性集合中的非空子集,C?{P1,P2,…,Pn},說明根據屬性N能夠辨別2N個用戶。
設u表示訪問結構,且u?2{P1,P2,…,Pn}?φ。訪問結構能夠辨別訪問用戶的屬性,若訪問用戶的屬性集合在訪問結構中,則表示該集合已被授予訪問權限;若訪問用戶的屬性集合不在訪問結構中,則表示該集合沒有獲取訪問權限。
訪問樹用于描述一個訪問結構,多源大數據的加密密鑰隱藏在其中,訪問樹的葉節點象征著訪問用戶的屬性。該樹中的所有節點均為一個多項式,采用前序遍歷的方式,按照從左至右的順序進行訪問[21-22]。
CP-ABE由以下四個步驟構成。
Setup:多源大數據擁有者生成主密鑰和公鑰。
Encypt:多源大數據擁有者運用公鑰、訪問結構加密多源大數據文件,得到多源大數據密文。
KeyGen:訪問用戶結合其屬性和主密鑰得到屬于該訪問用戶的私鑰。
Decrypt:利用訪問用戶的私鑰將已經加密的多源大數據密文解密,得到多源大數據明文。
將CP-ABE用于多源大數據安全訪問控制機制中,雖然增加多源大數據訪問控制的安全性能,但CP-ABE并沒有和多源大數據安全訪問控制模型相結合,無法提高該訪問控制模型的效率。因此,本文提出基于改進屬性加密的多源大數據安全訪問控制方法,更加全面的定義多源大數據的安全訪問控制過程。
以往的屬性加密算法通?;谠L問策略控制訪問權限,在只有滿足特定屬性或屬性組合的用戶才能解密和訪問加密數據。而改進屬性加密算法引入了訪問樹這種更加靈活的控制方式,能夠適應不同場景和需求的變化。
1.3.1 計算主密鑰和公鑰
在集合P={P1,P2,…,Pn}中共有n個元素,設p表示元素的素數階,p的乘法循環群用G和GT表示,設g表示G的生成元。設M個群元素h1,h2,…,hM∈G和屬性集合P相關聯,從中任意選取指數a、b。
多源大數據所有者的主密鑰為K,其計算公式為:
K=ga
(1)
多源大數據所有者的公鑰為K′,其計算公式為:
K′={g,K(g,g)a,gb,h1,…,hM}
(2)
1.3.2 文件加密
多源大數據擁有者設定待加密存儲的多源大數據在云存儲中心有且僅有一個ID,為了提高屬性加密算法的靈活性,使其可以適應不同屬性用戶的需求,將訪問樹機制引入文件加密中,任意選取一個對稱密鑰S加密多源大數據文件,得到密文用C(t)表示,具體表達式為:
C(t)=Encypt(K′,{S,Ksi,Kve},u,t)
(3)
式(3)中,簽名密鑰的讀、寫權限分別為Kve、Ksi,其中Ksi主要表示用戶進行寫的步驟后,簽名該多源大數據文件;Kve也被稱為驗證密鑰,主要用于驗證簽名結果。多源大數據訪問樹的訪問結構為u,加密多源大數據過程的時間戳為t。
訪問用戶權限列表中所有訪問用戶的屬性集合用Pu表示,計算出訪問用戶的私鑰用Kpru表示,具體表達式為:
Kpru=keyGen(K,Pu)
(4)
對訪問用戶的私鑰后加密,將加密后的私鑰發送給該訪問用戶。
多源大數據擁有者將多源大數據文件加密后儲存在云中,將具有訪問多源大數據文件權限的用戶ID,已經訪問多源大數據文件的用戶名單以及刪除訪問多源大數據文件權限的用戶名單等訪問用戶權限列表儲存在云中。
1.3.3 獲取用戶授權和讀寫數據文件
在多源大數據安全訪問控制模型中,所有訪問用戶都有一個公鑰、一個私鑰,用戶證書中存儲訪問用戶的公鑰,并公開驗證消息來源的真實性;多源大數據擁有者在建立多源大數據文件時將私鑰發送給訪問用戶,訪問用戶通過客戶端儲存私鑰,為保證多源大數據的可靠性,需要對消息簽名。
如果訪問用戶想要讀取加密的多源大數據文件,那么訪問用戶應當查找多源大數據密文,從中找到想要讀取的加密文件、訪問結構以及簽名。
通過上述計算,得到訪問多源大數據文件的兩種密鑰,分別為S、Kve。訪問用戶將含有上述兩種密鑰的訪問請求發送到訪問模型的授權中心,授權中心接收到訪問請求后,將訪問請求中的S、Kve和云端中存儲的訪問用戶權限列表中的對稱、驗證密鑰對比,若兩者成功匹配,說明該訪問用戶得到訪問多源大數據的權限。
與此同時,訪問用戶運用密鑰驗證簽名的準確性,若該簽名是準確的,運用對稱密鑰解密加密文件,得到多源大數據明文。
1.3.4 控制訪問用戶權限
1.3.4.1 授予訪問用戶權限
授予訪問用戶權限指的是將訪問用戶的屬性集添加到訪問結構中。多源大數據擁有者在多源大數據文件的密鑰體中得到密文,多源大數據擁有者運用私鑰和訪問結構,解密密文得到簽名、驗證、對稱三種密鑰,將訪問用戶的屬性集添加到訪問結構中,得到新的訪問結構,其表達式為:
u′=u∨Pu
(5)
此時,根據u′得到新的多源大數據密文C′(t)的表達式為:
C′(t)=Encypt(K′,{S,Ksi,Kve},u′,t)
(6)
此時,多源大數據擁有者將多源大數據文件的密鑰體中的密文更新為C′。
1.3.4.2 訪問用戶權限擴展與刪除
訪問用戶權限的擴展就是在訪問結構中添加訪問用戶的屬性,多源大數據擁有者依據訪問用戶的屬性和式(4)得到訪問用戶的私鑰;按照該用戶的訪問請求增加新的訪問權限,將該權限的屬性添加到原始多源大數據信息中,根據式(5)和式(6)得到新的訪問結構以及數據項,最后將數據項寫入多源大數據文件密鑰體中。
訪問用戶權限的刪除就是從多源大數據文件密鑰體的訪問結構中刪除訪問用戶的屬性集。當多源大數據擁有者按照訪問用戶屬性集和式(4)得到訪問用戶的私鑰,在多源大數據文件密鑰體數據項中查找出其訪問結構,從原訪問結構中刪除該訪問用戶的屬性集,即u′=u-Au,多源大數據擁有者得到新的驗證密鑰用Kve′表示,S′表示新的對稱密鑰、Ksi′表示新的簽名密鑰。新的多源大數據密文的表達式為:
C′(t)=Encypt(K′,{S′,Ksi′,Kve′},u′,t)
(7)
訪問用戶運用新簽名密鑰對多源大數據文件重新簽名,用C′(t)代替C。
通過以上流程,完成改進屬性加密,高效率實現多源大數據安全訪問控制,維護大數據安全共享。
2 實驗分析
以SQL Server數據庫作為本次實驗對象,Python為實驗的開發語言。本次實驗外部環境為:酷睿i9-12900處理器,5.1GHZ,30M的三級緩存。操作系統為UNIX,在VMware Workstation 6.5.2虛擬機上安裝Ubuntu 16.04??蛻舳嗽品掌鳛?核16G。
本文方法是在CP-ABE的基礎上進行改進,為驗證本文方法改進效果,在屬性數量和訪問用戶不同的情況下,將CP-ABE改進前后的多源大數據擁有者根據訪問用戶屬性的主密鑰生成私鑰的時間進行比較,比較結果如圖2所示。

(a)屬性數量不同
由圖2(a)可知,隨著訪問用戶以及屬性數量的增長,多源大數據私鑰產生的時間也逐漸增加。屬性數量在20以內時,CP-ABE改進前后,訪問用戶的私鑰產生時間幾乎一致;屬性數量超過20時,改進后訪問用戶私鑰產生時間較短,且始終低于1s。由圖2(b)可知,當訪問用戶數量超過100時,改進后訪問用戶私鑰產生時間相比改進前顯著降低,且私鑰產生時間始終低于2s。實驗結果表明,改進后CP-ABE的私鑰產生時間較短,提高了私鑰產生的效率。
在屬性數量分別為15、30時,運用本文方法進行多源大數據安全訪問控制,統計所占用存儲空間情況,如圖3所示。

圖3 存儲空間占用情況
由圖3可知,隨著訪問用戶的數量增加,占用的存儲空間也逐漸增大,屬性數量的增加也會導致占用的存儲空間增加。但當訪問用戶數量超過150時,在本文方法的控制下存儲空間基本趨于穩定,不會因為用戶數據量及屬性數量的增加導致占用的存儲空間劇增。實驗結果表明,在訪問用戶及屬性數量增加時,本文方法仍能夠儲存大量多源大數據文件的密鑰體數據,極大的減少了存儲空間開銷。
通過驗證本文方法加密效果,衡量本文方法的安全訪問控制性能。從數據庫中任意選取一個多源大數據文件,運用本文方法進行加密,加密前后多源大數據文件中的字符變化如圖4所示。

(a)加密前的數據ASCII值的分布
由圖4(a)可知,加密前多源大數據文件中的字符按照某種次序工整的排列,ASCII值也具有相應的分布順序。而圖4(b)中加密存儲后的多源大數據文件中的字符雜亂無章,毫無排列規律,且ASCII值分布比較均勻,完全隱藏原始多源大數據文件中的字符。實驗結果表明,本文方法在加密多源大數據后,能夠將多源大數據內容完全隱藏,避免沒有權限的用戶直接查看多源大數據文件,從而提高訪問多源大數據的安全性。
為驗證本文方法的實用性,運用本文方法管理訪問用戶的訪問多源大數據的權限,并通過大數據安全控制訪問系統呈現本文方法安全訪問控制結果,如圖5所示。

圖5 本文方法訪問控制結果
由圖5可知,運用本文方法能夠快速辨別訪問用戶是正常用戶還是惡意用戶。從大數據安全控制訪問系統的安全訪問控制日志中可查看某一時間段的訪問用戶,若訪問用戶在多源大數據安全控制訪問系統的訪問用戶權限列表中,則說明該用戶具有訪問多源大數據文件權限,可以查看有訪問權限的多源大數據文件。若訪問用戶不在該列表中,說明系統檢測出該用戶為惡意用戶,阻止該用戶訪問多源大數據文件。實驗結果表明,本文方法能夠實現多源大數據安全訪問控制,阻止惡意用戶訪問數據,維護多源大數據的安全,實用性較好。
為了維護多源大數據的安全性,提出基于改進屬性加密的多源大數據安全訪問控制方法。通過實驗驗證本文方法生成私鑰的效率、存儲空間占用、數據加密效果以及實用性。實驗結果表明,在屬性數量和訪問用戶數量不同的情況下,改進后CP-ABE根據訪問用戶屬性生成私鑰的時間明顯降低,提高了私鑰生成效率。隨著訪問用戶及屬性數量的增加,本文方法有效儲存多源大數據文件密鑰體數據,節約存儲空間,增加多源大數據的安全訪問性能。能夠辨別惡意用戶訪問,維護大數據安全共享。