一种基于移动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