当前位置: 首页 > 专利查询>东北大学专利>正文

一种基于LBS的安全kNN查询方法技术

技术编号:20081458 阅读:31 留言:0更新日期:2019-01-15 02:45
本发明专利技术属于数据隐私保护领域,提出一种基于LBS的安全kNN查询方法,流程包括:数据拥有者生成密钥对和加密索引结构,并将加密索引结构发送给服务器C1,将公钥发送给服务器C1、C2和用户,将私钥发送给服务器C2;用户对自己的查询,使用公钥加密生成加密查询请求,并将该查询请求发送给服务器C1;服务器C1得到加密的索引结构和加密的查询请求后,定义安全两方计算;基于安全两方计算,设计安全kNN查询协议;返回查询结果给用户;本发明专利技术有效保护服务器上数据的隐私、用户的查询请求的隐私、用户的查询结果的隐私、查询过程中的访问模式,且提供了精确的查询结果,适用于处理能力低的移动设备,并且大大提高了完成查询的速度。

A secure kNN query method based on LBS

The invention belongs to the field of data privacy protection, and proposes a secure kNN query method based on LBS. The process includes: data owner generates key pairs and encrypted index structure, sends encrypted index structure to server C1, sends public key to server C1, C2 and user, and sends private key to server C2; users use public key encryption to generate encrypted query for their own query. After the server C1 obtains the encrypted index structure and the encrypted query request, it defines the secure two-party computation; designs the secure kNN query protocol based on the secure two-party computation; returns the query result to the user; the invention effectively protects the privacy of the data on the server, the privacy of the user's query request and the privacy of the user's query result. The access mode in the query process and the precise query results are provided. It is suitable for mobile devices with low processing power, and greatly improves the speed of query completion.

