匿踪查询方法、装置和系统及存储介质与流程

文档序号:33190354发布日期:2023-02-04 08:10阅读:32来源:国知局
匿踪查询方法、装置和系统及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及隐私计算领域,特别涉及一种匿踪查询方法、匿踪查询装置、匿踪查询系统及存储介质。


背景技术:

2.匿踪查询,也称隐私信息检索(private information retrieval,pir),用来保护用户的查询隐私,也即,数据查询方向数据提供方提交数据查询请求时,在保证数据查询方的查询信息不被泄漏的条件下完成数据查询。
3.一种基于序号的匿踪查询方法,数据查询方针对数据提供方的每条数据记录的存储序号发起一次密文请求,通过密文响应获得该存储序号相应的数据记录的标签数据。
4.经研究发现,如果想要查询多个数据记录的标签数据,则数据查询方针对多个数据记录的多个存储序号,需要通过多次密文请求和密文响应,才能获得该多个数据记录的标签数据,导致通信开销和计算开销比较大。


技术实现要素:

5.本公开实施例的匿踪查询方案,通过加密标识数据求交集的方式,在不泄露双方隐私的情况下,确定数据提供方和数据查询方的数据记录的交集,如果判定交集中的多个目标存储序号相应的多个目标标签数据被存储在同一目标明文,针对这样的多个目标存储序号,利用目标明文的索引信息的密文向数据提供方发起一次密文请求,对密文响应中的目标明文的密文进行解密,从目标明文中可获取该多个目标标签数据。从而,通过一次密文请求和密文响应,可以同时获取多个目标标签数据,降低了通信开销和计算开销,进而使得匿踪查询方案能够高效运行。
6.本公开一些实施例提出一种匿踪查询方法,包括:
7.确定第一加密标识数据集与第二加密标识数据集的交集,其中,所述第一加密标识数据集包括数据提供方的每条数据记录的加密标识数据和存储序号,所述第二加密标识数据集包括数据查询方的每条数据记录的加密标识数据,每条数据记录包括标识数据和标签数据,数据提供方的每多条数据记录的多个标签数据被存储在一个明文;
8.在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求;
9.接收数据提供方返回的密文响应,并对所述密文响应中的所述目标明文的密文进行解密得到所述目标明文;
10.从所述目标明文中获取所述多个目标标签数据。
11.在一些实施例中,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文包括:
12.根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确
定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息;
13.在多条目标数据记录的多个目标标签数据所存储的目标明文的索引信息相同的情况下,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文。
14.在一些实施例中,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息包括:
15.根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
16.根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;
17.通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的除法运算,确定出每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息。
18.在一些实施例中,从所述目标明文中获取所述多个目标标签数据包括:
19.根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置;
20.根据每条目标数据记录的每个目标标签数据在目标明文的存储位置,从所述目标明文中获取各个目标标签数据。
21.在一些实施例中,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置包括:
22.根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
23.根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;
24.通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的取模运算,确定出每条目标数据记录的每个目标标签数据在目标明文的存储位置。
25.在一些实施例中,还包括:通过提高每个明文所能存储的比特数量和降低每个标签数据占用的比特数量,增加每个明文所能存储的标签数据的数量。
26.在一些实施例中,通过提高明文的多项式次数、明文的多项式系数取值范围中的至少一项,提高每个明文所能存储的比特数量。
27.在一些实施例中,通过压缩编码方式,降低每个标签数据占用的比特数量。
28.在一些实施例中,确定第一加密标识数据集与第二加密标识数据集的交集包括:
29.按照相同的排序方式,对所述第一加密标识数据集中的加密标识数据和所述第二加密标识数据集中的加密标识数据进行升序排列或降序排列;
30.确定具有相同加密标识数据的第一加密标识数据集与第二加密标识数据集的交集。
31.在一些实施例中,数据查询方与数据提供方采用协商一致的加密方法分别对自己数据记录的标识数据进行加密生成加密标识数据。
32.在一些实施例中,所述目标明文的索引信息包括:
33.所述目标明文的索引;或者,
34.所述目标明文在各明文组成的明文矩阵的位置。
35.在一些实施例中,向数据提供方发起一次密文请求包括:将所述交集中的目标存
储序号划分为一个或多个批次,每个批次包括一个或多个组,每个组的目标存储序号对应同一目标明文,不同组的目标存储序号对应不同目标明文,针对每个批次向数据提供方发起一次密文请求,其中携带该批次的各个组对应的各个目标明文的索引信息的密文;
36.在接收数据提供方返回的密文响应之后,对所述密文响应中的各个目标明文的密文进行解密得到该批次的各个目标明文。
37.在一些实施例中,还包括:数据提供方对所述目标明文的索引信息的密文进行茫然传输扩展得到所述目标明文的索引信息的密文的目标向量,将各明文组成的明文矩阵与所述目标向量进行矩阵运算得到所述目标明文的密文。
38.本公开一些实施例提出一种匿踪查询装置,包括:
39.交集确定单元,被配置为确定第一加密标识数据集与第二加密标识数据集的交集,其中,所述第一加密标识数据集包括数据提供方的每条数据记录的加密标识数据和存储序号,所述第二加密标识数据集包括数据查询方的每条数据记录的加密标识数据,每条数据记录包括标识数据和标签数据,数据提供方的每多条数据记录的多个标签数据被存储在一个明文;
40.密文请求单元,被配置为在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求;
41.密文响应单元,被配置为接收数据提供方返回的密文响应,并对所述密文响应中的所述目标明文的密文进行解密得到所述目标明文;
42.数据获取单元,被配置为从所述目标明文中获取所述多个目标标签数据。
43.在一些实施例中,所述密文请求单元,被配置为判定多条目标数据记录的多个目标标签数据被存储在同一目标明文包括:
44.根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息;
45.在多条目标数据记录的多个目标标签数据所存储的目标明文的索引信息相同的情况下,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文。
46.在一些实施例中,所述数据获取单元,被配置为
47.根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置;
48.根据每条目标数据记录的每个目标标签数据在目标明文的存储位置,从所述目标明文中获取各个目标标签数据。
49.本公开一些实施例提出一种匿踪查询装置,包括:
50.存储器;以及,
51.耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行匿踪查询方法。
52.本公开一些实施例提出一种匿踪查询系统,包括:用于数据查询方的匿踪查询装置,以及,用于数据提供方的数据提供装置。
53.本公开一些实施例提出一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现匿踪查询方法的步骤。
附图说明
54.下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。根据下面参照附图的详细描述,可以更加清楚地理解本公开。
55.显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
56.图1示出本公开一些实施例的匿踪查询方法的流程示意图。
57.图2示出本公开一些实施例的匿踪查询系统的示意图。
58.图3示出本公开一些实施例的匿踪查询装置的结构示意图。
59.图4示出本公开另一些实施例的匿踪查询装置的结构示意图。
具体实施方式
60.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
61.除非特别说明,否则,本公开中的“第一”“第二”等描述用来区分不同的对象,并不用来表示大小或时序等含义。
62.图1示出本公开一些实施例的匿踪查询方法的流程示意图。
63.如图1所示,该实施例的匿踪查询方法包括:步骤110-170。
64.在步骤110,数据查询方与数据提供方协商加密方法,用于对自己数据记录的标识数据进行加密生成加密标识数据。步骤110-1和步骤110-2给出了一种示例。
65.在步骤110-1,数据查询方按照协商的加密方法,构造不经意伪随机函数(oblivious pseudo-random function,oprf),该函数(设为f)的密钥(也称种子)为k,该不经意伪随机函数及其密钥用于对自己数据记录的标识数据进行加密生成加密标识数据。
66.或者,数据查询方按照协商的加密方法,构造哈希函数,该哈希函数用于对自己数据记录的标识数据进行加密生成加密标识数据。
67.在步骤110-2,数据提供方按照协商的加密方法,构造不经意伪随机函数,该函数的密钥为k,该不经意伪随机函数及其密钥用于对自己数据记录的标识数据进行加密生成加密标识数据。
68.或者,数据提供方按照协商的加密方法,构造哈希函数,该哈希函数用于对自己数据记录的标识数据进行加密生成加密标识数据。
69.其中,每条数据记录包括标识数据和标签数据。标识数据用来唯一标识一条数据记录,不同数据记录的标识数据也不同。标识数据例如包括但不限于用户标识、设备标识等能够起到标识作用的数据。标签数据是指数据记录的业务数据,业务数据是业务相关的数据,不同业务对应的业务数据也不同,本公开实施例并不限定业务数据的具体类型。
70.序号身份号人名年龄10001人名13020002人名21030003人名320
71.例如,上表有3条数据记录,身份号可以作为标识数据,人名和年龄可以作为标签数据。
72.数据记录的存储序号能够表征该数据记录存储在数据库的哪一行。在数据库更新之前,数据记录在数据库中的存储序号是固定不变的,利用存储序号可实现匿踪查询。
73.数据查询方的数据记录可以存储在数据查询方的数据库(db1)。数据提供方的数据记录可以存储在数据提供方的数据库(db2)。
74.在步骤120,数据查询方和数据提供方采用协商一致的加密方法分别对自己数据记录的标识数据进行加密生成加密标识数据,并形成各自的加密标识数据集,数据提供方还将自己的加密标识数据集发送给数据查询方。步骤120-1和步骤120-2给出了一种示例。
75.在步骤120-1,数据查询方按照协商的加密方法,例如利用不经意伪随机函数及其密钥或者利用哈希函数,对自己数据记录的标识数据(即,第二标识数据集x)进行加密生成加密标识数据,形成第二加密标识数据集h
x
,所述第二加密标识数据集包括数据查询方的每条数据记录的加密标识数据。
76.在步骤120-2,数据提供方按照协商的加密方法,例如利用不经意伪随机函数及其密钥或者利用哈希函数,对自己数据记录的标识数据(即,第一标识数据集y)进行加密生成加密标识数据,形成第一加密标识数据集hy,并将第一加密标识数据集发送给数据查询方,所述第一加密标识数据集包括数据提供方的每条数据记录的加密标识数据和存储序号。
77.如果标识数据相同,则数据查询方和数据提供方针对该相同的标识数据会生成相同的加密标识数据,以便确定两方数据记录的交集。
78.在步骤130,数据查询方确定第一加密标识数据集与第二加密标识数据集的交集x’=h
x
∩hy,也即将第一加密标识数据集中与第二加密标识数据集具有相同加密标识数据的部分确定为第一加密标识数据集与第二加密标识数据集的交集。
79.在一些实施例中,确定第一加密标识数据集与第二加密标识数据集的交集包括:按照相同的排序方式,对所述第一加密标识数据集中的加密标识数据和所述第二加密标识数据集中的加密标识数据进行升序排列或降序排列;然后,确定具有相同加密标识数据的第一加密标识数据集与第二加密标识数据集的交集。从而,利用排序后的加密标识数据能更快地确定交集。
80.在步骤140,数据提供方对自己的标签数据集m’进行预处理得到明文数据m,其中,数据提供方的每多条数据记录的多个标签数据被存储在一个明文。
81.其中,步骤140可以在数据提供方响应数据查询方的查询之前的任意步骤执行,也可以预先执行。
82.明文空间是一个剩余类多项式环r
t
=z
t
[x]/(xn+1),它是一个n次多项式,系数是0,1,2,...,t-1等整数,系数的二进制表示时对应logt比特,一个明文多项式可以储存nlogt比特的数据。假设每个标签数据占用s比特,按存储序号排列的标签数据y1,y2,...,y
p
,将它们长度对齐后,将所有标签数据共p
×
s个比特,按顺序每nlogt比特放进一个明文多项式(即明文)中,一共得到n=p
×
s/(nlogt)个明文,从而完成标签数据到明文的编码。也即,对于某个标签数据来说,它会被存储在某个明文多项式(即明文)的若干个连续系数上。
[0083]
其中,nlogt/s表示一个明文多项式(即明文)所能存储的标签数据的数量,其为大于1的数值。通过提高每个明文所能存储的比特数量nlogt和降低每个标签数据占用的比特数量s,增加每个明文所能存储的标签数据的数量nlogt/s。从而,进一步提高一次密文请
求/响应所能获得的标签数据的数量,进一步降低了通信开销和计算开销。其中,通过提高明文的多项式次数n、明文的多项式系数取值范围t中的至少一项,提高每个明文所能存储的比特数量nlogt。通过压缩编码方式,降低每个标签数据占用的比特数量s。
[0084]
假设:多项式取值空间为剩余类环rq=zq[x]/(xn+1),它是一个n次多项式,系数是0,1,2,...,q-1等整数,明文多项式取值自r
t
=z
t
[x]/(xn+1),它是一个n次多项式,系数是0,1,2,...,t-1等整数,q≥t。在全同态加密算法(如bfv算法)中,密态计算操作(如明密文相乘、密文旋转等)会增加噪声,消耗噪声预算,初始的噪声预算为2logq/logt,因此明文系数范围t越大,初始预算越小,当增加的噪声累计超过初始噪声预算时,解密会失败,导致匿踪查询失败。因此,应当在不超过噪声预算的前提下选择尽量大的logt。例如,每个标签占用s=41比特,n=2048时,logt最大可以取16,超过16会导致匿踪查询失败。
[0085]
在步骤150,数据查询方在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求。
[0086]
数据查询方知晓数据提供方的数据标签到明文的编码方式,因此,数据查询方根据数据记录在数据提供方的存储序号,以及数据标签到明文的编码参数,可以确定该数据记录的标签数据被存储到哪个明文。
[0087]
其中,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文包括:根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息;在多条目标数据记录的多个目标标签数据所存储的目标明文的索引信息相同的情况下,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文。
[0088]
其中,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息包括:根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的除法运算,确定出每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息。
[0089]
其中,确定目标明文的索引信息可用以下公式表示:
[0090][0091]
其中,index表示目标明文的索引,id表示目标数据记录的目标存储序号,nlogt表示根据编码参数(多项式次数n、明文的多项式系数取值范围t)确定的每个明文所能存储的比特数量,s表示每个标签数据占用的比特数量,nlogt/s表示每个明文所能存储的标签数据的数量,表示向下取整。
[0092]
从index的公式可以看出,连续的nlogt/s个存储序号相应的标签数据对应一个明文;相应的,针对连续的nlogt/s个存储序号中的任意一个或多个存储序号,利用这些存储序号对应的同一明文的索引信息,可以向数据提供方发起一次密文请求。
[0093]
目标明文的索引index还可以转换为目标明文m[i,j]在各明文组成的明文矩阵m的位置[i,j],其中,i=index/t,j=index mod t,t表示矩阵m的维数,假设对标签数据编
码共得到n个明文,则码共得到n个明文,则
[0094]
综上所述,本实施例中的目标明文的索引信息有两种形式,第一种是目标明文的索引index,第二种是目标明文在各明文组成的明文矩阵的位置[i,j]。第二种的矩阵形式的明文查询定位方式相对于第一种的向量形式的明文查询定位方式,由于矩阵可以从行/列两个维度同时定位、且矩阵单一维度的长度远小于一维向量的长度,因此,利用第二种方式可以更快地查询定位目标明文,提高查询效率。
[0095]
数据查询方在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求。
[0096]
假设交集中的多个目标存储序号(例如id2、id4)的目标标签数据被存储在同一目标明文,利用前述公式可以确定目标明文的索引index,还可以利用前述公式i=index/t,j=index mod t,根据需要确定目标明文m[i,j]在各明文组成的明文矩阵m的位置[i,j]。
[0097]
如果采用向量形式的明文查询定位方式,则数据查询方利用自身公钥进行同态加密(如bfv加密)得到enc(x
index
)一条密文,作为密文请求,序列化后发送给数据提供方。
[0098]
如果采用矩阵形式的明文查询定位方式,则数据查询方利用自身公钥进行同态加密(如bfv加密)得到enc(xi),enc(xj)两条密文,作为密文请求,序列化后发送给数据提供方。
[0099]
其中,步骤150中的加密用的公钥与步骤170中解密用的私钥为数据查询方的同态加密的密钥对。同态加密能够基于密文进行加法、数乘、乘法和旋转等操作。例如,enc(a+b)=enc(a)+enc(b);k
×
enc(a)=enc(k
×
a),其中,enc表示同态加密操作。
[0100]
在步骤160,数据提供方对所述目标明文的索引信息的密文进行茫然传输扩展得到所述目标明文的索引信息的密文的目标向量,将各明文组成的明文矩阵与所述目标向量进行矩阵运算得到所述目标明文的密文,并通过密文响应返回给数据查询方。
[0101]
如果采用矩阵形式的明文查询定位方式,数据提供方反序列化接收到的数据查询方的数据,利用数据查询方提供的galois密钥,对接收到的两条密文enc(xi),enc(xj)进行“茫然传输扩展”得到两条维数为t的列向量,形式如(enc(0),...,enc(1),...,enc(0)),由0的密文和1的密文组成,其中1的密文仅出现一次:对于enc(xi)而言,1的密文出现在第i个位置上,对于enc(xj)而言,1的密文出现在第j个位置上,由于同态加密的语义安全性,对于数据提供方来说,无法判断1的密文位置,从而无法得知数据查询方想要查询的i,j。
[0102]
然后,数据提供方将明文矩阵m和以上两条密文向量进行矩阵-向量乘,即同态加密的明文密文相乘操作,假设得到r条密文c1,c2,...,cr,r是密文膨胀系数,作为目标明文m[i,j]的密文响应,序列化后发送给数据查询方。
[0103]
如果采用向量形式的明文查询定位方式,数据提供方反序列化接收到的数据查询方的数据,利用数据查询方提供的galois密钥,对接收到的一条密文enc(x
index
)进行“茫然传输扩展”得到一条维数为n的列向量,形式如(enc(0),...,enc(1),...,enc(0)),由0的密文和1的密文组成,其中1的密文仅出现一次,对于enc(x
index
)而言,1的密文出现在第index个位置上,由于同态加密的语义安全性,对于数据提供方来说,无法判断1的密文位置,从而无法得知数据查询方想要查询的index。
[0104]
然后,数据提供方将各明文组成的明文向量和以上一条密文向量进行向量-向量乘,即同态加密的明文密文相乘操作,假设得到r

