韓 剛,龐 龍,羅 維,王浩琛
(西安郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,陜西 西安 710121)
集中式計算通過基礎(chǔ)中央處理器向訪問者提供服務(wù),維護簡單,并且可直接與數(shù)據(jù)庫相連接,有效地保護了數(shù)據(jù)庫的安全[1]。但是,集中式儲存數(shù)據(jù)庫需求中央處理器性能較高,當(dāng)訪問者訪問數(shù)量過載時,可能會導(dǎo)致中央處理器響應(yīng)速度過慢或死機。隨著訪問者對于訪問速度需求的提高,集中式計算逐漸被分布式計算替代。分布式計算提供多個智能終端,主要為訪問者提供資源分配、云計算等服務(wù)[2],分散處理任務(wù)降低了處理器的任務(wù)量,訪問速度也有所提高,現(xiàn)已廣泛應(yīng)用在對響應(yīng)速度要求較高的智慧醫(yī)療、人工智能等領(lǐng)域[3]。
在分布式計算中,主機處理的大多是其內(nèi)部任務(wù),而加解密計算任務(wù)是由智能終端去完成[4],但各終端的安全防護較低,在網(wǎng)絡(luò)中往往存在一些安全問題,如面對分布式拒絕服務(wù)、局域網(wǎng)地址洪泛等攻擊方式[5]。在密文策略屬性基加密系統(tǒng)(Ciphertext Policy Attribute based Encryption,CP-ABE)加密過程中,面對訪問者屬性以及訪問者密鑰的更新對于各個終端的可管理性以及靈活性也要求較高[6]。在已有的相關(guān)研究中,儲存局域網(wǎng)(Storage Area Network,SAN)技術(shù)集中存儲方案雖然提高了存儲系統(tǒng)的資源利用率和系統(tǒng)擴展性,但在安全問題上仍然存在一定隱患[7]。隨著密碼學(xué)相關(guān)知識的提出,數(shù)據(jù)的安全性也得到了保證[8]。基于部分跨級和集中存儲模式的庫存配置與選址決策模型雖然提高了系統(tǒng)存儲的安全性,但系統(tǒng)性能還有待提高[9]。云存儲應(yīng)用中的加密存儲及其檢索技術(shù)對于數(shù)據(jù)實現(xiàn)了基本加密,提高了存儲信息的性能[10]?;诶窭嗜斩囗検讲逯捣ǖ拿荑€產(chǎn)生方案,利用拉格朗日插值法,實現(xiàn)了密鑰的分配管理,但對系統(tǒng)的性能要求較高[11]。基于對稱布爾函數(shù)算術(shù)也為數(shù)據(jù)的安全性提供了一定的保證[12]。減低系統(tǒng)性能需求、支持關(guān)鍵字的可搜索加密方案通過陷門關(guān)鍵字實現(xiàn)了一次雙線性對計算搜索關(guān)鍵字[13]。將CP-ABE用于加密,同時使用云計算外包服務(wù),加入訪問者屬性,可提高系統(tǒng)的安全性[14]。利用霧計算方法,將復(fù)雜的計算交給外包霧節(jié)點,提高了計算的高效性與可靠性[15]。在霧計算中設(shè)計訪問者和屬性可撤銷的方案,通過霧節(jié)點外包計算,降低中央服務(wù)器的性能需求,實現(xiàn)了屬性撤銷[16]。霧計算中細粒度屬性更新的外包計算訪問控制方案,給霧節(jié)點降低了訪問者加解密開銷[17]。利用云計算進行數(shù)據(jù)加密,將可搜索加密用于保存數(shù)據(jù),提高了保密性以及可用性[18]。然而,上述方案雖然解決了計算性能的需求問題,但在數(shù)據(jù)統(tǒng)一管理與安全性方面均存在一定的缺陷。
為解決上述問題,建立一種基于屬性更新的MSP數(shù)據(jù)訪問控制機制。構(gòu)建集中式計算與分布式計算相結(jié)合的網(wǎng)絡(luò)分布模式,通過區(qū)域處理器對于每一個區(qū)域的訪問者進行管理,且只能通過中央處理器訪問數(shù)據(jù)庫。同時,實現(xiàn)基于密文策略的CP-ABE加密,在訪問者端通過公鑰加密方式加密明文,發(fā)送至區(qū)域處理器,通過區(qū)域處理器對訪問者進行管理,建立組密鑰二叉樹所生成的組密鑰,對于密文進行重加密并發(fā)送至數(shù)據(jù)庫存儲。最后,通過區(qū)域處理器與區(qū)域授權(quán)中心(Apartment Authorization,AA)之間進行訪問者屬性組的信息的交互,實現(xiàn)更改訪問者屬性的更新與撤銷。
訪問控制樹用于隱藏源數(shù)據(jù)的加密密鑰。令根節(jié)點為r,建立訪問控制樹R。該訪問控制樹指定了在解密密文時需要的屬性組合,R樹中的每個內(nèi)部節(jié)點都是邏輯運算符,如“AND”“OR”。每個葉子節(jié)點表示一種屬性。屬性可以是定義、分類或注釋訪問者的任何描述性字符串。根據(jù)秘密共享的思想,訪問控制樹的每個節(jié)點表示一個秘密,在加密階段需要自頂而下為每個節(jié)點分配一個秘密。在解密階段則需自下而上回復(fù)根節(jié)點的秘密。
對于任意t-1次多項式[19]
y(x)=at-1xt-1+at-2xt-2+…+a1x+K
(1)
常數(shù)項K∈P[x]為需要保護的密鑰。如果存在y(xi)使得t個點xi都在y(xi)上,則可確定y(xi)的系數(shù)ai,0≤i≤t。令a0作為密鑰,使用兩個以上的密鑰片段Si,可產(chǎn)生公鑰KP=a0,若有n個密鑰片段,則可產(chǎn)生多個密鑰Ki。隨機選取r個密鑰片段(r≤n),即可產(chǎn)生密鑰總數(shù)為
故當(dāng)一個訪問者擁有r個密碼片段Si而非n個密鑰Ki時,等價于擁有A個密鑰。當(dāng)n>2時,根據(jù)拉格朗日插值多項式
其中:x為有限域p[x]中的整數(shù);kml為第m個密鑰片段在l域中的安全系數(shù);xml和xmj分別為在l域和j域中訪問者所對應(yīng)的第m個密鑰片段。若存在素數(shù)P∈P[x],且P的值大于n和K,引入模運算,多項式可表示為
其中,所選擇的素數(shù)P以及多項式f(x)均由AA管理。
令G1和G2為兩個素數(shù)階數(shù)為h的乘法循環(huán)群,且g為子群,若滿足以下兩種屬性,則映射e:G1×G1→G2為雙線性映射[20]。
1)雙線性。對于任意的w,v∈G1,a,b∈P[x],存在e(wa,vb)=e(w,v)ab。
2)非簡并性。G1中存在子群g0,使得e(g0,g0)≠1成立,且滿足
e(wa,vb)=e(w,v)ab-e(wb,va)。
決策雙線性Diffie-Hellman[21](Decision Bilinear Diffie-Hellman,DBDH)問題的定義為挑戰(zhàn)者根據(jù)安全參數(shù)選擇一組階為素數(shù)P的G1。將g作為生成元,選取隨機數(shù)a,b,s,∈P[x],假設(shè)挑戰(zhàn)者已知(g,ga,gb,gs),則有效元組e(g,g)abs∈G1。即對于挑戰(zhàn)者而言,很難區(qū)分有效元組e(g,g)abs∈G1與密鑰K∈G1。
以優(yōu)勢Q解決DBDH問題,即滿足
{Pr[(g,ga,gb,gs,e(g,g)abs)=0]-
Pr[B(g,ga,gb,gs,K)=0]}≥Q
若優(yōu)勢Q可忽略不計,則DBDH問題假設(shè)成立,即挑戰(zhàn)者無法區(qū)分有效元組和密鑰。
MSP數(shù)據(jù)訪問控制機制主要由云服務(wù)商(Cloud Service Provider,CSP)、中間服務(wù)商(Middle Service Provider,MSP)、中央權(quán)威機構(gòu)(Center Authority,CA)、屬性授權(quán)機構(gòu)(Property Authority,PA)、數(shù)據(jù)擁有者(Data Ower,DO)和數(shù)據(jù)訪問者(Data User,DU)等6部分組成。將一個大區(qū)域分散為若干個小區(qū)域,并對每個小區(qū)域分配區(qū)域處理器,區(qū)域處理器負責(zé)控制管理每一個區(qū)域中的訪問者集合。機制模型如圖1所示。
圖1 機制模型
CSP主要負責(zé)存儲擁有者所上傳的信息,實現(xiàn)數(shù)據(jù)的集中化存儲,假設(shè)CSP為半可信機構(gòu)。MSP負責(zé)建立訪問控制樹,CSP與數(shù)據(jù)訪問者通過MSP建立信息交互通道,同時完成信息的重加密解密,同樣假設(shè)MSP為半可信機構(gòu)。CA是在機制中完全受信任的一方,統(tǒng)一發(fā)放機制中的密鑰與主密鑰。PA通過CA所發(fā)放的密鑰以及訪問者的屬性集產(chǎn)生的私鑰,并負責(zé)私鑰的分發(fā)與撤銷。DO一般將自身已加密的信息,通過MSP重加密,再上傳至CSP完成存儲。DU向MSP發(fā)送訪問請求,并且符合身份認證之后,才能獲得存儲在CSP的擁有者的密文信息。
MSP數(shù)據(jù)訪問控制機制結(jié)構(gòu)分為機制初始化、密鑰生成、數(shù)據(jù)加密、組密鑰生成、密文重加密、私鑰更新和密文解密等7個過程。
1)初始化Setup(1k,L)→KP,KTS。將安全系數(shù)k與屬性集合L作為參數(shù),進而獲得整個機制的公鑰KP與主密鑰KTS。
2)密鑰生成AAkeyGen(KTS,u)→KS。通過輸入主密鑰KTS以及訪問者所擁有的屬性u,u∈L,計算出私鑰KS并發(fā)給訪問者。
3)數(shù)據(jù)加密。數(shù)據(jù)擁有者發(fā)送數(shù)據(jù)之前,通過隨機密鑰KC結(jié)合訪問控制數(shù)R對信息M進行加密,之后由MSP運用加密算法結(jié)合隨機密鑰KC進行秘密共享加密,共分為兩個子算法,即DO在本地運行DO.encrypt和MSP在服務(wù)器端運行MSP.encrypt。
DO.encrypt(KP,KC,M)→C1。將公鑰KP、隨機向量v、信息M以及隨機密鑰KC作為輸入通過秘密共享算法加密,輸出密文C1并發(fā)送給MSP。
MSP.encrypt(R,KP,C1)→C。將公鑰KP訪問控制樹R作為輸入,得到加密之后的密文C,建立與訪問者之間的數(shù)據(jù)通道。
4)組密鑰生成GkeyGen(KTS,u)。將主密鑰KTS與屬性u作為輸入,通過拉格朗日插值法迭代,建立二叉樹得到組密鑰KGb,1≤b≤u。
5)重加密reEncrypt(KGb,C)→Cr。MSP接受到訪問者發(fā)送的密文C之后,結(jié)合生成的組密鑰KGb進行加密運算,得到密文C2,再通過數(shù)據(jù)加密標(biāo)準(Data Encryption Standard,DES)加密,得到重加密密文Cr。
數(shù)據(jù)傳輸過程中大多數(shù)機制無法實現(xiàn)訪問者信息的統(tǒng)一管理及加密,因此,在CSP與訪問者之間建立數(shù)據(jù)訪問控制模型,如圖2所示。
圖2中,首先,通過MSP在數(shù)據(jù)訪問者與CSP之間建立數(shù)據(jù)訪問通道,以實現(xiàn)對訪問者數(shù)據(jù)的統(tǒng)一管理。其次,利用MSP建立訪問控制樹,采用拉格朗日插值法迭代,形成具有訪問者屬性的訪問控制樹。最后,通過組密鑰的更新實現(xiàn)訪問者屬性的撤銷與更新。
令G1和G2為兩個以P為模數(shù)的可循環(huán)乘積群,g可生成循環(huán)群G,則產(chǎn)生T:{0,1}*→G1和T1:G2→P[x]兩種定義。
CA選擇一組隨機元素{z0,z1,z2,…,zn}∈G1,選取訪問者所對應(yīng)的zu,并授予信任屬性φ(u),生成公鑰KP={e(g,g)z0,z1,z2,…,zn∈G1,φ(u)}。選取隨機參數(shù)q∈P[x],結(jié)合屬性集合L,生成主密鑰KTS=(gq,L)。
由區(qū)域授權(quán)中心AA運行私鑰生成。以主密鑰KTS與訪問者屬性u作為輸入,同時DO生成隨機向量v,選取隨機數(shù)r,ε∈P[x],選取r1,r2使得r1和r2在模r上同余,將r作為訪問者所分配的隨機密鑰,則私鑰為
KS={gε,gεr,gr1+r2,gv},r1(modr)=r2(modr)
數(shù)據(jù)加密分為兩個階段。
階段1DO向MSP傳輸數(shù)據(jù)之前,先進行一次加密,即DO.encrypt。將訪問者數(shù)據(jù)上傳至MSP之前,訪問控制樹R、公鑰KP和KS關(guān)聯(lián)的雙線性秘密共享方案為(S,T)。將信息M作為參數(shù)輸入,DO輸出密文
C1={(S,T),Me(g,g)z0S,gS,gz0S,gqv}
階段2MSP在收到訪問者數(shù)據(jù)后,結(jié)合屬性集合L,建立訪問控制樹R,如圖3所示。
圖3 訪問控制樹
選取隨機參數(shù)P∈P[x],根據(jù)式(1),結(jié)合訪問者的屬性u,生成根節(jié)點的多項式為
E(x)=a1xn+a2xn-1+…+u(modP)
(2)
給根節(jié)點賦值B,求解式(2),得到子節(jié)點的值,其他未賦值的子節(jié)點采用迭代方法為其賦值。若子結(jié)點處的運算符為AND,計算不同子節(jié)點的值,其代表訪問者所擁有的屬性秘密值。若子結(jié)點處的運算符為OR,使子節(jié)點的值對應(yīng)的屬性符合訪問控制樹,且滿足訪問者的屬性集合。
根據(jù)訪問控制二叉樹的建立,每個訪問者節(jié)點值均由MSP計算生成。每個子節(jié)點的屬性標(biāo)識符屬于二叉樹每層生成的屬性標(biāo)識符,從葉子節(jié)點到根節(jié)點通過的節(jié)點為路徑節(jié)點,在每個路徑節(jié)點處存儲該節(jié)點的密鑰,且定義一個屬性公開參數(shù)δi∈P[x],根據(jù)訪問者所對應(yīng)的屬性組,找到含有訪問者組屬性得覆蓋子樹,從而建立組密鑰KGb=(ω1,ω2,…,ωb),b為用戶的屬性個數(shù),通過設(shè)置(S,2)秘密共享方案,采用拉格朗日插值法計算KGb。屬性組密鑰二叉樹如圖4所示。
圖4 屬性組密鑰二叉樹
假設(shè)訪問者組屬性為(u11,u21,u33),則在二叉樹所對應(yīng)的節(jié)點為[ω21,ω33],生成的組密鑰為KGb=[ω21,ω33‖δ1],由此得到密文
C2={(S,T),Me(g,g)z0S,gS,gz0S,gqvKGb}
MSP接收到由DU發(fā)送過來的C2,對C2進行DES對稱加密實現(xiàn)密文的重加密,則輸出的重加密密文為
Cr=E(C2⊕v)
其中,E(·)表示DES對稱加密。
當(dāng)MSP收到DU所發(fā)送的請求時,根據(jù)MSP的組密鑰二叉樹規(guī)則,將新建節(jié)點所經(jīng)過的層數(shù)發(fā)送給訪問者。設(shè)所建立二叉樹的秘密共享方案為(S,2),因此只需要知道兩個部分即可推算出組密鑰KGb,由于δ是公開參數(shù),所以只要訪問者的屬性屬于該屬性組的子集,則可計算KGb。DU利用KGb計算更新之后的私鑰為
DU發(fā)送請求之后,CSP返回密文,并進行解密,數(shù)據(jù)加解密過程如圖5所示。
圖5 數(shù)據(jù)加解密過程
DU結(jié)合密文C2,得到明文
所提機制與文獻[4]、文獻[6]和文獻[7]等4種方案的計算開銷對比如表1所示。表1中:c表示在G1群中的一次冪運算;d表示在G2群中的一次冪運算;e表示一次雙線性運算;ρ為密文被加密算法的時間復(fù)雜度;×表示沒有進行該運算。一般在構(gòu)造具有雙線性對算法時,采取的嵌入次數(shù)為2或者3,此時的ξ遠大于c和d,k>1可認為在一次加密過程中,數(shù)據(jù)加密時間復(fù)雜度遠大于屬性更新。
表1 不同方案的計算開銷對比
文獻[4]方案在運算的過程中,加密方式采取同態(tài)加密算法,該機制使用兩個不同的多項表達式,故加密算法所需要的時間復(fù)雜度為O(ρ2),遠高于所提機制采用雙線性映射的時間復(fù)雜度,并且缺乏屬性更新功能,系統(tǒng)整體的可使用性不強。文獻[6]方案在運算過程中其外包加密以及解密的過程外包給了霧節(jié)點,利用隨機數(shù)以及訪問者秘密數(shù)進行加解密,且不涉及屬性更新,因此并不需要進行過多的線性計算,故外包加密與解密的復(fù)雜度較小,但由于數(shù)據(jù)擁有者需要對于數(shù)據(jù)進行Owner.Enc算法,因此所需要的時間復(fù)雜度較高為O(ρlogρ),較時間復(fù)雜度來說,所提機制更具有優(yōu)勢。文獻[7]方案在外包加密步驟分為兩個階段,需要從屬性機構(gòu)執(zhí)行加密并進行兩次訪問控制樹的遞歸遍歷,保證數(shù)據(jù)的安全性以及訪問者身份的訪問控制,運算復(fù)雜度高,故對于外包加密解密的時間復(fù)雜度上來說,所提機制也具有較大的優(yōu)勢。
從理論分析結(jié)果來看,所提機制與其他3種方案在數(shù)據(jù)加解密的時間消耗方面不同,所提機制只進行了一次控制樹的遍歷,在外包計算方面的效率具有較大優(yōu)勢,且在外包加密上建立訪問控制樹結(jié)合屬性加密又保證了數(shù)據(jù)的安全性。
在charm-crypto框架內(nèi)進行仿真實驗,使用英特爾i5-8250U 1.80 GHz處理器,8 GB內(nèi)存,搭配環(huán)境為Ubuntu 18.04.1,64位系統(tǒng)與Python3.9。將所提機制與其他3種方案分別從加解密時間和外包加解密時間兩個方面進行對比分析,結(jié)果分別如圖6和圖7所示。實驗所有結(jié)果均是10次結(jié)果的平均值。
圖6 不同方案訪問者加解密時間對比
圖7 不同方案外包加解密時間對比
由圖6可以看出,所提機制與其他3種方案的加解密時間不同。由于文獻[4]方案沒有外包加解密機制,故加解密隨著訪問者個數(shù)的增加其上升速度遠大于其他3種方案。文獻[6]方案與文獻[7]方案在加密的時間消耗較大,而所提機制的加解密時間消耗最小,具有一定的優(yōu)越性。所提機制將復(fù)雜的計算外包出去,提高了訪問者加密效率,且加密的時間基本恒定。
由圖7可以看出,隨著屬性數(shù)量的增加,所提機制與文獻[6]方案、文獻[7]方案的時間消耗均會呈線性增長的趨勢,故外包加密的時間也會隨屬性個數(shù)的增加變長。圖7(a)中,所提機制產(chǎn)生的時間消耗較小,這是因為采用門限法生成密鑰在密文的重加密階段減少了大量的損耗。圖7(b)中,所提機制使用MSP控制整個區(qū)域,在解密過程中消耗的資源較少,故所提機制在外包加解密時效率更高。
基于屬性更新的MSP數(shù)據(jù)訪問控制機制使用MSP控制并管理一個區(qū)域的數(shù)據(jù)信息,同時進行加密及解密處理,在保證需求的前提下完成屬性更新,確保了數(shù)據(jù)的安全性。理論分析與仿真實驗結(jié)果表明,當(dāng)訪問者的屬性個數(shù)較大時,在該機制下進行信息加解密的時間開銷較小,加解密效率高,同時,在外包加密上建立訪問控制樹結(jié)合屬性加密又保證了數(shù)據(jù)的安全性。