一種基于移動ap的近鄰檢測方法【
技術領域:
】[0001]本發明涉及一種基于移動AP的近鄰檢測方法,適用于社交網絡,在保護用戶位置隱私的前提下,為用戶找出附近的鄰居。【
背景技術:
】[0002]哈希表(Hashtable,也叫散列表),是根據關鍵碼值(Keyvalue)而直接進行訪問的一種數據結構。也就是說,它通過把關鍵碼值映射到表中的一個位置來訪問記錄。在不需比較的情況下便可直接取得所查記錄,以加快查找的速度。這個映射函數稱為哈希函數。構造哈希函數常用的方法有:1)直接定址法;2)數字分析法;3)平方取中法;4)折疊法;5)除留取余法;6)隨機數法。此外,不同的關鍵字可能映射得到同一散列地址,這種現象稱為碰撞。因此,還需要有處理碰撞的方法,處理沖突常用的方法有:1)開放定址法;2)再哈希法;3)鏈地址法;4)建立一個公共溢出區。[0003]現如今,移動互聯網的快速發展使得WIFI技術得到了極大的普及與應用。隨著WIFI熱點(無線AP)數量的與日倶增,人們在大部分城市地區都可搜索到眾多無線AP信號。當用戶搜索無線AP時,每個AP信號里包含有SSID和BSSID這兩項信息。SSID指的是服務集標識,就是我們搜索到的AP的名字,BSSID指的是AP的MAC地址。不同的AP可以有相同的SSID,但每一個AP的MAC地址是固定的,不同的AP對應的MAC地址都不一樣。所以準確的說,一個AP可以由一個MAC地址來唯一的標識。[0004]隨著移動互聯網以及社交網絡的迅速發展,以微信、Facebook、Twitter為代表的SNS網站發展非常迅猛,用戶數量也以驚人的速度增長。現今越來越多的用戶使用類似找"附近的人"、"附近餐館"等近鄰檢測服務,使得近鄰檢測服務成為社交網絡中的一種基本服務。傳統的近鄰檢測方法需要用戶向服務器上傳其地理位置信息,以便找出與該位置鄰近的其他用戶。該傳統方法向服務器泄露了用戶的位置信息,如果服務器存在安全漏洞,或者內部人員濫用這些位置信息,將會導致用戶位置隱私的泄露,存在安全隱患。同時,由于現有AP的位置大多放置在固定的地方,并且G〇〇gle、Skyh〇〇k等公司采集的WIFIAP數據庫,已經可以得到大多數AP的詳細位置。當移動物體連接到某個AP訪問點時,用戶的位置也就可以較精確地對應到一個經煒度,進而推斷出用戶曾到過的位置或軌跡。因此,通過目前固定的AP來為用戶提供近鄰檢測的服務,有可能存在暴露用戶位置隱私的風險。進一步,為了防止某些區域不存在AP而導致無法提供近鄰檢測服務的情況,綜上所述,本發明最終提出了一種將移動節點升級為AP的近鄰檢測方法。【
發明內容】[0005]本發明的目的是提供一種基于移動AP的近鄰檢測方法,解決了傳統近鄰檢測方法會泄露用戶的位置信息,嚴重情況下將會危害到用戶隱私的問題;同時,采用移動AP,可有效防止使用靜態AP帶來的分布不均勻問題以及暴露用戶位置的風險。[0006]本發明采用以下技術方案實現:一種基于移動AP的近鄰檢測方法,其特征在于,包括以下步驟:首先每個移動用戶兼職充當信標節點即移動AP節點,周期性地發出信標信號,為其他尋找鄰居的用戶提供位置參照;當移動用戶查找鄰居時,只需向服務器提交其鄰居AP列表以及請求的鄰居跳數;所述服務器通過計算這些鄰居AP列表間是否存在交集,從而發現請求用戶間的鄰居關系。[0007]進一步的,所述的鄰居AP列表存儲的是每個AP的MAC地址,用于唯一標識一個AP。[0008]在本發明一實施例中,用戶發射信號的周期由發射信號時間與等待時間組成,其中,發射信號的時間為固定值10秒,而等待發射信標信號的時間由以下算法決定:步驟1:確定鄰居度K,設自身的鄰近用戶數為N,N為自然數,則該用戶的鄰居度K=Pogjm》〗:;步驟2:從整數集合[0,1,···,2Κ-1]中隨機選擇某個整數r;步驟3:根據r,計算出該用戶的等待時間T=r*t,其中t為一個預設的時間值。[0009]在本發明一實施例中,服務器通過計算這些鄰居AP列表間是否存在交集的具體步驟:1)、首先遍歷用戶的鄰居AP列表,利用哈希函數BKDRhash將表中的每個AP生成對應的哈希值Key,并根據該哈希值Key查找AP-用戶列表;2)、如果查找為空,證明該AP為新的參照,則將當前用戶作為該AP的第一個用戶并插入AP-用戶列表;若不為空,則將該AP項對應空間的用戶集加入鄰居列表;3)、接著判斷鄰居跳數hop是否大于1;4)、若不是,則返回鄰居列表,查找結束;若是,則根據上一跳鄰居的AP列表重新計算哈希值Key,將哈希值Key對應的用戶集里除上一跳鄰居以外的其他用戶加入鄰居列表,作為用戶的下一跳鄰居,此時,鄰居跳數hop減1,返回步驟3)。[0010]進一步的,所述用戶的鄰居AP列表以哈希表的方式進行存儲,通過哈希函數BKDRhash將用戶的ID生成對應哈希值Key,Key值對應空間存放該用戶的鄰居AP列表;所述AP-用戶列表也以哈希表的方式存儲AP的鄰居用戶表,利用函數BKDRhash將每個AP生成哈希值Key,Key值對應空間存放AP的鄰居用戶集,每個AP項下的用戶互為鄰居。[0011]進一步的,鄰居跳數hop的取值大小由請求用戶決定,其用于擴大鄰居的搜索范圍,即尋找"鄰居的鄰居",通過不斷地向外擴大鄰居搜索范圍,尋找多跳之外的鄰居。[0012]進一步的,哈希表里每個AP項下的用戶都設有一個生存時間TTL,在該時間內的用戶為有效用戶,超過這個時間的用戶將從哈希表中刪除;假設在該AP原始信號覆蓋范圍內的用戶移動至信號外的d距離都仍認為其在該AP節點的有效信號覆蓋范圍內,仍為該AP節點下的有效用戶,當用戶一直處于該AP原始信號覆蓋范圍內,TTL取值無窮大;當用戶初始位于該AP節點原始信號覆蓋邊界,并以其最大速度¥_\向信號外圍移動,則TTL取到最小值,BPTTL的取值范圍為:[0013]在本發明一實施例中,TTL的取值范圍為1-5分鐘。[0014]與現有技術相比:本發明提出的近鄰檢測方法,無需用戶提供其自身的位置信息,并且不依賴于靜態AP節點,能有效解決傳統近鄰檢測方法中存在的位置隱私暴露問題。因此,在社交網絡應用場景中具有很大的實用價值。【附圖說明】[0015]圖1是基于移動AP的近鄰檢測方法系統框架圖;圖2是AP列表匹配流程圖;圖3是AP列表存儲結構圖;圖4是多跳擴大鄰居搜索范圍圖。【具體實施方式】[0016]下面結合附圖和具體實施方對本發明做進一步說明。[0017]-種基于移動AP的近鄰檢測方法,其特征在于,包括以下步驟:首先每個移動用戶兼職充當信標節點即移動AP節點,周期性地發出信標信號,為其他尋找鄰居的用戶提供位置參照;當移動用戶查找鄰居時,只需向服務器提交其鄰居AP列表以及請求的鄰居跳數;所述服務器通過計算這些鄰居AP列表間是否存在交集,從而發現請求用戶間的鄰居關系。系統框架圖參見圖1。[0018]進一步的,所述的鄰居AP列表存儲的是每個AP的MAC地址,用于唯一標識一個AP。[0019]在本發明一實施例中,用戶發射信號的周期由發射信號時間與等待時間組成,其中,發射信號的時間為固定值10秒,而等待發射信標信號的時間由以下算法決定:步驟1:確定鄰居度K,設自身的鄰近用戶數為N,N為自然數,則該用戶的鄰居度Κ=?_2_·Ι·賴;步驟2:從整數集合[0,1,···,2Κ-1]中隨機選擇某個整數r;步驟3:根據r,計算出該用戶的等待時間T=r*t,其中t為一個預設的時間值。[0020]在本發明一實施例中,服務器通過計算這些鄰居AP列表間是否存在交集的具體步驟:1)、首先遍歷用戶的鄰居AP列表,利用哈希函數BKDRhash將表中的每個AP生成對應的哈希值Key,并根據該哈希值Key查找AP-用戶列表;2)、如果查找為空,證明該AP為新的參照,則將當前用戶作為該AP的第一個用戶并插入AP-用戶列表;若不為空,則將該AP項對應空間的用戶集加入鄰居列表;3)、接著判斷鄰居跳數hop是否大于1;4)、若不是,則返回鄰居列表,查找結束;若是,則根據上一跳鄰居的AP列表重新計算哈希值Key,將哈希值Key對應的用戶集里除上一跳鄰居以外的其他用戶加入鄰居列表,作為用戶的下一跳鄰居,此時,鄰居跳數hop減1,返回步驟3)。具體流程參見圖2。上述過程通過迭代的方式進行,直到查找的鄰居跳數滿足用戶的請求。[0021]進一步的,所述用戶的鄰居AP列表以哈希表的方式進行存儲,通過哈希函數BKDRhash將用戶的ID生成對應哈希值Key,Key值對應空間存放該用戶的鄰居AP列表;所述AP-用戶當前第1頁1 2