王永錄,左開中 ,曾海燕,劉 蕊,郭良敏
1.安徽師范大學 計算機與信息學院,安徽 蕪湖 241002
2.安徽師范大學 網(wǎng)絡(luò)與信息安全安徽省重點實驗室,安徽 蕪湖 241002
隨著移動技術(shù)與定位技術(shù)的不斷發(fā)展,基于位置的服務(wù)(Location-Based Services,LBS)已逐步應(yīng)用到更為廣泛的領(lǐng)域[1-3]。根據(jù)用戶查詢方式不同,LBS主要分為快照查詢和連續(xù)查詢。其中,連續(xù)查詢作為常見的LBS服務(wù),用戶需要在查詢有效期內(nèi)不斷更新位置,存在一定的風險,即位置隱私泄漏問題[4-5]。因此,如何在連續(xù)查詢中保護位置隱私已成為國內(nèi)外學者關(guān)注的熱點。
現(xiàn)有路網(wǎng)環(huán)境下面向連續(xù)查詢的位置隱私保護方法大多基于K-匿名和L-路段多樣性[6-8],即匿名區(qū)域至少包含K個用戶和L條路段。Wang等[9]通過歷史數(shù)據(jù)預(yù)測移動用戶在路網(wǎng)中的運動情況,來構(gòu)造匿名區(qū)域。潘曉等[10]通過在連續(xù)查詢的最初時刻為用戶生成統(tǒng)一匿名用戶集,結(jié)合路網(wǎng)環(huán)境構(gòu)建具有L條連通路段的匿名區(qū)域,來保護用戶位置隱私。Zhang等[11]提出在混合區(qū)域中共享相同查詢內(nèi)容和時間間隔,使得攻擊者無法通過子軌跡推測真實用戶,保護位置隱私。張磊等[12]提出一種提高當前路段查詢密度值的密度壓縮算法,通過在用戶真實位置附近添加大量噪聲用戶,保護位置隱私。與基于語義位置的方法相比,現(xiàn)有連續(xù)查詢位置隱私保護方法均未考慮用戶所處語義位置信息,存在語義推斷攻擊[13],導(dǎo)致用戶隱私泄漏。
已有路網(wǎng)環(huán)境下的語義位置隱私保護方法主要集中于快照查詢,即用戶只需向LBS服務(wù)器提供一次位置信息,LBS服務(wù)器根據(jù)用戶的位置和查詢內(nèi)容提供服務(wù)。針對語義推斷攻擊問題,Li等[14]利用城市路網(wǎng)中的道路交叉口和語義位置進行Voronoi圖劃分,通過位置語義信息有選擇地添加鄰近Voronoi單元,構(gòu)建語義安全匿名區(qū)域,實現(xiàn)隱私保護,但該方法存在匿名區(qū)域過大問題。Xu等[15]針對匿名區(qū)域過大問題,提出一種基于全局最優(yōu)和局部最優(yōu)的增量查詢方法,通過減少添加不必要的Voronoi單元,縮減匿名區(qū)域面積,降低查詢開銷,提升服務(wù)質(zhì)量。陳慧等[16]針對敏感位置信息泄漏問題,提出一種基于用戶個性化隱私需求的語義位置保護方法。然而,若將這些方法簡單應(yīng)用于連續(xù)查詢,攻擊者就可以利用相鄰時刻匿名用戶集間的關(guān)聯(lián)關(guān)系,通過識別用戶身份標識信息推測真實查詢用戶,即連續(xù)查詢追蹤攻擊[17],導(dǎo)致用戶隱私泄漏。
基于此,本文提出一種路網(wǎng)環(huán)境下面向連續(xù)查詢的敏感語義位置隱私保護方案,通過設(shè)計(K,θ)-隱私模型構(gòu)建匿名區(qū)域,提高用戶身份的不確定性和所處敏感語義位置的隱私保護程度,更為有效地同時抵御連續(xù)查詢追蹤攻擊和語義推斷攻擊。
連續(xù)查詢可以分為新到查詢用戶和活動查詢用戶兩種[10]。新到查詢用戶是指首次發(fā)出連續(xù)查詢的用戶;活動查詢用戶是指在連續(xù)查詢有效期內(nèi)發(fā)生位置更新的用戶。鑒于路網(wǎng)環(huán)境下的連續(xù)查詢過程中,用戶在交叉路口的運動具有不可預(yù)知性,本文假設(shè)已知用戶在查詢有效期內(nèi)的移動路徑[10],如“查詢從北京大學路徑清華大學、人民大學到達上地過程中距離我最近的醫(yī)院”。
定義1(帶Voronoi劃分的路網(wǎng))路網(wǎng)是現(xiàn)實生活中多條道路(即路段)構(gòu)成的交通網(wǎng)絡(luò),可以形式化表示為一個無向圖G(V,E),其中:
(1)E是邊的集合,每條邊對應(yīng)一條路段,記為e={eid,(vi,vj),velmax},其中,eid表示路段編號,(vi,vj)表示路段始點和終點(即路段結(jié)點),velmax表示路段最大速度限制。
(2)V 是路段結(jié)點的集合,記為V={v1,v2,…},其中v表示路段結(jié)點。路網(wǎng)G(V,E)中每個路段結(jié)點的Voronoi單元滿足Voronoi(v)={z:d(z,v)≤d(z,w),w≠v,(w,v)∈V},其中,d(z,v)表示z到v的歐式距離,z表示路網(wǎng)中的任意位置。這些Voronoi單元互不重合,包含多條路段。
因此,一個帶Voronoi劃分的路網(wǎng)可以表示為G(V,E,Voronoi(v))。
定義2(語義位置流行度)是指用戶訪問該語義位置的概率。設(shè)loc是一個語義位置,U(loc)={u1,u2,…,um}是訪問過該語義位置的用戶集合,并設(shè)nj是用戶uj對loc的訪問次數(shù),該語義位置被訪問的總數(shù)記為因此該語義位置的流行度定義為P(loc)=中,H(loc)=,它表示該語義位置的信息熵,即被用戶訪問的可能性。為了便于區(qū)分語義位置與道路交叉口,設(shè)置道路交叉口的流行度為0。
定義3(語義位置)是指具有坐標、語義位置類型(如醫(yī)院、學校等)和流行度等特征的位置,記為loc={(x,y),type,P(loc)},在路網(wǎng)中使用距離最近的路段結(jié)點表示,其中,(x,y)表示語義位置坐標,type表示語義位置類型,P(loc)表示語義位置流行度。語義位置是否敏感由用戶定義,例如醫(yī)院,部分患者認為是敏感的,醫(yī)生則認為是非敏感的。
定義4(連續(xù)查詢移動路徑)是指用戶連續(xù)查詢期間經(jīng)過的路段結(jié)點。一個連續(xù)查詢移動路徑被形式化表示為路段結(jié)點的有序序列,記為 path={ }nodes,size,其中,nodes表示經(jīng)過的路段結(jié)點集合,記為nodes=表示經(jīng)過的路段結(jié)點個數(shù)。為了簡便,假設(shè)系統(tǒng)中連續(xù)查詢用戶的起點和終點都為路段結(jié)點。若連續(xù)查詢用戶位于路段中的某個位置點上,系統(tǒng)會自動將其轉(zhuǎn)化為最近鄰路段結(jié)點。
定義5(用戶)是指在路網(wǎng)上發(fā)起連續(xù)查詢請求的移動對象,記為u={u id,loc,e,path,vel,PR} ,其中,uid表示用戶編號,loc表示用戶所處語義位置,e表示用戶所在路段,path表示用戶連續(xù)查詢移動路徑,vel表示用戶移動速度,PR表示用戶的隱私需求,記為PR={K ,θ,senstype},其中,K表示用戶定義的匿名用戶數(shù)量,θ表示用戶定義的語義安全閾值,senstype表示用戶定義的敏感語義位置類型。
定義6(匿名區(qū)域)是指一個用來隱藏用戶語義位置的空間區(qū)域,記為CR={ }users,Voronois,其中,users表示CR中的匿名用戶集合,記為users={u1,u2,…},Voronois表示CR中的Voronoi單元集合,記為Voronois={Voronoi(v1),Voronoi(v2),…},這些Voronoi單元可以構(gòu)成連通圖,具有連通性。
定義7(θ-語義安全匿名區(qū)域)已知一個匿名區(qū)域CR和一個用戶u,對用戶u來說CR中屬于敏感的語義位置用senslocsu表示,則匿名區(qū)域敏感語義位置總流行度記為 popCR(senslocsu),匿名區(qū)域語義位置總流行度記為 popCR(?),匿名區(qū)域語義安全程度用d(CR)表示:
若匿名區(qū)域的語義安全程度d(CR)≤u.PR.θ,稱CR對用戶u來說是一個θ-語義安全匿名區(qū)域。
定義8(平均移動速度)是指用戶移動速度的平均值vavg,可表示為:
其含義是根據(jù)用戶當前移動速度來預(yù)測在整個連續(xù)查詢移動路徑上的平均速度,其中,u.vel表示用戶當前移動速度,u.e.velmax表示用戶所在路段最大限制速度,vi表示用戶經(jīng)過路段結(jié)點集合中第i個路段結(jié)點,e.velmax表示以(vi,vi+1)作為始點和終點的路段最大限制速度。
定義9(時空相似性)是指兩個用戶在連續(xù)查詢移動路徑和移動速度方面的相似程度,其值越大,移動路徑和移動速度越相似。已知2個用戶ui和uj,其對應(yīng)的連續(xù)查詢移動路徑為 pathi和 pathj,平均移動速度為ui.vavg和uj.vavg,則時空相似性δ可表示為:
本文方案采用的是匿名保護方法下的LBS中心服務(wù)器系統(tǒng)架構(gòu)[9-10],如圖1所示。該系統(tǒng)架構(gòu)由用戶、匿名服務(wù)器及LBS服務(wù)器3部分組成。本文假定匿名服務(wù)器是可信的,由匿名區(qū)域構(gòu)造模塊和候選結(jié)果集求精模塊組成。其中,匿名區(qū)域構(gòu)造模塊負責對用戶位置進行匿名處理;候選結(jié)果集求精模塊負責對LBS服務(wù)器返回的結(jié)果進行求精。當用戶發(fā)出請求時,將自己的位置信息、隱私需求和查詢內(nèi)容發(fā)送給匿名服務(wù)器。匿名服務(wù)器根據(jù)隱私保護算法進行匿名處理,并將處理后的查詢請求發(fā)送給LBS服務(wù)器。LBS服務(wù)器計算出候選查詢結(jié)果集并返回給匿名服務(wù)器。匿名服務(wù)器對LBS服務(wù)器返回的結(jié)果進行篩選,并將精確查詢結(jié)果返回給用戶。本系統(tǒng)中,匿名服務(wù)器需要保存當前的地圖信息、語義位置信息及流行度。
針對連續(xù)查詢位置服務(wù)中存在連續(xù)查詢追蹤攻擊和語義推斷攻擊問題,本文方案通過設(shè)計(K,θ)-隱私模型構(gòu)建匿名區(qū)域,來保護用戶身份和敏感語義位置隱私。
假設(shè)CRi(1≤i≤t)為用戶u在第i時刻形成的匿名區(qū)域,CR1.users表示用戶u在初始時刻根據(jù)時空相似性構(gòu)建的匿名用戶集,CRi.users表示第i時刻的匿名用戶集,u.loci.type表示用戶在第i時刻所處語義位置類型,u.PR.K表示用戶定義的匿名用戶數(shù)量,u.PR.senstype表示用戶定義的敏感語義位置類型,u.PR.θ表示用戶定義的語義安全閾值。如果CRi滿足如下四個條件:
(1)| C Ri.users|≥u.PR.K;
圖1 LBS中心服務(wù)器系統(tǒng)架構(gòu)
(2)CRi.users=CR1.users;
(3)if u.loci.type∈u.PR.senstype,d(CRi)≤u.PR.θ;
(4)?u∈CRi.users,u發(fā)布CRi作為匿名區(qū)域。
則稱CRi滿足(K,θ)-隱私模型,其中:條件1確保匿名用戶集至少有K個用戶,滿足K匿名性質(zhì);條件2確保每個時刻匿名區(qū)域的匿名用戶集都包含相同的用戶,防止連續(xù)查詢追蹤攻擊;條件3確保匿名區(qū)域語義安全程度滿足用戶的語義安全需求,防止語義推斷攻擊;條件4確保每個CRi.users中的用戶在該時刻形成的匿名區(qū)域都是相同的,滿足位置K-共享性質(zhì)。
本文方案基于(K,θ)-隱私模型,提出一種路網(wǎng)環(huán)境下面向連續(xù)查詢的敏感語義位置隱私保護算法,主要思想如圖2所示。
圖2 算法流程圖
(1)利用城市路網(wǎng)語義位置和道路交叉口進行Voronoi圖劃分。
(2)判斷連續(xù)查詢用戶狀態(tài)。若用戶為新到查詢用戶,則基于時空相似性為用戶構(gòu)建滿足K匿名的用戶集,并以此作為該用戶連續(xù)查詢的統(tǒng)一匿名用戶集;否則,執(zhí)行步驟(3)。
(3)根據(jù)匿名用戶集各用戶當前時刻所處語義位置的Voronoi單元構(gòu)建具有連通性的匿名區(qū)域。
(4)若匿名用戶集中有用戶處于敏感語義位置,根據(jù)用戶設(shè)定的敏感語義位置類型計算匿名區(qū)域語義安全程度;否則,返回匿名區(qū)域。
(5)若匿名區(qū)域語義安全程度滿足用戶設(shè)定的語義安全閾值,返回匿名區(qū)域;否則,遍歷所有與匿名區(qū)域相連通的鄰近語義位置。優(yōu)先添加流行度最大的非敏感語義位置,其次隨機選擇道路交叉口,最后選擇流行度最小的敏感語義位置。
(6)將該語義位置對應(yīng)的Voronoi單元加入匿名區(qū)域,執(zhí)行步驟(5)。
算法1給出了路網(wǎng)環(huán)境下面向連續(xù)查詢的敏感語義位置隱私保護算法(Sensitive-semantic Location Privacy Protection Algorithm for Continuous Query under Road Network Environment,SLPP)的偽代碼。首先判斷用戶的查詢狀態(tài)(第1行),對于新到查詢用戶,調(diào)用算法2分組構(gòu)建匿名用戶集(第2~11行),根據(jù)初始時刻匿名用戶集中各用戶所處語義位置及隱私需求調(diào)用算法3構(gòu)建匿名區(qū)域(第12~22行);對于活動查詢用戶,則根據(jù)當前時刻匿名用戶集各用戶所處語義位置、敏感語義位置類型和語義安全閾值調(diào)用算法3構(gòu)建匿名區(qū)域(第24、25行)。
算法1路網(wǎng)環(huán)境下面向連續(xù)查詢的敏感語義位置隱私保護算法
輸入:連續(xù)查詢路徑 path、隱私需求PR、帶Voronoi劃分的路網(wǎng)G(V,E,Voronoi(v))、時空相似性δ
輸出:時刻ti的匿名區(qū)域CRi(1≤i≤t)
1.If{NewUsers}是新到查詢用戶 then
2. Uset=?;//記錄分組構(gòu)造的匿名用戶集
3. While true do
4. If{NewUsers}≠? then
5. 從{NewUsers}集合中隨機選擇u;
6. Uset=Uset?使用算法2為u生成的匿名用戶集users;
7. {NewUsers}={NewUsers}-users;
8. Else
9. Break;
10. End if
11.End while
12.Forusers∈Usetdo
13. 根據(jù)匿名用戶集users,找到users中用戶所處語義位置集合vset1;
14. Voronois1=GetVoronoi(vset1);//獲取各語義位置所在Voronoi單元
15. IfVoronois1是非連通的 then
16. 添加必要連通Voronoi單元,更新Voronois1;
17. End if
18. If ?u∈users,u.loc1.type∈u.PR.senstypethen
19. 使用算法3生成匿名區(qū)域;
20. End if
21.End for
22.Return{CR1};
23.Else//活動查詢用戶
24.使用算法3生成語義安全匿名區(qū)域;
25.Return{CRi};
26.End if
在構(gòu)建匿名用戶集時,本文方案使用時空相似性選擇匿名用戶。主要思想是從用戶所在路段出發(fā),計算連續(xù)查詢用戶與其他用戶的時空相似性,將滿足要求的移動用戶加入匿名用戶集,直至滿足該集合所有用戶的K匿名需求。算法2給出了偽代碼,首先初始化系統(tǒng)變量(第1~4行),從用戶當前所在路段出發(fā),依次計算其他用戶與當前查詢用戶的時空相似性,將滿足要求的用戶加入集合USERset(第9~12行),若能找到K個用戶,則從第5~25行的循環(huán)中跳出,否則從連續(xù)查詢用戶所在路段進行寬度優(yōu)先搜索,執(zhí)行第5~25行。最后判斷USERset中的匿名用戶數(shù)量是否大于等于K(第26行),若滿足,則返回匿名用戶集(第27行)。
算法2匿名用戶集構(gòu)建算法
輸入:連續(xù)查詢用戶u、帶Voronoi劃分的路網(wǎng)G(V,E,Voronoi(v))、時空相似性δ
輸出:匿名用戶集合
1. USERset=?;
2. Edgeset=?;//記錄已經(jīng)遍歷的路段
3. Nearedgeset={u.e};//相鄰路段集合
4. count=0;//記錄查找相鄰路段的次數(shù)
5.While true do
6. Foregde∈Nearedgesetdo//遍歷所有相鄰路段
7. Edgeset.add(edge);
8. Foruser∈edgedo//遍歷每條相鄰路段上的用戶
9. If(u,user)的時空相似性≥δ then
10. USERset.add(user);
12. End if
13. End for
14. If |USERset|≥u.PR.K then
15. Break;
16. End if
17. End for
18. If |USERset|≥u.PR.K||count>(1-δ)×10then
19. Break;
20. Else
21. Nearedgeset=?;
22. Nearedgeset=Edgeset所有相鄰路段;
23. count++;
24. End if
25.End while
26.If |USERset|≥u.PR.K then
27. ReturnUSERset;
28.Else
29. Break;
30.End if
在構(gòu)建語義安全匿名區(qū)域時,本文方案根據(jù)匿名用戶集各用戶定義的敏感語義位置類型和語義安全閾值構(gòu)建匿名區(qū)域。主要思想是針對處于敏感語義位置的用戶,通過添加非敏感的相鄰語義位置,降低敏感語義位置流行度比重,直至滿足用戶的語義安全需求。算法3給出了偽代碼,首先初始化系統(tǒng)變量(第1~2行),找到連續(xù)查詢用戶在初始時刻構(gòu)建的匿名用戶集Users、當前時刻各用戶所處語義位置集合vseti以及各語義位置所在Voronoi單元集合Voronoisi(第3~5行),將當前時刻處于敏感語義位置的用戶加入集合TUset,并將對應(yīng)的敏感位置類型加入集合SLset(第6~11行),通過添加必要連通Voronoi單元使得Voronoisi集合內(nèi)Voronoi單元具有連通性(第12~15行)。若當前時刻TUset為空集,直接返回匿名區(qū)域;否則計算匿名區(qū)域語義安全程度是否滿足TUset中每一個用戶的語義安全閾值,滿足則返回匿名區(qū)域,否則根據(jù)SLset添加鄰近Voronoi單元,直至滿足TUset中每一個用戶的語義安全閾值,返回匿名區(qū)域(第15~35行)。
算法3語義安全匿名區(qū)域構(gòu)建算法
輸入:連續(xù)查詢用戶u,帶Voronoi劃分的路網(wǎng)G(V,E,Voronoi(v))
輸出:θ-語義安全匿名區(qū)域
1. SLset=?;//敏感語義位置類型集合
2. TUset=?;//位于敏感語義位置的用戶集合
3. Users=用戶u的匿名用戶集;
4. 找到Users中用戶當前時刻所處語義位置集合vseti;
5. Voronoisi=GetVoronoi(vseti);//獲取 vseti中各語義位置所在Voronoi單元
6.Foruser∈Usersdo
7. Ifuser.loci.type∈user.PR.senstypethen
8. TUset=TUset?user;
9. SLset=SLset?user.PR.senstype;
10. End if
11.End for
12.IfVoronoisi是非連通的 then
13. 添加必要連通Voronoi單元,更新Voronoisi;
14.End if
15.IfTUset=? then
16.ReturnCRi;
17.Else
18.While true do
19. If ?u∈TUset,d(CRi)≤u.PR.θthen
20. Break;
21. Else//查找與匿名區(qū)域具有連通路段的所有語義位置
22.NSset=GetNSLinks(CRi,SLset);//記錄非敏感語義位置結(jié)點
23.INset=GetINLinks(CRi,SLset);//記錄道路交叉口結(jié)點
24.SNset=GetSNLinks(CRi,SLset);//記錄敏感語義位置結(jié)點
25. IfNSset≠? then
26.vlink=SelectMaxpop(NSset);//選擇流行度最大的語義位置
27. Else ifINset≠? then
28.vlink=RandomSelect(INset);//隨機選擇一個道路交叉口
29. Else ifSNset≠? then
30.vlink=SelectMinpop(SNset);//選擇流行度最小的語義位置
31. End if
32.Voronoisi=Voronoisi?Voronoi(vlink);
33. End if
34.End while
35.ReturnCRi;
36.End if
本文對比了SCPA算法[10]和TB算法[18],因為SCPA算法、TB算法和本文算法都是通過構(gòu)建具有K個共同用戶的匿名用戶集抵御連續(xù)查詢追蹤攻擊,但沒有考慮語義安全性。其中,SCPA算法基于K匿名和L多樣性(L默認設(shè)置為3),TB算法基于K匿名和四叉樹。
所有的匿名算法均用Java實現(xiàn),并運行在一臺配置為2.83 GHz Intel CoreTM2,2 GB內(nèi)存的Windows7計算機上。本實驗使用Thomas Brinkhoff移動對象生成器[19]生成模擬移動對象,生成器的輸入是德國Oldenburg地圖,包含6 105個結(jié)點和7 035條邊。實驗?zāi)M生成10 000個移動用戶,設(shè)每個對象均提出連續(xù)查詢,默認包括20個快照位置。同時實驗還設(shè)置了1000個均勻分布的語義位置(均分布在路段結(jié)點),共6種類型(見表1)。
表1 實驗參數(shù)設(shè)置
實驗采用控制變量法,在保證其他參數(shù)不變的情況下,通過改變匿名用戶數(shù)、語義安全閾值和語義位置數(shù)量進行驗證。為了計算簡單,假設(shè)類型相同的語義位置具有相同的流行度,取值為{學校:0.2,醫(yī)院:0.15,辦公:0.25,娛樂:0.15,商場:0.15,公園:0.1,路口:0},敏感語義位置類型設(shè)置為{醫(yī)院、娛樂},時空相似性δ取值為0.7,其中,δ值與文獻[10]取值相同。表1列出了實驗參數(shù)具體信息。
(1)隱私保護度。它是指滿足語義安全閾值的匿名區(qū)域數(shù)量同總產(chǎn)生的匿名區(qū)域數(shù)量之比,比值越大,隱私保護度越好。圖3比較了θ值以及K值的變化對隱私保護度的影響。從圖3可以看出,由于SLPP算法始終考慮語義安全性,而SCPA算法和TB算法不考慮,所以SLPP算法的隱私保護度始終高于SCPA算法和TB算法,且?guī)缀醪皇躃值變化影響。因此,SLPP算法所提供的隱私保護度更高。
圖3 隱私保護度比較
(2)系統(tǒng)開銷。它使用平均匿名區(qū)域面積來度量,匿名區(qū)域面積越大,查詢和處理開銷越大,對應(yīng)系統(tǒng)開銷越大。圖4比較了θ值以及K值的變化對平均匿名區(qū)域面積的影響。如圖4(a)所示,由于SCPA算法和TB算法不考慮語義安全性,所以匿名區(qū)域面積不受θ值影響。隨著θ值增加,SLPP算法生成的匿名區(qū)域面積呈下降趨勢。這是因為θ值越大,構(gòu)建語義安全匿名區(qū)域需要添加的相鄰語義位置越少,使得匿名區(qū)域面積相應(yīng)減小。如圖4(b)所示,隨著K值增加,三種算法的平均匿名區(qū)域面積呈上升趨勢。其中,在K值小于等于5時,SLPP算法的平均匿名區(qū)域面積高于TB算法,大于5時要低于TB算法,這是因為K值越大,TB算法需要不斷將匿名區(qū)域擴展為所在四叉樹結(jié)點的父結(jié)點,直至每個時刻的匿名區(qū)域都包含K個公共用戶,導(dǎo)致匿名區(qū)域不斷變大。但SLPP算法的匿名區(qū)域面積始終小于SCPA算法,因此SLPP算法的系統(tǒng)開銷較低。
(3)平均執(zhí)行時間。平均執(zhí)行時間是指算法成功匿名所用的時間,平均執(zhí)行時間越少,算法執(zhí)行效率越好。圖5比較了θ值以及K值的變化對平均執(zhí)行時間的影響。如圖5(a)所示,由于SCPA算法和TB算法不考慮語義安全性,所以平均執(zhí)行時間不受θ值影響。隨著θ值增加,SLPP算法執(zhí)行時間呈下降趨勢。這是因為θ值越大,語義安全要求越寬松,添加相鄰語義位置的次數(shù)逐漸減少,算法執(zhí)行時間相應(yīng)減少。如圖5(b)所示,隨著K值增加,三種算法的平均執(zhí)行時間呈上升趨勢,但SLPP算法的平均執(zhí)行時間一直低于TB算法,略高于SCPA算法。這是因為SCPA算法只考慮匿名區(qū)域的路段多樣性,并沒有考慮語義安全性,因此執(zhí)行時間略低于SLPP算法;TB算法通過不斷擴展匿名區(qū)域,確保每個時刻生成的匿名區(qū)域包含K個公共用戶,花費時間較多;SLPP算法始終考慮語義安全性,通過不斷添加相鄰語義位置構(gòu)建語義安全匿名區(qū)域。然而,SLPP算法僅比SCPA算法大約多花費了1%的執(zhí)行時間。
(4)可擴展性??蓴U展性是評價算法可執(zhí)行性的一個重要指標。圖6給出了總語義位置數(shù)量從1 000增加到1 800時,系統(tǒng)開銷和平均執(zhí)行時間的變化情況。其中:K值為5,θ值為0.5,敏感語義位置類型為{醫(yī)院、娛樂}。由于SCPA算法和TB算法不考慮語義安全性,所以語義位置數(shù)量的變動與它們無關(guān)。從圖6可以看出,隨著語義位置數(shù)量的增加,SLPP算法在系統(tǒng)開銷和平均執(zhí)行時間方面均呈下降趨勢。這是因為隨著語義位置數(shù)量增加,非敏感語義位置數(shù)量逐漸增多,構(gòu)建語義安全匿名區(qū)域時需要添加的相鄰語義位置數(shù)量減少,縮減匿名區(qū)域面積,減少算法執(zhí)行時間。由此可見,SLPP算法的可擴展性更好。
圖4 系統(tǒng)開銷比較
圖5 平均執(zhí)行時間比較
圖6 可擴展性比較
本文針對連續(xù)查詢位置服務(wù)中存在的連續(xù)查詢追蹤攻擊和語義推斷攻擊,通過設(shè)計(K,θ)-隱私模型,提出一種路網(wǎng)環(huán)境下面向連續(xù)查詢的敏感語義位置隱私保護方案。該方案利用時空相似性為連續(xù)查詢用戶構(gòu)建統(tǒng)一匿名用戶集,并依據(jù)該匿名用戶集用戶的語義安全需求構(gòu)建匿名區(qū)域。最后,采用模擬數(shù)據(jù)進行大量實驗,驗證了本文所提方案的有效性。
然而,本文方案僅利用語義位置的空間分布來構(gòu)建匿名區(qū)域,未考慮時間維度。因此,下一階段的研究可以結(jié)合語義位置的空間分布和時間維度構(gòu)建匿名區(qū)域,進一步增強隱私保護程度。