条密文c1,c2,...,cr′
,r

是密文膨胀系数,作为目标明文m[i,j]的密文响应,序列化后发送给数据查询方。
[0105]
在步骤170,数据查询方接收数据提供方返回的密文响应,并对所述密文响应中的所述目标明文的密文进行解密得到所述目标明文,并从所述目标明文中获取所述多个目标标签数据,可以将获取的目标标签数据存储到数据库db1。从而,数据查询方可以利用自己的标签数据和数据提供方的标签数据开展业务。
[0106]
数据查询方反序列化接收到的密文响应,利用自身的私钥,对r条密文进行组合并解密,或者,对r

条密文进行组合并解密,均可以得到目标明文m[i,j],然后,根据标签数据到明文的编码方式,对目标明文m[i,j]进行解码,即可得到多个目标存储序号的多个标签数据。
[0107]
其中,通过解码,从所述目标明文中获取所述多个目标标签数据包括:根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置;根据每条目标数据记录的每个目标标签数据在目标明文的存储位置,从所述目标明文中获取各个目标标签数据。
[0108]
其中,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置包括:根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的取模运算,确定出每条目标数据记录的每个目标标签数据在目标明文的存储位置。
[0109]
其中,确定目标标签数据在目标明文的存储位置可以用以下公式表示:offset=id mod(nlogt/s),
[0110]
其中,偏置offset表示目标标签数据在目标明文的起始存储位置,id表示目标数据记录的目标存储序号,nlogt表示根据编码参数(多项式次数n、明文的多项式系数取值范围t)确定的每个明文所能存储的比特数量,s表示每个标签数据占用的比特数量,nlogt/s表示每个明文所能存储的标签数据的数量,mod表示取模运算。
[0111]
在知晓目标标签数据在目标明文的起始存储位置offset、以及每个标签数据占用的比特数量s的情况下,就可以从目标明文中提取出相应的目标标签数据。
[0112]
在一些实施例中,数据查询方可以针对交集中每个批次的存储序号发起一次密文请求。具体来说,数据查询方将所述交集中的目标存储序号划分为一个或多个批次,每个批次包括一个或多个组,每个组的目标存储序号对应同一目标明文,不同组的目标存储序号对应不同目标明文,针对每个批次向数据提供方发起一次密文请求,其中携带该批次的各个组对应的各个目标明文的索引信息的密文。相应的,后续数据查询方在接收数据提供方返回的密文响应之后,对所述密文响应中的各个目标明文的密文进行解密得到该批次的各个目标明文,然后从每个目标明文中分别获取相应的目标标签数据。在一个批次对应多个目标明文的情况下,可进一步降低通信开销。其中,批次尺寸参数(batchsize,即每个批次的组的数量)可以灵活设置。此外,数据查询方可以利用unordered_map的数据结构,将目标明文的索引信息(index或[i,j])作为键,将目标标签数据在目标明文的起始存储位置(即偏置offset)作为值,进行存储,方便查找。
[0113]
本公开实施例的匿踪查询方案,通过加密标识数据求交集的方式,在不泄露双方隐私的情况下,确定数据提供方和数据查询方的数据记录的交集,如果判定交集中的多个目标存储序号相应的多个目标标签数据被存储在同一目标明文,针对这样的多个目标存储序号,利用目标明文的索引信息的密文向数据提供方发起一次密文请求,对密文响应中的目标明文的密文进行解密,从目标明文中可获取该多个目标标签数据。从而,通过一次密文请求和密文响应,可以同时获取多个目标标签数据,降低了通信开销和计算开销。
[0114]
下面对通信开销和计算开销进行对比分析。假设采用矩阵形式的明文查询定位方式,请求需要传输2个密文,响应需要传输r个密文,每个密文大小假设为c,如果查询p个数据记录。
[0115]
按照相关技术的方案,数据查询方和数据提供方的密文通信开销为(r+2)
×
p
×
c。按照本公开实施例的方案,假设平均下来s个数据记录在同一个密文请求中查询,则数据查询方和数据提供方的密文通信开销为(r+2)
×
p
×
c/s。可见,本公开实施例的方案极大地减少了密文通信开销。
[0116]
对于对应同一明文的多个数据记录,本公开实施例的方案需要一次密态计算,而相关技术的方案需要多次密态计算,因此,本公开实施例的方案极大地减少了计算开销。
[0117]
图2示出本公开一些实施例的匿踪查询系统的示意图。
[0118]
如图2所示,该实施例的匿踪查询系统200包括:用于数据查询方的匿踪查询装置210,以及,用于数据提供方的数据提供装置220。
[0119]
匿踪查询装置210,被配置为确定第一加密标识数据集与第二加密标识数据集的交集,其中,所述第一加密标识数据集包括数据提供方的每条数据记录的加密标识数据和存储序号,所述第二加密标识数据集包括数据查询方的每条数据记录的加密标识数据,每条数据记录包括标识数据和标签数据,数据提供方的每多条数据记录的多个标签数据被存储在一个明文;
[0120]
在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求;
[0121]
接收数据提供方返回的密文响应,并对所述密文响应中的所述目标明文的密文进行解密得到所述目标明文;
[0122]
从所述目标明文中获取所述多个目标标签数据。
[0123]
匿踪查询装置210,被配置为判定多条目标数据记录的多个目标标签数据被存储在同一目标明文包括:
[0124]
根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息;
[0125]
在多条目标数据记录的多个目标标签数据所存储的目标明文的索引信息相同的情况下,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文。
[0126]
匿踪查询装置210,被配置为确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息包括:
[0127]
根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
[0128]
根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个
明文所能存储的标签数据的数量;
[0129]
通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的除法运算,确定出每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息。
[0130]
匿踪查询装置210,被配置为从所述目标明文中获取所述多个目标标签数据包括:
[0131]
根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置;
[0132]
根据每条目标数据记录的每个目标标签数据在目标明文的存储位置,从所述目标明文中获取各个目标标签数据。
[0133]
匿踪查询装置210,被配置为确定每条目标数据记录的每个目标标签数据在目标明文的存储位置包括:
[0134]
根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
[0135]
根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;
[0136]
通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的取模运算,确定出每条目标数据记录的每个目标标签数据在目标明文的存储位置。
[0137]
匿踪查询装置210,被配置为通过提高每个明文所能存储的比特数量和降低每个标签数据占用的比特数量,增加每个明文所能存储的标签数据的数量。
[0138]
匿踪查询装置210,被配置为通过提高明文的多项式次数、明文的多项式系数取值范围中的至少一项,提高每个明文所能存储的比特数量;或者,通过压缩编码方式,降低每个标签数据占用的比特数量。
[0139]
匿踪查询装置210,被配置为确定第一加密标识数据集与第二加密标识数据集的交集包括:
[0140]
按照相同的排序方式,对所述第一加密标识数据集中的加密标识数据和所述第二加密标识数据集中的加密标识数据进行升序排列或降序排列;
[0141]
确定具有相同加密标识数据的第一加密标识数据集与第二加密标识数据集的交集。
[0142]
数据查询方与数据提供方采用协商一致的加密方法分别对自己数据记录的标识数据进行加密生成加密标识数据。
[0143]
所述目标明文的索引信息包括:所述目标明文的索引;或者,所述目标明文在各明文组成的明文矩阵的位置。
[0144]
匿踪查询装置210,被配置为向数据提供方发起一次密文请求包括:将所述交集中的目标存储序号划分为一个或多个批次,每个批次包括一个或多个组,每个组的目标存储序号对应同一目标明文,不同组的目标存储序号对应不同目标明文,针对每个批次向数据提供方发起一次密文请求,其中携带该批次的各个组对应的各个目标明文的索引信息的密文;在接收数据提供方返回的密文响应之后,对所述密文响应中的各个目标明文的密文进行解密得到该批次的各个目标明文。
[0145]
数据提供装置220,被配置为:对所述目标明文的索引信息的密文进行茫然传输扩展得到所述目标明文的索引信息的密文的目标向量,将各明文组成的明文矩阵与所述目标
向量进行矩阵运算得到所述目标明文的密文。
[0146]
图3示出本公开一些实施例的匿踪查询装置的结构示意图。
[0147]
如图3所示,该实施例的匿踪查询装置210包括:单元310-340。
[0148]
交集确定单元310,被配置为确定第一加密标识数据集与第二加密标识数据集的交集,其中,所述第一加密标识数据集包括数据提供方的每条数据记录的加密标识数据和存储序号,所述第二加密标识数据集包括数据查询方的每条数据记录的加密标识数据,每条数据记录包括标识数据和标签数据,数据提供方的每多条数据记录的多个标签数据被存储在一个明文;
[0149]
密文请求单元320,被配置为在根据所述交集中的多个目标存储序号判定相应多条目标数据记录的多个目标标签数据被存储在同一目标明文的情况下,针对所述多个目标存储序号,利用所述目标明文的索引信息的密文向数据提供方发起一次密文请求;
[0150]
密文响应单元330,被配置为接收数据提供方返回的密文响应,并对所述密文响应中的所述目标明文的密文进行解密得到所述目标明文;
[0151]
数据获取单元340,被配置为从所述目标明文中获取所述多个目标标签数据。
[0152]
其中,所述密文请求单元320,被配置为判定多条目标数据记录的多个目标标签数据被存储在同一目标明文包括:
[0153]
根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息;
[0154]
在多条目标数据记录的多个目标标签数据所存储的目标明文的索引信息相同的情况下,判定多条目标数据记录的多个目标标签数据被存储在同一目标明文。
[0155]
其中,所述密文请求单元320,被配置为确定每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息包括:
[0156]
根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
[0157]
根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;
[0158]
通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的数量的除法运算,确定出每条目标数据记录的每个目标标签数据所存储的目标明文的索引信息。
[0159]
其中,所述数据获取单元340,被配置为:
[0160]
根据多条目标数据记录的多个目标存储序号以及标签数据到明文的编码参数,确定每条目标数据记录的每个目标标签数据在目标明文的存储位置;
[0161]
根据每条目标数据记录的每个目标标签数据在目标明文的存储位置,从所述目标明文中获取各个目标标签数据。
[0162]
其中,所述数据获取单元340,被配置为:确定每条目标数据记录的每个目标标签数据在目标明文的存储位置包括:
[0163]
根据标签数据到明文的编码参数,确定每个明文所能存储的比特数量;
[0164]
根据每个明文所能存储的比特数量以及每个标签数据占用的比特数量,确定每个明文所能存储的标签数据的数量;
[0165]
通过每条目标数据记录的每个目标存储序号对每个明文所能存储的标签数据的
数量的取模运算,确定出每条目标数据记录的每个目标标签数据在目标明文的存储位置。
[0166]
通过提高每个明文所能存储的比特数量和降低每个标签数据占用的比特数量,增加每个明文所能存储的标签数据的数量。通过提高明文的多项式次数、明文的多项式系数取值范围中的至少一项,提高每个明文所能存储的比特数量。通过压缩编码方式,降低每个标签数据占用的比特数量。
[0167]
交集确定单元310,被配置为按照相同的排序方式,对所述第一加密标识数据集中的加密标识数据和所述第二加密标识数据集中的加密标识数据进行升序排列或降序排列;确定具有相同加密标识数据的第一加密标识数据集与第二加密标识数据集的交集。
[0168]
密文请求单元320,被配置为向数据提供方发起一次密文请求包括:将所述交集中的目标存储序号划分为一个或多个批次,每个批次包括一个或多个组,每个组的目标存储序号对应同一目标明文,不同组的目标存储序号对应不同目标明文,针对每个批次向数据提供方发起一次密文请求,其中携带该批次的各个组对应的各个目标明文的索引信息的密文;密文响应单元330,被配置为在接收数据提供方返回的密文响应之后,对所述密文响应中的各个目标明文的密文进行解密得到该批次的各个目标明文。
[0169]
图4示出本公开另一些实施例的匿踪查询装置的结构示意图。
[0170]
如图4所示,该实施例的匿踪查询装置210包括:存储器410以及耦接至该存储器410的处理器420,处理器420被配置为基于存储在存储器410中的指令,执行前述任意一些实施例中的匿踪查询方法。
[0171]
匿踪查询装置210还可以包括输入输出接口430、网络接口440、存储接口450等。这些接口430,440,450以及存储器410和处理器420之间例如可以通过总线460连接。
[0172]
其中,存储器410例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。
[0173]
其中,处理器420可以用通用处理器、数字信号处理器(digital signal processor,dsp)、应用专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。
[0174]
其中,输入输出接口430为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口440为各种联网设备提供连接接口。存储接口450为sd卡、u盘等外置存储设备提供连接接口。总线460可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(industry standard architecture,isa)总线、微通道体系结构(micro channel architecture,mca)总线、外围组件互连(peripheral component interconnect,pci)总线。
[0175]
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0176]
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机程序代码的非瞬时性计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0177]
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0178]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0179]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0180]
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1