【技术实现步骤摘要】
一种基于LBS的安全kNN查询方法
本专利技术属于数据隐私保护领域,具体涉及一种基于LBS的安全kNN查询方法。
技术介绍
近年来,随着移动网络和智能手机的快速发展,基于位置的服务(LBS)在社交、生活服务、在线购物等各个方面都有着广泛的应用。其中,kNN查询,即查询距离用户位置最近的k个近邻点,是一个基础且具有代表性的重要查询。然而,LBS在为我们带来巨大生活便利的同时,也给我们带来了隐私泄露的隐患。从用户隐私的角度出发,在进行基于位置的查询时,服务器在响应用户请求的同时可以轻易收集用户的真实位置,并从中推断出如宗教信仰、家庭住址、日常生活轨迹等隐私信息。从企业的角度出发,很多企业通过数据外包的形式将数据外包给第三方服务器,由第三方服务器来相应用户的查询请求。在这个过程中,公司数据对第三方服务器可知,而一些秘密仓库地址或者录入的员工家庭住址的数据库是隐私信息,这些信息的泄露会造成公司重大的经济损失。如何在提供基于位置的查询服务的同时,保护数据和查询请求的安全性具有十分重要的现实意义。目前,基于加密的隐私保护方法,对敏感信息进行加密,由于服务器没有用于解密的密钥,很难得到关于加密后数据的任何隐私信息,能够保护前文提到的隐私泄露情况。但加密计算的中间结果依旧可以泄露数据访问模式,即哪些数据被访问,往往容易遭受推理攻击。同时,在这个过程中,服务器需要在密文上进行计算从而得到查询结果,然而目前所提出的方法,由于密文计算的复杂性,往往需要耗费较大的时间代价,使得查询服务的安全性和查询代价较难均衡。
技术实现思路
本专利技术针对现有技术的不足,并对同态加密方案进行有效改进及补充,为了解决基于位置的kNN查询中的隐私信息泄露问题,本专利技术提出了一种基于LBS的安全kNN查询方法。本专利技术采取的技术方案是基于Paillier同态加密系统,由于该加密方案只能完成部分同态操作,即加法同态操作,本专利技术使用双服务器框架,在该框架中,数据拥有者(DO)拥有原始数据和Paillier同态加密的公钥pk和私钥sk,用户User拥有查询请求和公钥pk,云服务器C1拥有加密索引结构和公钥pk,云服务器C2拥有公钥pk和私钥sk。基于该系统框架和两方安全计算的半诚信模型,本专利技术设计了加密索引结构——安全Voronoi图SVD与安全网格划分SG和实现基础密文计算操作的安全子协议,并基于该索引结构和子协议设计了安全kNN查询协议。通过该协议,我们实现了满足上述需求的安全kNN查询,具体步骤如下:步骤1、数据拥有者DO生成密钥对(pk,sk)和加密索引结构,并将加密索引结构发送给服务器C1,将公钥pk发送给服务器C1、C2和用户User,将私钥sk发送给服务器C2;加密索引结构包括:安全Voronoi图SVD和安全网格划分SG;生成密钥对(pk,sk)使用Paillier加密方案,其中,公钥pk用于对数据的加密,私钥sk用于对数据的解密;生成加密索引结构的具体步骤如下:(1)生成安全Voronoi图(SVD):①进行Voronoi图划分:DO拥有数据集D={p1,…,pn},其中数据点pi={x,y}。对数据集D进行Voronoi图划分。Voronoi图将D所在的平面划分为n个凸多边形,称为Voronoi区域,每个Voronoi区域vi有且仅有一个数据点pi,称为对应Voronoi区域vi的种子节点。划分两个Voronoi区域的边,是这两个Voronoi区域种子节点的垂直平分线。对于一个Voronoi区域vi,落在该区域内的点q的最近邻为该区域的种子节点pi。由Voronoi图的性质可知,查询点q的kNN对象存在于先前计算的(k-1)NN的相邻Voronoi区域的种子结点之中。②依据该Voronoi划分,将Voronoi图中的所有Voronoi区域以随机乱序存入数组将区域vi在数组中对应的索引号作为它的id。对于任一个Voronoi区域vi,用一个二元组表示,其中,(xi,yi)为该区域vi对应种子节点pi的坐标,aij为该区域vi的相邻Voronoi区域id,(t1)为该Voronoi区域相邻Voronoi区域数量。③添加假数据:为了避免攻击者通过查询到的Voronoi区域的相邻Voronoi区域的数量来辨别该区域,我们通过在数组中添加的假的相邻Voronoi区域id保持相邻区域的数量为定值t1,此处添加的假id均为数组中存在的真实的索引号,但其均不是对应区域的相邻id且各不相同。这些假的id在后续查询过程中都可以被剪枝,后面查询过程中,每次从读取的值中选择一个最小值,执行“读取-选择”操作k次,即可得到最终的k个结果。因为每次读取的这些id中包含最小值的点的id,因此随机添加的假id对应的点在选择时不会被选择,相当于被剪枝。④数据压缩:为了充分利用Paillier的明文空间,通常Paillier有1024比特位的明文空间,对数组V存储的区域vi对应的坐标和相邻区域的id使用如下公式进行压缩:其中λ为压缩的数据的个数,σ为数据压缩的比特位长,为了方面在后续协议中对压缩的id添加随机数扰动,σ大于数据本身的比特位长。通过该计算,我们可以将多个数表示为一个数,进行一次加密,充分利用了Paillier的明文空间,减少了加密次数。⑤对数组使用pk进行加密,得到SVD。即得到加密Voronoi划分SVD,每项存储该Voronoi区域对应的加密二元组(2)生成安全网格划分(SG):①在上述Voronoi划分的基础上进行网格划分,网格划分将Voronoi划分为m个网格,每个网格的边长用向量w表示。该网格划分可以存储为矩阵矩阵行和列的索引号分别对应该网格在两个维度上的坐标。每个网格存储它所覆盖到的Voronoi区域的id,即和它相交的Voronoi区域的id,表示为其中oij为该区域gi相交的Voronoi区域的id,(t2)为该区域相交Voronoi区域的数量。②添加假数据:为了避免攻击者通过查询到的网格相交的Voronoi区域的数量来辨别该网格,我们通过在矩阵中添加的假的相邻Voronoi区域id保持每个网格存储的id的数量为定值t2,此处添加的假id均为数组中存在的真实的索引号,但其均不是和该网格相交区域的id且各不相同。这些假的id在后续查询过程中都可以被剪枝,后面查询过程中,每次从读取的值中选择一个最小值,执行“读取-选择”操作k次,即可得到最终的k个结果。因为每次读取的这些id中包含最小值的点的id,因此随机添加的假id对应的点在选择时不会被选择,相当于被剪枝。③数据压缩:为了充分利用Paillier的明文空间,对每个网格存储的内容同样使用公式(1)进行压缩。通过该计算,我们可以将多个数表示为一个数,进行一次加密,充分利用了Paillier的明文空间,减少了加密次数。④用公钥pk进行加密,得到SG对矩阵和向量w使用pk进行加密,得到SG和Epk(w)。即得到加密网格SG如图2(d)所示,每个加密网格内容表示为安全性分析:服务器C1拥有加密的数据结构但没有私钥sk,不能对数据进行解密,服务器C2拥有私钥sk但没有数据,服务器C1和C2除了数据集的大小外,不能够得到任何有关数据的有效信息,保护了数据隐私。步骤2、用户User对自己的查询Q,使用公钥本文档来自技高网...

