1.一种面向海量同等请求的k-匿名位置隐私保护方法,其特征在于包括以下步骤:
步骤1、以q=(id,loc,t,qry,d,k)的六元组形式表示位于某一特定位置的用户请求消息,其中id是发出请求的用户id,loc是发出请求的位置,含(x,y)分量,t是发出请求的时间,qry是请求查询的POI信息,d是匿名服务器查询到的POI到loc的距离,k是用户指定的匿名参数,类型为整型;
步骤2、匿名服务器收到上述用户请求消息q后,对该请求消息进行匿名处理,生成请求消息Q,并发送给LBS服务器;
步骤2-1:匿名服务器根据用户请求消息q中的qry判断该用户请求消息属于哪种POI类型,根据该POI类型加入请求队列Clu_queue[i]中,若加入成功则跳转执行步骤2-4,否则说明该POI类型的消息簇目前不存在,继续执行步骤2-2;
步骤2-2:请求队列中建立新的簇Clu_queue[i](簇中目前只有唯一的请求消息q,并标记其为qi1),簇的属性包括:覆盖所有用户请求消息的匿名域圆心Oi和相应半径ri,簇中各请求消息间的最大距离MAXi和连接该最大距离两端的消息,匿名参数kmax-i,簇中请求消息的个数ni和创建时间Ti;其中,kmax-i等于簇中所有请求消息的k值的最大值,初始值为qi1.k;
Ti等于qi1.t且不再改变,其余参数的初始值为:Oi(0,0),ri=0,MAXi=0,ni=1;
步骤2-3:在系统时间阈值到来之前,Clu_queue[i]继续等待下一个用户请求消息,若有消息到来则返回执行步骤2-1;如果一直没有新的消息加入簇,若当前时间与簇创建时间Ti的差值达到系统时间阀值tout,则判断ri
步骤2-4:若当前簇Clu_queue[i]仅有一个请求消息qi1,即当前消息q为第二个消息,则需要计算其圆心坐标Oi(ai,bi)为两个消息的位置首位相连后直线的中点,相应半径ri为该中点到直线任一端点的距离,MAXi为该直线的长度;若当前簇不止一个请求消息,则忽略该步骤直接执行步骤2-5;
步骤2-5:计算用户请求消息的位置q.loc到簇Clu_queue[i]圆心Oi(ai,bi)的距离dis(q.loc,Oi),距离计算公式为 判断dis(q.loc,Oi)≤ri是否成立,若不成立则说明q的位置在簇外,此时执行步骤2-6;否则若成立则说明q的位置在簇内或簇边界上,此时跳转执行步骤2-8;
步骤2-6:计算用户请求消息q与簇Clu_queue[i]中已有的各个用户请求消息间距离的最大值MAX’i=Max(dis(qi1.loc,q.loc),dis(qi2.loc,q.loc),…,dis(qi(n-1).loc,q.loc),dis(qin.loc,q.loc),MAXi),其中MAXi为当前请求消息到来前求得的最大值;暂时将请求消息q标记为qi(n+1),同时记下连接最大距离MAX’i两端的请求消息位置qiu.loc和qiv.loc,1≤u,v≤n+1且u≠v;以qiu.loc和qiv.loc的中点muv-i为圆心, 为半径作圆,判断其余各请求消息位置到muv-i的距离是否小于等于 若成立则说明其余各请求消息在该圆内,此时新的圆心为muv-i, 并跳转执行步骤2-8,否则执行步骤2-7;
步骤2-7:遍历当前簇中所有的请求消息,找出某个请求消息的位置qiw.loc,该位置将与qiu.loc和qiv.loc形成最小夹角,计算公式为然后以qiw.loc、qiu.loc和qiv.loc三点作
外接圆,通过公式:a1=qiv.loc.x-qiu.loc.x,b1=qiv.loc.y-qiu.loc.y,c1=(a12+b12)/2,a2=qiw.loc.x-qiu.loc.x,b2=qiw.loc.y-qiu.loc.y,c2=(a22+b22)/2,e=a1*b2-a2*b1,E.x=qiu.loc.x+(c1*b2-c2*b1)/e,E.y=qiu.loc.y+(a1*c2-a2*c1)/e可以计算出圆心E,半径rE则为dis(qiw.loc,E);判断rE≤rh是否成立,其中rh为系统设定的匿名域半径的上阀值常量,用于防止匿名域过大所导致的LBS服务质量降低;若成立则圆心Oi(ai,bi)替换为E,半径ri=rE,然后执行步骤2-8;若不成立则以超出匿名范围为由拒绝当前用户请求并告知用户重新发起请求或者重新寻找匿名服务器;
步骤2-8:将当前簇的消息个数ni值加1,并计算k’max-i=Max(kmax-i,q.k),其中kmax-i为请求消息q加入之前以此法计算出的最大值;判断kmax-i>ni是否成立,若成立则说明当前簇Clu_queue[i]未达到匿名参数要求,此时返回执行步骤2-3,若不成立则说明Clu_queue[i]已经达到匿名参数要求,此时继续执行步骤2-9;
步骤2-9:匿名服务器创建一条发送消息Q=(ASR,con)发送给LBS服务器,其中ASR是以点Oi为圆心,ri+d为半径的匿名域,con是请求查询ASR范围的POI信息;步骤3、LBS服务器根据收到的请求消息Q将查询结果W返还给匿名服务器;
步骤4、匿名服务器接收到服务器返还的查询结果W后,根据W对当前簇中各个请求消息进行遍历查询,并根据各个用户的位置过滤出它们各自需要的真实结果返还给各个用户,并且清空当前簇的所有消息。