劉紅超, ,,,
(1.北京許繼電氣有限公司,北京 100085; 2.國家電網(wǎng)公司,北京 100085; 3.武漢大學(xué) 計算機(jī)學(xué)院,武漢 430074)
近年來,隨著互聯(lián)網(wǎng)大數(shù)據(jù)的爆發(fā),數(shù)字化信息快速滲入到各行各業(yè),由此產(chǎn)生的海量數(shù)據(jù)存儲方式由傳統(tǒng)的基于文件轉(zhuǎn)換為電子信息數(shù)據(jù)庫,例如PostgreSQL[1-2],一個自由的對象-關(guān)系數(shù)據(jù)庫管理系統(tǒng),為用戶提供隨時隨地利用互聯(lián)網(wǎng)訪問數(shù)據(jù)的便捷服務(wù),帶來方便的同時也引起了很大的安全問題。首先由于大量的數(shù)據(jù)集中存儲在同一個存儲系統(tǒng)中,如何保證不同用戶的數(shù)據(jù)隔離是一個重要問題。其次數(shù)據(jù)存儲的集中性很可能受到黑客針對數(shù)據(jù)的集中攻擊。另外還存在數(shù)據(jù)庫管理員(Database Administrator,DBA)與攻擊者合謀惡意竊取內(nèi)容。一旦用戶的隱私數(shù)據(jù)得不到保護(hù)將會帶來嚴(yán)重的后果,面對嚴(yán)峻的數(shù)據(jù)泄密的形勢,傳統(tǒng)的信息安全措施難以應(yīng)對,加強(qiáng)數(shù)據(jù)自身安全迫在眉睫。
目前針對數(shù)據(jù)庫中隱私數(shù)據(jù)的保護(hù)得到了諸多學(xué)者的重視,在密文數(shù)據(jù)下的訪問控制研究取得了很多重要的成就。這些成果均是圍繞如何高效地管理數(shù)據(jù)和密鑰安全分發(fā)進(jìn)行展開,說明密文數(shù)據(jù)訪問授權(quán)的本質(zhì)為密鑰的管理和分發(fā)。有學(xué)者專門針對組密鑰的管理進(jìn)行大量的研究[3-5],其中邏輯密鑰層次(Logical Key Hierarchy,LKH)以其的高效性被廣泛使用,是基于密鑰樹的方法進(jìn)行密鑰關(guān)系的構(gòu)造,采用對稱密鑰來對新的密鑰加密。在其基礎(chǔ)提出了基于高效的大規(guī)模用戶組密鑰(Efficient Large-group Key,ELK)[6]的新協(xié)議,但是當(dāng)有用戶頻繁加入或離開時該方法不能有效地對密鑰進(jìn)行管理。針對這一情況,學(xué)者們提出了基于子用戶組的層次框架[7],選擇將大的用戶組分為小的子用戶組并安排管理人員掌握該小組的密鑰,但是該方法數(shù)據(jù)訪問效率很低。在訪問控制研究領(lǐng)域,基于屬性加密(Attribute-based Encryption,ABE)[8]的訪問控制模型被提出,不同于傳統(tǒng)的公鑰加密系統(tǒng),該方法是對錯誤有容忍度的訪問控制模型。其主要缺點(diǎn)是其閾值語義表達(dá)力不足導(dǎo)致其無法設(shè)計出通用的密文訪問控制系統(tǒng)。在此基礎(chǔ)上出現(xiàn)了新的加密系統(tǒng),采用基于密鑰策略屬性的加密(Key-Policy Attribute-based Encryption,KP-ABE)[9]方法,該系統(tǒng)中密文數(shù)據(jù)加密基于屬性的集合,但是數(shù)據(jù)加密者并沒有運(yùn)用任何訪問控制策略在密文數(shù)據(jù)上。
盡管很多學(xué)者針對數(shù)據(jù)加密和密文數(shù)據(jù)下的訪問控制做了大量工作,但仍存在一些問題,目前還沒有較好的方法對密文數(shù)據(jù)進(jìn)行輕量級、細(xì)粒度的訪問控制方法[10],為此,本文提出一種基于密文的訪問控制框架,以實現(xiàn)細(xì)粒度輕量級的密文訪問控制。
本文針對PostgreSQL數(shù)據(jù)庫系統(tǒng)可能出現(xiàn)的隱私數(shù)據(jù)泄密問題,提出新的訪問控制模型,并將該方法應(yīng)用到圖1所示的訪問控制場景中。
圖1 數(shù)據(jù)訪問控制場景
數(shù)據(jù)擁有者先將數(shù)據(jù)本地加密后上傳至PostgreSQL,然后針對其所屬的密文數(shù)據(jù)進(jìn)行訪問授權(quán),授權(quán)過程本質(zhì)就是密鑰分發(fā)的過程,數(shù)據(jù)擁有者期望有細(xì)粒度的訪問授權(quán),但不增加密鑰的管理負(fù)擔(dān),在數(shù)據(jù)撤銷時要能高效地完成授權(quán)撤銷。
基于實際需求,本文要解決的問題是提出一套機(jī)制保證數(shù)據(jù)安全而且擁有者能靈活對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行授權(quán),共享者也能便捷高效地訪問數(shù)據(jù)。
文獻(xiàn)[11]提出了一種新的加密方式AONT,經(jīng)過該模式加密的數(shù)據(jù)要想獲取某些明文必須要對整個數(shù)據(jù)進(jìn)行完整解密,否則無法獲知。
該方法主要包括:
1)針對原始數(shù)據(jù)m1,m2,…,ms,首先利用轉(zhuǎn)換函數(shù)f獲得偽數(shù)據(jù)信息m1’,m2’,…,ms’,s’≥s,其中轉(zhuǎn)換函數(shù)f滿足:可逆性;可計算性;不可部分分解,無法通過部分偽裝數(shù)據(jù)推導(dǎo)出明文。
2)利用傳統(tǒng)對稱加密算法對上述結(jié)果進(jìn)行數(shù)據(jù)加密得到密文c1,c2,…,ct。
下面給出轉(zhuǎn)換函數(shù)過程:
輸入m1,m2,…,ms,K0
輸出m1’,m2’,…,ms’,s’=s+1
1)生成隨機(jī)密鑰K’。
2)計算:
mi’=mi?E(K’,i),i=1,2,…,s
(1)
3)計算:
ms’’=K’?h1?h2?…?hs
(2)
hi=E(K0,mi’?i),i=1,2,…,s
(3)
其中,K0是公開密鑰,K’是每次加密隨機(jī)生成的,通過式(4)計算:
K’=ms’?h1?h2?…?hs
(4)
轉(zhuǎn)換后的數(shù)據(jù)還原為原始密文通過式(5)實現(xiàn):
mi=mi’?E(K’,i),i=1,2,…,s
(5)
上述方法是針對數(shù)據(jù)塊進(jìn)行的,所以,要先對數(shù)據(jù)分塊,過程的本質(zhì)只是對數(shù)據(jù)進(jìn)行預(yù)處理。
在代理重加密[12-14]的基礎(chǔ)上,根據(jù)需求不斷改進(jìn),文獻(xiàn)[15]提出基于對稱密鑰重加密方法,先采用AONT對數(shù)據(jù)預(yù)處理后,使用傳統(tǒng)對稱加密算法進(jìn)行加密。數(shù)據(jù)擁有者隨機(jī)生成初始b字節(jié)密鑰K1、K2、K3、Kx對數(shù)據(jù)m加密。再利用AONT技術(shù)處理原始密文。利用PGen(K1,b)置換密鑰生成函數(shù)生成置換密鑰P1、P2、P3。對預(yù)處理后數(shù)據(jù)利用P3和Perm函數(shù)進(jìn)行置換。重加密過程將原始密鑰轉(zhuǎn)化為K1’、K2’、K3’、Kx’重加密密鑰后對密文數(shù)據(jù)重新加密。
本文提出了一種輕量級細(xì)粒度的訪問控制方法,并在此基礎(chǔ)上給出優(yōu)化方法。
本文在介紹基于密文的訪問控制方法時采用統(tǒng)一的符號,表1為使用的符號及其意義。
表1 全文符號及意義
輕量級細(xì)粒度的訪問控制方法的設(shè)計思想如下:
1)數(shù)據(jù)上傳存儲,數(shù)據(jù)擁有者在本地將數(shù)據(jù)進(jìn)行加密,將加密后的密文上傳至PostgreSQL。
2)數(shù)據(jù)授權(quán),當(dāng)數(shù)據(jù)擁有據(jù)者對數(shù)據(jù)進(jìn)行授權(quán)時,先對將要授權(quán)的數(shù)據(jù)生成鏡像,pkdmi并為之生成相應(yīng)的公私鑰對(pkdmi,skdmi),計算該數(shù)據(jù)與鏡像之間的代理重加密密鑰rski,并將重加密密鑰rski存儲在數(shù)據(jù)庫中。針對被授權(quán)的用戶或用戶組進(jìn)行權(quán)限的劃分,并構(gòu)建權(quán)限控制節(jié)點(diǎn),在權(quán)限控制層利用數(shù)據(jù)授權(quán)者和被授權(quán)者之間的會話密鑰pubUj將私鑰skdmi加密得到skdmi′,將其存儲于權(quán)限控制節(jié)點(diǎn)。
3)數(shù)據(jù)訪問,當(dāng)用戶提出訪問數(shù)據(jù)的請求后,PostgreSQL先判斷用戶對于該數(shù)據(jù)是否有權(quán)限訪問,若有,則用重加密密鑰對密文進(jìn)行二次加密得到新的密文,連同數(shù)據(jù)授權(quán)過程中的私鑰skdmi′返回給請求者,被授權(quán)者利用會話密鑰先對私鑰skdmi′進(jìn)行解密得到skdmi,再用解密后的密鑰對密文解密。
4)數(shù)據(jù)撤銷,當(dāng)數(shù)據(jù)擁有者想撤銷某些用戶對數(shù)據(jù)的訪問權(quán)限時,直接通過調(diào)整鏡像以及權(quán)限控制節(jié)點(diǎn)值來只想權(quán)限的收回。
在整個過程中,通過構(gòu)建數(shù)據(jù)鏡像層和權(quán)限控制層,能有效實現(xiàn)無副本數(shù)據(jù)訪問共享,并確保數(shù)據(jù)加密密鑰的安全性,能在多個方面防止了隱私數(shù)據(jù)防泄密。具體的密文訪問控制層次結(jié)構(gòu)如圖2所示。
基于公鑰系統(tǒng)的訪問控制方法采用的加密技術(shù)是RSA加密算法,RSA算法是目前最具影響力的公鑰加密算法,可以抵抗密碼攻擊。本文采用RSA算法對隱私數(shù)據(jù)進(jìn)行初次加密和會話密鑰加密。
3.3.1 數(shù)據(jù)上傳發(fā)布
每一個用戶都擁有一個公私鑰對,在用戶前端安全存儲,數(shù)據(jù)加密后將密文存上傳至PosrgreSQL。已知待上傳至PosrgreSQL的數(shù)據(jù)集合以及公鑰pub,完成用戶前端加密,具體過程如下:
1)從大小為|M|的待上傳的明文數(shù)據(jù)集M中依次選取元素i=1,2,…,|M|。
2)采用公鑰加密算法對數(shù)據(jù)mi進(jìn)行加密ci=E(pub,mi)。
3)將加密后的密文集合C上傳至數(shù)據(jù)庫。
4)數(shù)據(jù)庫管理層根據(jù)權(quán)限控制集,即針對當(dāng)前數(shù)據(jù)用戶訪問權(quán)限表,構(gòu)建初始權(quán)限控制層。如果權(quán)限訪問表非空則創(chuàng)建權(quán)限控制表中對應(yīng)的權(quán)限控制節(jié)點(diǎn)。
3.3.2 數(shù)據(jù)授權(quán)
當(dāng)密文成功上傳至PostgreSQL后,數(shù)據(jù)擁有者可能需要將數(shù)據(jù)授權(quán)給不同的用戶,最主要的問題就是如何針對不同用戶分發(fā)不同的密鑰,同時也要考慮PostgreSQL和不被授權(quán)用戶的合謀攻擊。因此,在數(shù)據(jù)授權(quán)時通過數(shù)據(jù)鏡像層將數(shù)據(jù)的存儲與訪問分開,從而保證數(shù)據(jù)庫中數(shù)據(jù)的安全性,為了不引入副本,該方法中采用代理重加密的機(jī)制,對首次加密后的密文進(jìn)行二次加密,其中,通過會話密鑰將重加密過程中用到的私鑰進(jìn)行加密保護(hù)原始密鑰的不可訪問性,用鏡像點(diǎn)的私鑰分發(fā)來完成數(shù)據(jù)訪問權(quán)限的控制。
為了完成數(shù)據(jù)二次加密,系統(tǒng)為每一個數(shù)據(jù)的鏡像點(diǎn)分配相應(yīng)的公私鑰對(pkdmi,skdmi),密文ci與鏡像點(diǎn)之間的代理重加密的密鑰通過式(6)計算:
rski=(pub/pkdmi) mod Ф(n)
(6)
其中,n為RSA加密系統(tǒng)中的公共參數(shù)。
通過式(6)的計算實現(xiàn)了解密密鑰由pri向密鑰skdmi的轉(zhuǎn)換,對原始密鑰完成了安全的隔離。要將解密密鑰安全可靠地分發(fā)給被授權(quán)的用戶,需要將skdmi封裝,在此采用會話密鑰的方式對其進(jìn)行加密,就是用Uj的公鑰對其加密,并將密鑰密文存儲在控制訪問層的節(jié)點(diǎn)中,通過數(shù)據(jù)擁有者的權(quán)限控制可以完成授權(quán)訪問和權(quán)限的收回。引用權(quán)限控制層就是為了能夠方便靈活地進(jìn)行權(quán)限管理。
上述機(jī)制中授權(quán)者只是需要在本地完成重加密密鑰rski的計算再將rski上傳給PostgreSQL,讓其完成重加密的過程,大大減少用戶前端的計算成本。對于鏡像點(diǎn)的公私鑰對只是在數(shù)據(jù)授權(quán)時被調(diào)用,一旦完成了重加密密鑰的計算用戶就不需要占用存儲空間繼續(xù)保存該鏡像的公私鑰對,釋放占用的存儲空間,若有新的授權(quán)需要完成時,只要再次生成新的密鑰對即可,重新計算重加密密鑰。針對整個數(shù)據(jù)授權(quán)的過程算法實現(xiàn),已知需要授權(quán)的數(shù)據(jù)DM、被授權(quán)的用戶集合U、訪問控制表,構(gòu)建密文訪問控制結(jié)構(gòu)具體步驟如下:
1)依次選取i=1,2,…,|DC|。
2)待授權(quán)的數(shù)據(jù)dmi生成相應(yīng)的鏡像點(diǎn)Mirrdmi。
3)為鏡像點(diǎn)生成相應(yīng)的公私鑰對(pkdmi,skdmi)。
4)根據(jù)鏡像點(diǎn)公私鑰對、授權(quán)用戶的(pri,pub)和式(6)在本地算出重加密密鑰rski。
5)將rski上傳至數(shù)據(jù)庫。
6)針對用戶集合里的所有元素對每一個待授權(quán)用戶做如下操作。
7)如果用戶Uj對數(shù)據(jù)dmi由訪問權(quán)限。利用會話密鑰pubUj對鏡像私鑰skdmi進(jìn)行加密得到skdmi′。
8)將skdmi′存儲在與Uj對應(yīng)的權(quán)限控制節(jié)點(diǎn)中。
過程中凡是涉及到密鑰之間的計算都是在用戶前端完成,以保證半可信的第三方PostgreSQL難以獲得任何關(guān)于數(shù)據(jù)加密的密鑰內(nèi)容。
3.3.3 數(shù)據(jù)訪問
當(dāng)構(gòu)建出一個基于鏡像的數(shù)據(jù)訪問控制結(jié)構(gòu)后存儲在PostgreSQL中,當(dāng)用戶Uj期望對某個數(shù)據(jù)進(jìn)行訪問時,不需要和數(shù)據(jù)擁有者進(jìn)行任何操作,只需要利用在注冊時分配的公私鑰即可訪問期望的數(shù)據(jù)。該方法中對于數(shù)據(jù)擁有者是完全透明的,這一特點(diǎn)保證了授權(quán)用戶對數(shù)據(jù)擁有者的透明性,由于被授權(quán)用戶只是掌握一個密鑰,因此在解密時不必刻意針對不同數(shù)據(jù)進(jìn)行密鑰選擇,真正意義上實現(xiàn)了一個用戶一個密鑰的機(jī)制。給出用戶信息和用戶Uj對應(yīng)的私鑰prij用戶訪問控制權(quán)限結(jié)構(gòu),待訪問的密文數(shù)據(jù)集合DC要找出用戶要訪問的明文數(shù)據(jù)集的具體步驟如下:
1)依次選取i=1,2,…,|DC|。
2)對于ci判斷在用戶訪問控制權(quán)限結(jié)構(gòu)中是否有對應(yīng)的鏡像點(diǎn)。
3)如果ci有對應(yīng)的鏡像點(diǎn),那么判斷該鏡像點(diǎn)下的權(quán)限控制節(jié)點(diǎn)是否存在用戶Uj的相關(guān)信息。
4)如果存在用戶Uj的相關(guān)信息,那么獲取密文ci與鏡像點(diǎn)之間的代理重加密的密鑰rski。
5)使用上述重加密密鑰對密文ci進(jìn)行重加密得到ci?!?/p>
6)獲得相應(yīng)權(quán)限控制節(jié)點(diǎn)中用戶Uj對應(yīng)的密鑰密文skdmi′。
7)將數(shù)據(jù)ci′和skdmi′返回給用戶Uj。
8)若不存在用戶Uj的相關(guān)信息,則用戶Uj屬于該權(quán)限控制節(jié)點(diǎn)但是沒有訪問權(quán)限。
9)若ci沒有對應(yīng)的鏡像點(diǎn),則數(shù)據(jù)ci沒有授權(quán)進(jìn)行,拒絕一切用戶對該數(shù)據(jù)信息的訪問請求。
10)當(dāng)用戶Uj收到返回的重加密后的密文后。用自己的私鑰prij解密返回的密鑰skdmi′得到skdmi。
11)利用skdmi對密文ci′進(jìn)行解密得到mi。
雖然從密文ci′到明文需要經(jīng)過兩次解密過程,但是在被授權(quán)用戶前端只需要進(jìn)行一次解密過程,是由于代理重加密的特點(diǎn),使得Uj只需要用自己的私鑰就可以直接解密出明文。
本文提供了一套基本的隱私數(shù)據(jù)防泄密的方法,但是在整個過程中還存在一些問題。首先系統(tǒng)需要對每次請求訪問的數(shù)據(jù)完成一次重加密的過程,而公鑰體系對數(shù)據(jù)加密是低效的,因此,是一個低效的數(shù)據(jù)操作過程。其次在該機(jī)制中針對同一數(shù)據(jù)文件的多用戶授權(quán),系統(tǒng)要計算多次的密鑰密文并存在控制節(jié)點(diǎn)中,這樣針對被授權(quán)用戶組的一次授權(quán)需要多次加密過程,這樣消耗大量的資源成本。所以,在會采用基于對稱密鑰對數(shù)據(jù)進(jìn)行加密,其效率相較于前文的RSA提高很多。
目前有很多較為成熟的對稱加密技術(shù),但是應(yīng)用到重加密的算法中難以進(jìn)行,本文采用基于AONT預(yù)處理的對稱密鑰重加密算法對加密算法進(jìn)行優(yōu)化。
3.4.1 前端加密算法的優(yōu)化
由于優(yōu)化方法是采用對稱密鑰,因此授權(quán)者初始分配的密鑰不再是公私鑰對(pub,pri)而是對稱密鑰key,對于明文數(shù)據(jù)的初次加密相對于3.3節(jié)中的加密算法對參數(shù)做了更改,基于ATON的對稱密鑰加密算法大大提高了加密的效率。
3.4.2 重加密過程優(yōu)化
在前文的基于鏡像點(diǎn)的重加密過程中,在每次數(shù)據(jù)訪問過程中都要做一次代理重加密過程,不論是基于公鑰還是對稱密鑰都是十分耗時的,因此,為了提高每次數(shù)據(jù)訪問的效率,通過增加一個數(shù)據(jù)副本,此處的副本不是傳統(tǒng)的數(shù)據(jù)副本,它只是存在于數(shù)據(jù)鏡像層,即面向權(quán)限控制層的一個數(shù)據(jù)鏡像。這樣當(dāng)被授權(quán)用戶請求訪問時,只需要將當(dāng)前的數(shù)據(jù)副本及相應(yīng)的密鑰發(fā)送給訪問用戶。盡管每次數(shù)據(jù)授權(quán)時會增加額外的空間時間消耗,但是對于整個系統(tǒng),訪問次數(shù)遠(yuǎn)遠(yuǎn)大于數(shù)據(jù)授權(quán)的次數(shù),因此,該優(yōu)化能大大提升整個系統(tǒng)的效率。具體加密和重加密過程如下:已知數(shù)據(jù)擁有者要上傳給PostgreSQL的數(shù)據(jù)信息集合M,對稱密鑰key=(K1,K2,K3,Kx),對稱加密密鑰key′=(K1′,K2′,K3′,Kx′),通過具體的加密和重加密算法得到密文數(shù)據(jù)集C,以及數(shù)據(jù)ci重加密后的數(shù)據(jù)副本Dupci。加密和重加密算法的步驟如下:
1)若進(jìn)行數(shù)據(jù)加密,則依次選取要上傳的數(shù)據(jù)集合中|M|個元素i=1,2,…,|M|。
2)對mi進(jìn)行數(shù)據(jù)等分,分為s段。
3)利用AONT轉(zhuǎn)換算法計算mi中每一段數(shù)據(jù)mij。
5)利用K1、K2、K3生成相應(yīng)的P1、P2、P3。
6)利用Tdi′ =Perm(P3,Tdi)對數(shù)據(jù)進(jìn)行置換。
8)依次選取j=2,3,…,s,計算:
9)得到密文數(shù)據(jù)集并上傳至數(shù)據(jù)庫。
10)如果進(jìn)行數(shù)據(jù)重加密,那么針對得到的待加密數(shù)據(jù)集進(jìn)行重加密,使得重加密后key′=(K1′,K2′,K3′,Kx′)可計算。
11)針對于每個要重加密的數(shù)據(jù)依次選取i=1,2,…,|DM|。通過函數(shù)FindCK計算從K1和K3到K1′,K3′的轉(zhuǎn)換密鑰:
CK1=FindCK(PGen(K1,b),PGen(K1′,b))
CK3=FindCK(PGen(K3,b),PGen(K3′,b))
得到重加密密鑰:
rsk=(CK1,CK3,Kx,Kx′,K2,K2′)
12)利用K2和K2′分別計算P2和P2′。
13)選取變量j=2,3,…,s,計算:
15)在Tdi′上進(jìn)行Perm(CK3,Tdi′)變換。
16)當(dāng)j取值為1時,變換方法為:
17)依次賦值變量j=2,3,…,s,計算公式如下:
通過上述過程可以得到,基于AONT變換加密算法的數(shù)據(jù)密文以及重加密密文數(shù)據(jù)副本Dupci。最終密文可以通過K1′、K2′、K3′實現(xiàn)解密。
安全性分析如下:
1)數(shù)據(jù)安全性:數(shù)據(jù)在可信前端進(jìn)行數(shù)據(jù)加解密,因此,不論數(shù)據(jù)在上傳至數(shù)據(jù)庫還是在數(shù)據(jù)庫中的存儲都是以密文的形式出現(xiàn),方法中選擇的加密算法的安全性保證了數(shù)據(jù)在傳輸以及存儲過程中的安全性。
2)重加密的安全性:對于每一個密文數(shù)據(jù)在利用重加密密鑰加密后得到的新的密文數(shù)據(jù)副本過程中,由于重加密密鑰是數(shù)據(jù)授權(quán)者在本地計算得出后上傳給PostgreSQL,因此在數(shù)據(jù)庫中完全得不到任何關(guān)于密鑰的信息,因密鑰生成的單向性,無法由新的密鑰推導(dǎo)出之前的加密密鑰,所以重加密過程中并不會涉及到數(shù)據(jù)的明文信息。因此,該過程也是安全的。
3)抗合謀:當(dāng)數(shù)據(jù)接收者即被授權(quán)者Uj獲得解密密鑰后意欲聯(lián)合半可信的第三方數(shù)據(jù)庫管理者對其他數(shù)據(jù)進(jìn)行合攻擊竊取時,盡管數(shù)據(jù)擁有者在本地初次加密時采用的是同一個加密密鑰,但因為采用的是存儲和控制分離的方式,對于用戶沒有權(quán)限訪問的數(shù)據(jù),用戶即使聯(lián)合數(shù)據(jù)庫拿到了重加密后的密文,也無法獲取相對應(yīng)的使用會話密鑰封裝后的重加密密鑰,所以用戶能獲得的也只是有訪問權(quán)限的數(shù)據(jù)信息。
優(yōu)化后的方法對于授權(quán)控制是基于代理重加密后的數(shù)據(jù)副本進(jìn)行的,這會使統(tǒng)一加密密鑰加密的數(shù)據(jù)經(jīng)過重加密后,不同的數(shù)據(jù)需要利用不同的解密密鑰進(jìn)行解密,原理和基于RSA方法中一樣用戶只能獲得有訪問權(quán)限的數(shù)據(jù),這種方法很好地將原始加密密鑰保護(hù),可以有效地抵御來自用戶和半可信數(shù)據(jù)庫的聯(lián)合攻擊。
數(shù)據(jù)上傳至PostgreSQL前都要在前端加密,保證前端加密效率直接影響用戶滿意度,在本次實驗中針對不同數(shù)據(jù)規(guī)模分別采用文中提到的2種加密算法比較加密效率。本次數(shù)據(jù)規(guī)模m=1 000,2 000,…,8 000個文檔,得到如下數(shù)據(jù)如圖3所示。
圖3 數(shù)據(jù)加密效率對比
從圖3可知,隨著文檔規(guī)模逐漸增大相較于AONT的對稱加密基于RSA加密算法劣勢越趨明顯,雖然兩者在數(shù)據(jù)安全性上都有很好的保障但考慮到效率問題采用對稱密鑰可有效減少本地計算開銷。
本文2層存儲架構(gòu)選擇的重加密方法直接影響存儲層和鏡像層之間的數(shù)據(jù)訪問效率,針對提出的2種方法進(jìn)行效率對比,結(jié)果如圖4所示。選取的文檔規(guī)模m為1 000~8 000。
圖4 重加密效率
在數(shù)據(jù)訪問的整個過程中,2種方法的訪問權(quán)限判斷和網(wǎng)絡(luò)傳輸時間基本相同不做考慮,主要是重加密和本地解密的時間不同,對于優(yōu)化后方法中每個數(shù)據(jù)授權(quán)均有一數(shù)據(jù)副本,不存在重加密時間。
由圖5可知,基于對稱密鑰重加密機(jī)制讀取效率是基于公鑰機(jī)制的上千倍,但與此同時在數(shù)據(jù)庫中占用的額外存儲空間如表2所示。
圖5 數(shù)據(jù)讀取效率對比
mRSA/KBAONT/MB1 00012833.22 00025669.83 00038496.94 000512117.05 000640140.06 000768190.07 000896219.08 0001 024243.0
經(jīng)過對比后發(fā)現(xiàn),優(yōu)化后方法是以存儲空間為代價提高數(shù)據(jù)的讀取效率,2種方法各有優(yōu)劣勢,具體采用什么方法視實際情況和需求決定。
本文基于PostgreSQL隱私數(shù)據(jù)防泄密,提出一種細(xì)粒度輕量級的訪問控制方法。實驗結(jié)果表明,基于RSA加密的方法效率較低,但占用存儲空間小,優(yōu)化后方法相較于傳統(tǒng)加密方法效率高,但需要占用額外空間,2種方法都具有很好的安全性。
盡管本文方法可以有效進(jìn)行細(xì)粒度輕量級的訪問控制,但是隱私數(shù)據(jù)在其創(chuàng)建、存儲、傳遞、處理、銷毀等各個生命周期都遭受著被泄露的風(fēng)險,不安全的存儲方式、頻繁的數(shù)據(jù)訪問處理傳遞都會給隱私數(shù)據(jù)帶來極大威脅,為了實現(xiàn)隱私數(shù)據(jù)安全,不僅從技術(shù)層面解決問題,還要從管理層面入手,兩者相結(jié)合才能發(fā)揮最大的效益,這將是今后研究的重點(diǎn)。