【技术保护点】
1.一种基于LBS的安全kNN查询方法,其特征在于,包括如下步骤:步骤1、数据拥有者DO生成密钥对(pk,sk)和加密索引结构,并将加密索引结构发送给服务器C1,将公钥pk发送给服务器C1、C2和用户User,将私钥sk发送给服务器C2;步骤2、用户User对自己的查询Q,使用公钥pk加密生成加密查询请求Epk(Q),并将该查询请求发送给服务器C1,其中,向量Q=(x,y)为用户要查询的坐标,加密得到查询请求Epk(Q)={Epk(x),Epk(y)};步骤3、服务器C1得到加密的索引结构和加密的查询请求Epk(Q)后,定义安全两方计算;其中,安全两方计算包括:安全除法协议SD,安全最小值协议SMIN,安全网格计算SGC和安全Voronoi区域计算协议SVCC;关于加法同态操作采用Paillier加法加密方案,乘法同态操作采用Paillier乘法加密方案;步骤4、基于安全两方计算,设计安全kNN查询协议SkNN;该协议在服务器C1端输入加密的查询请求Epk(Q)和加密的索引结构以及Epk(w),通过C1和C2的安全两方计算,在加密索引结构上查找距离Epk(Q)最近的k个加密点,这个k个加密的点即为kNN查询结果Epk(R),在C1端获得;步骤5、返回查询结果给用户User:服务器C1拥有加密的查询结果Epk(R),服务器C2拥有密钥sk,对k个查询结果,服务器C1分别生成两个随机数,并将这两个随机数进行压缩加密,使用压缩加密后的随机数对结果进行扰动,得到密文计算结果,服务器C1将密文计算结果发送给服务器C2,将k对随机数发送给用户User;服务器C2对扰动后结果解密,得到解密后结果,并得到k组扰动后坐标值;C2将k组扰动后坐标值发送给用户User;用户User从服务器C1收到k组随机数,从服务器C2收到k组扰动后坐标值,用户User将每个扰动后坐标值相应的减去扰动的随机数,即可得到最终的查询结果。...

