本發(fā)明涉及一種保護(hù)位置隱私的近鄰檢測方法,該方法基于Geohash編碼,在保護(hù)用戶位置隱私的前提下,為用戶找出附近的鄰居。
背景技術(shù):
:隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展以及智能便攜終端的普及,傳統(tǒng)互聯(lián)網(wǎng)服務(wù)逐步向移動(dòng)互聯(lián)網(wǎng)方向轉(zhuǎn)變。另一方面,F(xiàn)acebook等一大批傳統(tǒng)社交網(wǎng)絡(luò)服務(wù)的興起,也讓越來越多的人認(rèn)識(shí)到了社交網(wǎng)絡(luò)的重要性,基于位置的社交網(wǎng)絡(luò)服務(wù)由此應(yīng)運(yùn)而生。LBSNS是指以位置信息為基礎(chǔ),通過移動(dòng)設(shè)備建立起的以社會(huì)交往和內(nèi)容分享為目的的移動(dòng)服務(wù),如微信、Twitter和新浪微博。這些服務(wù)不僅能夠方便用戶隨時(shí)發(fā)現(xiàn)附近的好友,促進(jìn)好友之間的互動(dòng),而且也允許用戶在分享照片、視頻的同時(shí)標(biāo)記事件發(fā)生的地點(diǎn),使得其他用戶能夠更加直觀地了解用戶分享的內(nèi)容。現(xiàn)如今,無線定位技術(shù)的日趨成熟,使得智能手機(jī)可以通過多種途徑獲取到當(dāng)前使用者的位置信息。而對(duì)物理位置信息的獲取和使用則是LBSNS應(yīng)用最為顯著和重要的特點(diǎn)。因此,隨著LBSNS的發(fā)展,關(guān)于用戶位置隱私信息的使用和保護(hù)的爭論是最為人關(guān)注的關(guān)鍵問題之一。首先,LBSNS為用戶提供服務(wù)時(shí)必不可少地會(huì)釆集用戶的位置信息,而不僅用戶的位置信息本身包含大量個(gè)人隱私信息,通過位置信息還可以推測出用戶的其它信息,如宗教信仰、興趣愛好、家庭住址、健康狀況等。若位置信息被攻擊者惡意利用,嚴(yán)重者將造成用戶財(cái)產(chǎn)損失,甚至人身傷害。Geohash是一種地理編碼,可以把二維的經(jīng)緯度坐標(biāo)編碼成一維的字符串,作為全球唯一的標(biāo)識(shí)。Geohash的思想是先將經(jīng)緯度范圍(緯度范圍-90~90,經(jīng)度范圍-180~180)視為一個(gè)二維平面矩形,然后分別將經(jīng)度和緯度進(jìn)行類二分法劃分,每次二分稱為一次劃分,把每5次劃分作為一個(gè)層次。當(dāng)層數(shù)為奇數(shù)時(shí),每次劃分的結(jié)果與第1層類似;當(dāng)層數(shù)為偶數(shù)時(shí),每次劃分的結(jié)果與第2層類似。一直循環(huán)劃分到任意精度。用0或1表示每次劃分產(chǎn)生的區(qū)域,具體如圖1所示:當(dāng)沿經(jīng)度方向進(jìn)行二分時(shí),左側(cè)區(qū)域的編碼為0,右側(cè)區(qū)域的編碼為1;當(dāng)沿緯度方向進(jìn)行二分時(shí),下面區(qū)域的編碼為0,上面區(qū)域的編碼為1。之后,將每5次劃分的二進(jìn)制編碼轉(zhuǎn)換成32進(jìn)制編碼,用數(shù)字0-9和除a、i、l、o外的英文小寫字母表示,即為Geohash某一層網(wǎng)格的編碼。Geohash編碼字符串表示的并不是一個(gè)點(diǎn),而是一個(gè)矩形區(qū)域。對(duì)于Geohash編碼字符串所能表示的精度則需要根據(jù)字符串的長度進(jìn)行判斷。Geohash編碼位數(shù)越少,表示的范圍越大、精度越低;相反,編碼位數(shù)越多,精度則越高,如表1所示。表1Geohash編碼精度geohash字符串長度(Base32)經(jīng)度比特位緯度比特位矩形寬度矩形高度誤差(km)1235,009.4km4,992.6km±25002551,252.3km624.1km±630378156.5km156km±784101039.1km19.5km±20512134.9km4.9km±2.4615151.2km609.4m±0.6171718152.9m152.4m±0.0768202038.2m19m±0.019922234.8m4.8m±0.0002當(dāng)Geohash編碼字符串長度為8時(shí),精度在19m左右,而當(dāng)編碼長度為9時(shí),精度達(dá)2米左右。由此,在精度足夠高的情況下,共享前綴長度越長,兩個(gè)地方的位置越接近。鑒于此,常將Geohash編碼用于附近地點(diǎn)查詢,即根據(jù)用戶查詢的點(diǎn)的空間位置和空間查詢范圍的大小,得到所在的Geohash層級(jí),計(jì)算查詢點(diǎn)在該層級(jí)的Geohash編碼,利用該編碼在數(shù)據(jù)庫中查詢與之具有相同前綴的點(diǎn)數(shù)據(jù)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于提供一種保護(hù)位置隱私的近鄰檢測方法,該方法解決了傳統(tǒng)近鄰檢測方法會(huì)泄露用戶的位置信息,嚴(yán)重情況下將會(huì)危害到用戶隱私的問題。為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種保護(hù)位置隱私的近鄰檢測方法,包括如下步驟,S1:用戶更新位置時(shí),先采用Geohash編碼將所在位置編碼成前綴碼和后綴碼兩部分,而后對(duì)后綴碼進(jìn)行加密形成后綴密文,最后將前綴碼和后綴密文提交給社交網(wǎng)絡(luò)服務(wù)器;S2:當(dāng)用戶請(qǐng)求近鄰檢測服務(wù)時(shí),社交網(wǎng)絡(luò)服務(wù)器根據(jù)用戶位置的前綴碼以及其指定的鄰居查詢區(qū)域進(jìn)行鄰居初選,而后將初選的鄰居集合以及對(duì)應(yīng)的后綴密文轉(zhuǎn)發(fā)給第三方服務(wù)器;S3:第三方服務(wù)器解密初選的鄰居集合的后綴密文得到鄰居集合的后綴碼,而后根據(jù)相對(duì)位置篩選真正的鄰居集合,最后,通過社交網(wǎng)絡(luò)服務(wù)器將查詢結(jié)果返回給用戶。在本發(fā)明一實(shí)施例中,所述步驟S1中,采用Geohash編碼將所在位置編碼成前綴碼和后綴碼兩部分采用隱私處理方法,具體為:首先采用Base32的Geohash編碼用戶的所在位置,接著根據(jù)隱私需求定義一個(gè)匿名區(qū)域的最小面積Amin,然后根據(jù)Amin確定位置編碼的后綴長度,從而將位置編碼分成前綴碼和后綴碼兩部分,并將后綴碼通過用戶與第三方服務(wù)器共享的秘鑰加密。在本發(fā)明一實(shí)施例中,所述步驟S2中,鄰居查詢區(qū)域以用戶匿名后的位置為中心,向外擴(kuò)大搜索范圍R得到,且該區(qū)域也采用Geohash編碼進(jìn)行編碼,得到鄰居查詢區(qū)域前綴碼。在本發(fā)明一實(shí)施例中,所述步驟S2中,鄰居初選具體實(shí)現(xiàn)如下:1)、找出位置前綴碼包含鄰居查詢區(qū)域前綴碼的用戶,并將該用戶加入初選鄰居集合中;2)、將鄰居查詢區(qū)域前綴碼位數(shù)、初選的鄰居集合與其對(duì)應(yīng)的位置后綴密文一起發(fā)送給第三方服務(wù)器。在本發(fā)明一實(shí)施例中,所述步驟S3中,第三方服務(wù)器篩選真正的鄰居集合,具體實(shí)現(xiàn)如下:1)、根據(jù)鄰居查詢區(qū)域前綴碼位數(shù)將候選用戶限定在一個(gè)矩形區(qū)域范圍內(nèi);2)、接著根據(jù)每個(gè)用戶的位置后綴碼將其映射到矩形區(qū)域的具體位置中,然后算出他們與請(qǐng)求用戶之間的距離,若該距離在請(qǐng)求用戶查詢范圍內(nèi)的即為鄰居,反之則不是。相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明提出的近鄰檢測方法,使用Geohash編碼將用戶的位置信息分成前后綴兩部分,分別由社交網(wǎng)絡(luò)服務(wù)器和第三方服務(wù)器處理,使得兩者都無法獲得用戶完整的位置信息,從而有效解決傳統(tǒng)近鄰檢測方法中存在的位置隱私暴露問題。該方法在社交網(wǎng)絡(luò)中具有很大的實(shí)用前景。附圖說明圖1為基于Geohash的隱私保護(hù)近鄰檢測方法系統(tǒng)框架圖。圖2是用戶最小位置區(qū)域構(gòu)造原理圖。圖3是鄰居查詢區(qū)域構(gòu)造原理圖。圖4是基于Geohash的查詢區(qū)域構(gòu)造原理圖。圖5是用戶位置前綴與查詢區(qū)域交集原理圖。圖6是單個(gè)查詢區(qū)域鄰居距離計(jì)算原理圖。圖7是多個(gè)查詢區(qū)域鄰居距離計(jì)算原理圖。具體實(shí)施方式下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說明。如圖1-7所示,本發(fā)明的一種保護(hù)位置隱私的近鄰檢測方法,包括如下步驟,S1:用戶更新位置時(shí),先采用Geohash編碼將所在位置編碼成前綴碼和后綴碼兩部分,而后對(duì)后綴碼進(jìn)行加密形成后綴密文,最后將前綴碼和后綴密文提交給社交網(wǎng)絡(luò)服務(wù)器;S2:當(dāng)用戶請(qǐng)求近鄰檢測服務(wù)時(shí),社交網(wǎng)絡(luò)服務(wù)器根據(jù)用戶位置的前綴碼以及其指定的鄰居查詢區(qū)域進(jìn)行鄰居初選,而后將初選的鄰居集合以及對(duì)應(yīng)的后綴密文轉(zhuǎn)發(fā)給第三方服務(wù)器;S3:第三方服務(wù)器解密初選的鄰居集合的后綴密文得到鄰居集合的后綴碼,而后根據(jù)相對(duì)位置篩選真正的鄰居集合,最后,通過社交網(wǎng)絡(luò)服務(wù)器將查詢結(jié)果返回給用戶。進(jìn)一步的,所述步驟S1中,采用Geohash編碼(9位)將所在位置編碼成前綴碼和后綴碼兩部分采用隱私處理方法,具體為:首先采用Base32的Geohash編碼用戶的所在位置,接著根據(jù)隱私需求定義一個(gè)匿名區(qū)域的最小面積Amin,然后根據(jù)Amin(查表1)確定位置編碼的后綴長度,從而將位置編碼分成前綴碼和后綴碼兩部分,并將后綴碼通過用戶與第三方服務(wù)器共享的秘鑰加密。進(jìn)一步的,所述步驟S2中,鄰居查詢區(qū)域以用戶匿名后的位置為中心,向外擴(kuò)大搜索范圍R得到,且該區(qū)域也采用Geohash編碼進(jìn)行編碼,得到鄰居查詢區(qū)域前綴碼。進(jìn)一步的,所述步驟S2中,鄰居初選具體實(shí)現(xiàn)如下:1)、找出位置前綴碼包含鄰居查詢區(qū)域前綴碼的用戶,并將該用戶加入初選鄰居集合中;2)、將鄰居查詢區(qū)域前綴碼位數(shù)、初選的鄰居集合與其對(duì)應(yīng)的位置后綴密文一起發(fā)送給第三方服務(wù)器。進(jìn)一步的,所述步驟S3中,第三方服務(wù)器篩選真正的鄰居集合,具體實(shí)現(xiàn)如下:1)、根據(jù)鄰居查詢區(qū)域前綴碼位數(shù)將候選用戶限定在一個(gè)矩形區(qū)域范圍內(nèi);2)、接著根據(jù)每個(gè)用戶的位置后綴碼將其映射到矩形區(qū)域的具體位置中,然后算出他們與請(qǐng)求用戶之間的距離,若該距離在請(qǐng)求用戶查詢范圍內(nèi)的即為鄰居,反之則不是。現(xiàn)以用戶A作為請(qǐng)求用戶實(shí)現(xiàn)各個(gè)階段的查詢:在注冊(cè)階段,用戶A與社交網(wǎng)絡(luò)服務(wù)器共享它的公鑰PuKA。注冊(cè)成功之后,用戶A獲得了它的社交網(wǎng)絡(luò)身份標(biāo)識(shí)IDA,而社交網(wǎng)絡(luò)服務(wù)器將記錄<IDA,PuKA>存儲(chǔ)到它的用戶信息表格中。在位置更新階段,首先用戶通過手機(jī)的GPS模塊等獲得自身原始位置信息(xA,yA)。然后,用戶A將真實(shí)位置使用Geohash進(jìn)行編碼,并根據(jù)Amin(查表1)確定位置編碼的后綴長度,從而將位置編碼劃分前綴preGeoA與后綴posGeoA。如圖2所示,假設(shè)滿足用戶隱私度的區(qū)域面積Amin約為38.2*19m的具體矩形框,即用戶A愿意讓社交網(wǎng)絡(luò)服務(wù)器知道其位置前綴8位(表1可得)。真實(shí)位置的后綴posGeoA使用與第三方服務(wù)器共享的秘鑰SKA加密EnSKA(posGeoA)。此時(shí),位置編碼前綴即代表了用戶A愿意與社交網(wǎng)絡(luò)服務(wù)器共享的位置區(qū)域RFA(preGeoA)。最后,用戶A將該位置區(qū)域以及加密后綴發(fā)送給社交網(wǎng)絡(luò)服務(wù)器,消息格式為(IDA,ts,EnPrKA(ts,IDA),RA,RFA(preGeoA),EnSKA(posGeoA)),其中ts為時(shí)間戳,用于防止重放攻擊,EnPrKA(ts,IDA)為用戶A的簽名,RA為用戶真實(shí)的鄰居查找范圍。社交網(wǎng)絡(luò)服務(wù)器收到消息之后,首先使用用戶A的公鑰驗(yàn)證用戶的身份,若為合法用戶,則將該消息中的用戶位置信息存儲(chǔ)于用戶信息表中,格式為<IDA,PuKA,RA,RFA(preGeoA),EnSKA(posGeoA)>。在近鄰檢測階段,當(dāng)用戶A請(qǐng)求近鄰檢測查詢時(shí),如圖3所示,其以位置區(qū)域RFA的外接圓為中心,以搜索范圍RA為半徑,得到要查詢的鄰居區(qū)域SearchReigonA。這里存在兩種情況,如圖4所示,若用戶A的鄰居區(qū)域可以在一個(gè)矩形框內(nèi),則該矩形框?yàn)橛脩羯蟼鹘o社交網(wǎng)絡(luò)服務(wù)的查詢區(qū)域SearchReigonA,用戶將該區(qū)域發(fā)送給服務(wù)器,消息格式為(IDA,“neighbor”,SearchReigonA);若鄰居區(qū)域不在矩形框內(nèi),而是超出了矩形框,則用戶A將連同其位置在內(nèi)的鄰接八個(gè)矩形區(qū)域一起發(fā)送給社交網(wǎng)絡(luò)服務(wù)器,作為鄰居的查詢區(qū)域,每個(gè)鄰接區(qū)域分別給出其與用戶A所在區(qū)域的位置關(guān)系posRelative,消息格式為(IDA,“neighbor”,)。社交網(wǎng)絡(luò)服務(wù)器收到請(qǐng)求之后,執(zhí)行鄰近檢測鄰居初選階段:1)首先訪問用戶信息表,將每個(gè)用戶上傳的位置區(qū)域RF(preGeo)與用戶A查詢區(qū)域SearchReigonA做計(jì)算,區(qū)域存在交集的用戶即為候選鄰近用戶;這里,由于每個(gè)區(qū)域都使用Geohash編碼,所以判斷兩個(gè)區(qū)域是否存在交集,只需判斷其他用戶的位置前綴是否包含用戶A的查詢區(qū)域前綴即可,如圖5所示,用戶B的位置區(qū)域前綴包含用戶A的查詢區(qū)域前綴,因此他們存在交集,而用戶C的位置區(qū)域前綴未包含,因此其與用戶A的查詢區(qū)域不存在交集。2)接著,服務(wù)器將每個(gè)候選用戶的位置區(qū)域前綴除去與查詢區(qū)域SearchReignA編碼相同的部分,留下不同的前綴部分DiffPre;3)最后將每個(gè)候選用戶的ID連同他們的后綴位置密文EnSK(posGeo)、前綴部分DiffPre、用戶A的后綴位置密文EnSKA(posGeoA)、查詢范圍RA和區(qū)域SearchReignA編碼前綴位數(shù)preN一起發(fā)送給第三方服務(wù)器,消息格式為(IDA,RA,EnSKA(posGeoA),preN,)。這里,若用戶A的查詢區(qū)域包含其鄰接的8個(gè)區(qū)域,則社交網(wǎng)絡(luò)服務(wù)器需建立9個(gè)候選用戶集,將具有相同編碼前綴的候選用戶分為同一個(gè)候選集,連同每個(gè)鄰接區(qū)域與用戶A所在區(qū)域的位置關(guān)系一起,此時(shí)消息格式則為(IDA,RA,preN,EnSKA(posGeoA),)。第三方服務(wù)器收到消息之后,執(zhí)行鄰近檢測真正鄰居篩選階段:1)首先服務(wù)器解密獲得所有用戶包括用戶A的位置后綴posGeo。2)接著,利用用戶A的區(qū)域SearchReignA編碼前綴位數(shù)preN可以將所有候選用戶映射在一定的范圍內(nèi),即將所有用戶以及用戶A映射到同一個(gè)矩形框中RecReign。若存在9個(gè)查詢區(qū)域,則每個(gè)候選用戶集對(duì)應(yīng)的用戶則為同一個(gè)矩形框中。3)然后根據(jù)每個(gè)候選用戶的前綴部分DiffPre以及位置后綴posGeo可以得出每個(gè)候選用戶位于矩形框RecReign中的哪個(gè)小矩形框中。這里,如圖6所示,對(duì)于只有一個(gè)查詢區(qū)域,假設(shè)區(qū)域SearchReignA編碼前綴位數(shù)preN為5位數(shù),則通過表1可以確定候選用戶位于邊長為4.9km*4.9km的矩形框中。接著根據(jù)用戶A和用戶B的前綴部分DiffPre和位置后綴posGeo以及他們的位數(shù)和(原為Base32的4位,為了方便說明,假設(shè)是6比特位)可以得出它們所在的小矩形框位置以及小矩形框的邊長為612.5m(6比特位即6次劃分,則可以得到64個(gè)小矩形,大矩形RecReign的每個(gè)邊長有8個(gè)小矩形,由大矩形RecReign邊長長度除于8個(gè)小矩形即為每個(gè)小矩形的邊長長度)。然后我們以每個(gè)用戶所在小矩形的中心位置作為它們的近似位置,并借助C點(diǎn)利用勾股定理算出用戶A與B之間的距離。若該距離cAB<=RA,則認(rèn)為B為A的鄰居,反之則不是。對(duì)于有9個(gè)查詢區(qū)域的情況,服務(wù)器根據(jù)社交網(wǎng)絡(luò)服務(wù)器給出的與用戶A所在區(qū)域的位置關(guān)系posRelative還原出區(qū)域位置,并將各候選集用戶對(duì)應(yīng)到其所在查詢區(qū)域內(nèi)。如圖7所示,與單個(gè)查詢區(qū)域情況一樣,假設(shè)每個(gè)查詢區(qū)域的邊長為為4.9km*4.9km,且用戶A和用戶B的前綴部分DiffPre和位置后綴posGeo以及他們的位數(shù)和為6比特位,可以得出它們所在的小矩形框位置以及小矩形框的邊長為612.5m。然后我們以每個(gè)用戶所在小矩形的中心位置作為它們的近似位置,并借助C點(diǎn)利用勾股定理算出用戶A與B之間的距離。若該距離cAB<=RA,則認(rèn)為B為A的鄰居,反之則不是。4)最后,第三方服務(wù)器將最終的鄰居用戶集發(fā)送給社交網(wǎng)絡(luò)服務(wù)器。社交網(wǎng)絡(luò)服務(wù)器收到之后,將該鄰居用戶集發(fā)送給用戶A。本發(fā)明提出的近鄰檢測方法,使用Geohash編碼將用戶的位置信息分成前后綴兩部分,分別由社交網(wǎng)絡(luò)服務(wù)器和第三方服務(wù)器處理,使得兩者都無法獲得用戶完整的位置信息,從而有效解決傳統(tǒng)近鄰檢測方法中存在的位置隱私暴露問題。該方法在社交網(wǎng)絡(luò)中具有很大的實(shí)用前景。以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。當(dāng)前第1頁1 2 3