【技术特征摘要】
1.一种基于LBS的安全kNN查询方法,其特征在于,包括如下步骤:步骤1、数据拥有者DO生成密钥对(pk,sk)和加密索引结构,并将加密索引结构发送给服务器C1,将公钥pk发送给服务器C1、C2和用户User,将私钥sk发送给服务器C2;步骤2、用户User对自己的查询Q,使用公钥pk加密生成加密查询请求Epk(Q),并将该查询请求发送给服务器C1,其中,向量Q=(x,y)为用户要查询的坐标,加密得到查询请求Epk(Q)={Epk(x),Epk(y)};步骤3、服务器C1得到加密的索引结构和加密的查询请求Epk(Q)后,定义安全两方计算;其中,安全两方计算包括:安全除法协议SD,安全最小值协议SMIN,安全网格计算SGC和安全Voronoi区域计算协议SVCC;关于加法同态操作采用Paillier加法加密方案,乘法同态操作采用Paillier乘法加密方案;步骤4、基于安全两方计算,设计安全kNN查询协议SkNN;该协议在服务器C1端输入加密的查询请求Epk(Q)和加密的索引结构以及Epk(w),通过C1和C2的安全两方计算,在加密索引结构上查找距离Epk(Q)最近的k个加密点,这个k个加密的点即为kNN查询结果Epk(R),在C1端获得;步骤5、返回查询结果给用户User:服务器C1拥有加密的查询结果Epk(R),服务器C2拥有密钥sk,对k个查询结果,服务器C1分别生成两个随机数,并将这两个随机数进行压缩加密,使用压缩加密后的随机数对结果进行扰动,得到密文计算结果,服务器C1将密文计算结果发送给服务器C2,将k对随机数发送给用户User;服务器C2对扰动后结果解密,得到解密后结果,并得到k组扰动后坐标值;C2将k组扰动后坐标值发送给用户User;用户User从服务器C1收到k组随机数,从服务器C2收到k组扰动后坐标值,用户User将每个扰动后坐标值相应的减去扰动的随机数,即可得到最终的查询结果。2.根据权利要求1所述一种基于LBS的安全kNN查询方法,其特征在于,所述加密索引结构包括:安全Voronoi图SVD和安全网格划分SG:(1)生成安全Voronoi图SVD:①进行Voronoi图划分:DO拥有数据集D={p1,…,pn},其中数据点pi={x,y},对数据集D进行Voronoi图划分,Voronoi图将D所在的平面划分为n个凸多边形,称为Voronoi区域,每个Voronoi区域vi有且仅有一个数据点pi,称为对应Voronoi区域vi的种子节点,划分两个Voronoi区域的边,是这两个Voronoi区域种子节点的垂直平分线,对于一个Voronoi区域vi,落在该区域内的点q的最近邻为该区域的种子节点pi,由Voronoi图的性质可知,查询点q的kNN对象存在于先前计算的(k-1)NN的相邻维诺单元的种子结点之中;②依据该Voronoi划分,将Voronoi图中的所有Voronoi区域以随机乱序存入数组将区域vi在数组中对应的索引号作为它的id,对于任一个Voronoi区域vi,用一个二元组表示,其中,(xi,yi)为该区域vi对应种子节点pi的坐标,aij为该区域vi的相邻Voronoi区域id,(t1)为该Voronoi区域相邻Voronoi区域数量;③添加假数据:通过在数组中添加的假的相邻Voronoi区域id保持相邻区域的数量为定值t1,此处添加的假id均为数组中存在的真实的索引号,但其均不是对应区域的相邻id且各不相同;④数据压缩:对数组存储的区域vi对应的坐标和相邻区域的id使用如下公式进行压缩:其中,λ为压缩的数据的个数,σ为数据压缩的比特位长,σ大于数据本身的比特位长;⑤对数组使用pk进行加密,得到SVD,即得到加密Voronoi划分SVD,每项存储该Voronoi区域对应的加密二元组(2)生成安全网格划分SG:①在Voronoi划分的基础上进行网格划分:网格划分将Voronoi划分为m个网格,每个网格的边长用向量w表示,该网格划分可以存储为矩阵矩阵行和列的索引号分别对应该网格在两个维度上的坐标,每个网格存储它所覆盖到的Voronoi区域的id,即和它相交的Voronoi区域的id,表示为其中oij为该区域gi相交的Voronoi区域的id,(t2)为该区域相交Voronoi区域的数量;②添加假数据:通过在矩阵中添加的假的相邻Voronoi区域id保持每个网格存储的id的数量为定值t2,此处添加的假id均为数组中存在的真实的索引号,但其均不是和该网格相交区域的id且各不相同;③数据压缩:对每个网格存储的内容同样使用公式(1)进行压缩;④用公钥pk进行加密,得到SG:对矩阵和向量w使用pk进行加密,得到SG和Epk(w),每个加密网格内容表示为3.根据权利要求1所述一种基于LBS的安全kNN查询方法,其特征在于,所述生成密钥对(pk,sk)使用Paillier加密方案,其中,公钥pk用于对数据的加密,私钥sk用于对数据的解密。4.根据权利要求1所述一种基于LBS的安全kNN查询方法,其特征在于,所述安全除法协议SD:在服务器C1端给定两个范围内加密的整数a,b,服务器C1和C2通过两方计算对两个加密数据的进行加密的截断除法,在服务器C1端得到加密的商,该协议执行时,加密的数据和商仅由服务器C1拥有,服务器C2仅拥有密钥sk;该协议的原理如公式(2)所示,对于任意的(ar1+br1r2+r3)/(br1)=a/b+r2(2)其中,且r3<r1,K为Paillier加密方案密钥的比特位大小,ldata为数据a,b的比特位长度;安全除法协议的具体步骤如下:①服务器C1生成随机数:服务器C1拥有加密的数据Epk(a),Epk(b),服务器C2拥有私钥sk,服务器C1生成满足且r3<r1的随机数r1,r2,r3;②将随机数用公钥pk加密,并发送给服务器C2:服务器C1使用生成的随机数和公钥pk计算Epk(ar1+br1r2+r3)和Epk(br1),并将它们发送给服务器C2,具体的计算公式如下:③服务器C2用私钥sk解密:服务器C2收到C1发送的Epk(ar1+br1r2+r3)和Epk(br1)后,使用私钥sk分别对它们进行解密,得到λ′a和λ′b,解密的公式如下:λ′a=Dsk(Epk(ar1+br1r2+r3))=ar1+br1r2+r3(5)λ′b=Dsk(Epk(br1))=br1(6)④服务器C2将解密后结果λ′a和λ′b,对这两个数进行除法计算,将计算得到的商使用公钥进行加密后发送给C1:服务器C2计算λ′a/λ′b(modn)并将它进行加密,mod表示取模操作,得到Epk(λ′a/λ′b),发送给服务器C1;⑤服务器C1计算得到安全除法协议的加密结果:服务器C1收到Epk(λ′a/λ′b)后,使用公式(7)计算得到加密的Epk(a/b):Epk(a/b)=Epk(λ′a/λ′b)*Epk(r2)N-1(7)其中,Epk(r2)N-1=Epk(-r2),通过该密文操作可以加密的将r2减去,N是paillier公钥pk中两个大素数乘积。5.根据权利要求1所述一种基于LBS的安全kNN查询方法,其特征在于,所述安全最小值协议SMIN:在服务器C1端给定t个范围内加密的整数和一个加密的范围值c,C1和C2通过安全两方计算加密地计算大于该范围值c的t个加密整数中的最小值,依据该最小值生成一个,和这t个加密整数一一对应以t为长度的加密序列,最小值对应加密的1,其余为加密的0,在服务器C1端得到该加密序列,该协议执行时,加密的数据和最小值序列仅由服务器C1拥有,服务器C2仅拥有密钥sk;该协议的原理为:给定t个整数对每个xi计算:x′i=xi*rmax+ri(8)其中,ri<2K-l-1,每个ri都不相同,rmax为ri中的最大值,当ri足够大时,通过公式(8),可以得到t个不相等的随机整数且x′i和xi保持相同的偏序关系;安全最小值协议SMIN的具体步骤如下:①服务器C1生成随机数:服务器C1拥有加密的数据Epk(x1),…,Epk(xt)和加密的范围值Epk(c),服务器C2拥有私钥sk,首先服务器C1生成t+1个随机数{r1,…,rt+1},满足之后选出这t+1个随机数中的最大值并记作rmax,其余的随机数重新依次记为{r1,…,rt};②服务器C1对每个加密数据进行计算,得到每个加密整数与加密范围值的差Epk(xi-c);具体计算公式如下:Epk(xi-c)=Epk(xi)*Epk(c)N-1(9)③服务器C1对每个加密的差值添加随机数:服务器C1对每个加密的差值Epk(xi-c)依据公式(8)进行计算,得到它添加随机数后的加密的扰动值Epk(θi),具体计算公式如下:④服务器C1将这t个值打乱顺序后发送给服务器C2,计算公式如下:Epk(θ′)=π(Epk(θ))(11)⑤服务器C2进行解密:服务器C2收到Epk(θ′i)后,对这些值进行解密,得到θ′i;⑥服务器C2计算θ′i中的最小值,并标记该最小值在序列θ′中对应的i为min;⑦服务器C2生成一个t长的序列Δ′,Δmin′为1,其余值为0,将序列Δ′中所有元素加密,得到Epk(Δ′),发送给服务器C1;⑧服务器C1用逆函数得到安全最小值协议加密结果:服务器C1得到序列Epk(Δ′)后,使用公式(11)的逆函数,即公式(12),得到序列Epk(Δ),具体计算公式如下:Epk(Δ)=π-1(Epk(Δ′))(12)其中,Epk(Δ)为序列Epk(Δ′)使用公式(12)得到顺序的和加密数据Epk(x1),…,Epk(xt)对应的加密的最小值映射的01序列。6.根据权利要求1所述一种基于LBS的安全kNN查询方法,其特征在于,所述安全网格计算协议SGC:在服务器C1端给定加密的网格SG、加密的网格单元的边长Epk(w)和加密的查询请求Epk(Q),C2拥有私钥sk,C1和C2通过安全两方计算加密的计算该查询所在的网格单元并取出该网格单元...

【专利技术属性】
技术研发人员:杨晓春王斌王雷霞
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁,21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1