一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据查询方法及装置与流程

2022-11-30 13:16:03 来源:中国专利 TAG:


1.本发明涉及金融科技(fintech)领域,尤其涉及一种数据查询方法及装置。


背景技术:

2.随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术提出了更高的要求。
3.在现有技术的数据查询方法中,一般是由查询方(查询数据的一方)从数据方(拥有数据的一方)中查询数据。查询方通过向数据方发送查询请求;进而由数据方基于查询请求确定出查询结果,并将查询结果反馈至查询方。
4.为了保证数据的隐匿性,需要依赖公私钥密码学,在数据传输过程中使用椭圆曲线点乘等运算,对数据传输过程中涉及的参数进行加密操作。因为运算复杂度高,导致数据查询效率低。


技术实现要素:

5.本发明实施例提供一种数据查询方法及装置,用于实现减少数据加密运算,降低数据计算量及计算难度,提高数据查询效率。
6.第一方面,本发明实施例提供一种数据查询方法,包括:
7.数据方接收查询方发送的查询请求;所述查询请求包括待查询用户的查询位置;
8.所述数据方在查询表中查询出所述查询位置对应的值,得到查询结果;所述查询表是根据数据集中的用户标识构建的;所述查询表中各位置的值是基于所述数据集中的用户标识在所述查询表中的位置确定的,所述查询表中查询位置对应的值表示所述查询表是否记录有所述待查询用户的用户标识;所述查询结果表示所述查询位置对应的待查询用户存在于或不存在于所述数据集中;
9.所述数据方将所述查询结果发送至查询方。
10.上述技术方案中,查询方在数据方查询数据时,仅将待查询用户的查询位置发送至数据方,不需要将待查询用户的用户标识发送至数据方。因此可以保证待查询用户的信息隐匿性和安全性,且因为查询位置不会泄露待查询用户的明文信息,因此可以不对查询位置进行加密,直接通过安全信道进行传输,保证数据的准确性即可,进而减少数据加密运算,降低数据计算量及计算难度。
11.数据方在接收到查询位置之后,可以直接根据查询位置在查询表中进行查询,不需要对查询位置进行解密运算等,以此减少数据运算,降低数据计算量及计算难度,提高数据查询效率。
12.另外,查询表是数据方基于数据集中的用户标识构建的,查询表中各位置的值是基于用户标识在查询表所占据的位置确定的。查询表中查询位置对应的值表示查询表是否记录有待查询用户的用户标识,也表示数据集中表是否存在待查询用户的用户标识。也就
是说,根据查询表中查询位置对应的值可以确定出查询位置对应的待查询用户是否存在于数据集中。查询表中各位置的值不具备明文数据,保证了数据的隐匿性和安全性,对应的查询结果也不会泄露用户标识,因此可以不对查询结果进行加密,直接通过安全信道进行传输,保证数据的准确性即可,从而减少数据加密运算,降低数据计算量及计算难度。
13.可选的,所述数据方根据数据集中的用户标识构建所述查询表,包括:
14.所述数据方随机生成查询密钥;
15.所述数据方根据所述查询密钥对所述用户标识加密,得到密文数据;
16.所述数据方根据所述密文数据的数量计算所述查询表的数据长度;
17.所述数据方计算所述密文数据在所述查询表中的位置,对所述位置设置预设值,构建所述查询表。
18.上述技术方案中,数据方在构建查询表时,会对用户标识进行加密,该加密运算用于保证用户标识的隐匿性和安全性,不需要进行解密运算,减少了数据加密运算,降低了数据计算量及计算难度。
19.数据方在得到密文数据之后,计算出该密文数据在查询表中的位置,然后对该位置设置预设值,使该预设值表示该密文数据对应的用户标识记录在数据集中,进而保证数据的隐匿性和安全性,也使对应的查询结果不会泄露用户标识的信息,减少对查询结果的加密运算,降低数据计算量及计算难度。
20.可选的,所述数据方根据所述密文数据的数量计算所述查询表的数据长度,包括:
21.所述数据方根据所述密文数据的数量选择位置数量;所述位置数量表示任一密文数据在所述查询表中的位置数量;所述位置数量与所述密文数据的数量成正比;
22.所述数据方计算所述位置数量与预设冗余值的和;
23.所述数据方将所述密文数据的数量与所述和的积,作为所述查询表的数据长度。
24.上述技术方案中,根据密文数据的数量选择位置数量,且规定位置数量与密文数据的数量成正比。通过位置数量、预设冗余值和密文数据的数量计算查询表的数据长度,以此使各密文数据在查询表中的位置分布均匀,防止数据冲突,提高查询准确性。
25.可选的,所述数据方计算所述密文数据在所述查询表中的位置,包括:
26.针对所述密文数据在所述查询表中的第i位置,所述数据方根据所述i对所述密文数据进行混淆计算,得到混淆参数;
27.所述数据方将所述混淆参数的值与所述查询表的数据长度做取余运算,得到所述密文数据在所述查询表中的第i位置。
28.可选的,根据下述公式(1)进行混淆计算;
29.obs_ri=hash(obs_(r-1)i|m|i)
ꢀꢀꢀ
(1);
30.其中,obs_ri为混淆参数的值;m为密文数据;r为正整数,且1≤r≤i;当r=1时,obs_1i=hash(m|i)。
31.上述技术方案中,确定密文数据在查询表中的位置时,对密文数据进行混淆计算,进一步保证数据的隐匿性和安全性,防止密文数据被破译。
32.第二方面,本发明实施例提供一种数据查询方法,包括:
33.查询方根据待查询用户的用户标识、查询密钥、位置数量和查询表的数据长度生成待查询用户的查询位置;所述查询密钥、所述位置数量和所述查询表的数据长度是数据
方发送的;所述查询表是所述数据方根据数据集中的用户标识构建的,所述查询表中的值表示记录在所述数据集中的用户标识;
34.所述查询方将所述待查询用户的查询位置作为查询请求,将所述查询请求发送至数据方;所述查询请求用于指示所述数据方根据所述查询位置在查询表中确定所述查询位置对应的值,得到查询结果;
35.所述查询方接收所述数据方基于所述查询请求反馈的查询结果;所述查询结果表示所述待查询用户存在于或不存在于所述数据集中。
36.可选的,查询方根据待查询用户的用户标识、查询密钥、位置数量和查询表的数据长度生成待查询用户的查询位置,包括:
37.所述查询方根据所述查询密钥对所述待查询用户的用户标识加密,得到密文标识;
38.针对所述密文标识的第i查询位置,所述查询方根据所述i对所述密文标识进行混淆计算,得到混淆标识;
39.所述查询方将所述混淆标识的值与所述查询表的数据长度做取余运算,得到所述待查询用户的第i查询位置。
40.上述技术方案中,查询方在数据方查询数据时,会先对待查询用户的用户标识加密,得到密文标识,然后根据密文标识计算出查询位置,将查询位置作为查询请求。因此可以保证待查询用户的用户标识的隐匿性和安全性。且因为查询位置不会泄露待查询用户的用户标识,因此可以不对查询位置进行加密,直接通过安全信道进行传输,保证数据的准确性即可,进而减少数据加密运算,降低数据计算量及计算难度。
41.查询表中不具备明文数据,保证了数据的隐匿性和安全性,对应的查询结果也不会泄露明文数据,可以不对查询结果进行加密,直接通过安全信道进行传输。因此查询方在得到查询结果之后,也不需要对查询结果进行解密运算,从而减少数据加密运算,降低数据计算量及计算难度。
42.可选的,所述查询方接收所述数据方基于所述查询请求反馈的查询结果之后,还包括:
43.所述查询方若确定所述查询结果中,所述待查询用户的查询位置对应的值均为预设值,则确定所述待查询用户存在于所述数据集中;
44.所述查询方若确定所述查询结果中,所述待查询用户的任一查询位置对应的值不为预设值,则确定所述待查询用户不存在于所述数据集中。
45.上述技术方案中,查询表在初始状态时,查询表中每个位置设置有初始值,在确定出密文数据在查询表中的位置之后,将该位置从初始值设置为预设值。因此在确定查询位置对应的值为预设值时,表示查询位置对应的待查询用户记录在查询表,进而表示该待查询用户对应的用户标识记录在数据集中,从而实现在数据隐匿状态下,确定出待查询用户是否存在于数据集中。
46.第三方面,本发明实施例还提供一种数据查询装置,包括:
47.接收模块,用于接收查询方发送的查询请求;所述查询请求包括待查询用户的查询位置;
48.查询模块,用于在查询表中查询出所述查询位置对应的值,得到查询结果;所述查
询表是根据数据集中的用户标识构建的;所述查询表中各位置的值是基于所述数据集中的用户标识在所述查询表中的位置确定的,所述查询表中查询位置对应的值表示所述查询表是否记录有所述待查询用户的用户标识;所述查询结果表示所述查询位置对应的待查询用户存在于或不存在于所述数据集中;
49.发送模块,用于将所述查询结果发送至查询方。
50.可选的,所述装置还包括构建模块;
51.所述构建模块具体用于:
52.随机生成查询密钥;
53.根据所述查询密钥对所述用户标识加密,得到密文数据;
54.根据所述密文数据的数量计算所述查询表的数据长度;
55.计算所述密文数据在所述查询表中的位置,对所述位置设置预设值,构建所述查询表。
56.可选的,所述构建模块具体用于:
57.根据所述密文数据的数量选择位置数量;所述位置数量表示任一密文数据在所述查询表中的位置数量;所述位置数量与所述密文数据的数量成正比;
58.计算所述位置数量与预设冗余值的和;
59.将所述密文数据的数量与所述和的积,作为所述查询表的数据长度。
60.可选的,所述构建模块具体用于:
61.针对所述密文数据在所述查询表中的第i位置,根据所述i对所述密文数据进行混淆计算,得到混淆参数;
62.将所述混淆参数的值与所述查询表的数据长度做取余运算,得到所述密文数据在所述查询表中的第i位置。
63.可选的,根据下述公式(1)进行混淆计算;
64.obs_ri=hash(obs_(r-1)i|m|i)
ꢀꢀꢀ
(1);
65.其中,obs_ri为混淆参数的值;m为密文数据;r为正整数,且1≤r≤i;当r=1时,obs_1i=hash(m|i)。
66.第四方面,本发明实施例还提供一种数据查询装置,包括:
67.生成单元,用于根据待查询用户的用户标识、查询密钥、位置数量和查询表的数据长度生成待查询用户的查询位置;所述查询密钥、所述位置数量和所述查询表的数据长度是数据方发送的;所述查询表是根据数据集中的用户标识构建的;所述查询表中各位置的值是基于数据集中的用户标识在所述查询表中的位置确定的,所述查询表中查询位置对应的值表示所述查询表是否记录有所述待查询用户的用户标识;
68.发送单元,用于将所述待查询用户的查询位置作为查询请求,将所述查询请求发送至数据方;所述查询请求用于指示所述数据方根据所述查询位置在查询表中确定所述查询位置对应的值,得到查询结果;
69.接收单元,用于接收所述数据方基于所述查询请求反馈的查询结果;所述查询结果表示所述查询位置对应的待查询用户存在于或不存在于所述数据集中。
70.可选的,所述生成单元具体用于:
71.根据所述查询密钥对所述待查询用户的用户标识加密,得到密文标识;
72.针对所述密文标识的第i查询位置,根据所述i对所述密文标识进行混淆计算,得到混淆标识;
73.将所述混淆标识的值与所述查询表的数据长度做取余运算,得到所述待查询用户的第i查询位置。
74.可选的,所述装置还包括解析单元;
75.所述解析单元用于:
76.接收所述数据方基于所述查询请求反馈的查询结果之后,若确定所述查询结果中,所述待查询用户的查询位置对应的值均为预设值,则确定所述待查询用户存在于所述数据集中;
77.若确定所述查询结果中,所述待查询用户的任一查询位置对应的值不为预设值,则确定所述待查询用户不存在于所述数据集中。
78.第五方面,本发明实施例还提供一种计算机设备,包括:
79.存储器,用于存储程序指令;
80.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据查询方法。
81.第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述数据查询方法。
附图说明
82.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
83.图1为本发明实施例提供的一种系统架构示意图;
84.图2为本发明实施例提供的一种数据查询方法的流程示意图;
85.图3为本发明实施例提供的一种查询表的示意图;
86.图4为本发明实施例提供的一种数据查询方法的流程示意图;
87.图5为本发明实施例提供的一种数据查询方法的流程示意图;
88.图6为本发明实施例提供的一种数据查询装置的结构示意图;
89.图7为本发明实施例提供的一种数据查询装置的结构示意图。
具体实施方式
90.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
91.为了更好的阐述本技术技术方案,下面对可能出现的名词进行解释。
92.哈希函数(hash function):是一种从任何一种数据中创建小的数字“指纹”的方
法。哈希函数也叫散列函数;散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来的方法。
93.匿踪查询:也称隐私信息检索,是指查询方隐藏被查询对象(即待查询用户)的关键词或标识信息,如id(identity document,身份标识号)。数据方提供匹配的查询结果却无法获知具体对应哪个查询对象。数据不出门且能计算,杜绝数据缓存、数据泄漏、数据贩卖的可能性。
94.匿踪查询方法一般指有两方参与,查询方拥有待查询用户的用户标识,如用户id。数据方拥有数据集[id,y],查询方希望从数据方获取id对应的数据y,或知道id是否在数据方的数据集内,但不希望数据方知道查询方发送的待查询用户的用户标识id的一种方法。
[0095]
不经意传输:是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送一条给接收者,但事后对发送了哪一条消息仍然oblivious(不知道)。例如,发送者alice生成两对公私钥,分别为puk0、pri0、puk1、pri1;将两个公钥puk0、puk1发送给接收者bob。
[0096]
bob生成一个随机数,并用收到的两个公钥之一加密随机数(公钥的选择取决于接收者bob想获取哪条数据。例如,若想要得到数据m0,则用puk0加密随机数;若想要得到数据m1,则用puk1加密随机数),得到随机数密文。然后将随机数密文发送给alice。
[0097]
alice用自己的两个私钥(pri0、pri1)分别解密收到的随机数密文,得到两个解密结果k0,k1。然后将两个解密结果分别与要发送的两条信息进行异或运算(如k0异或m0,k1异或m1),得到两个异或结果(e0、e1),并将两个异或结果e0、e1发给bob。
[0098]
bob用自己的真实随机数与收到的e0、e1分别做异或操作,得到的两个结果中只有一条为真实数据,另外一条为随机数。
[0099]
在上述过程中,alice无法从用两条私钥解密得到的结果k0、k1中区分出bob的真实随机数,保证了alice无法得知bob将要获取的是哪条数据。
[0100]
在现有技术的匿踪查询的数据查询方法中,一般是使用上述不经意传输的方式来满足匿踪查询。有上述描述可知,为了保证数据的隐匿性,需要依赖公私钥密码学,在数据传输过程中使用椭圆曲线点乘、异或操作等运算,对数据传输过程中涉及的参数进行加密操作。进而可以得出,现有技术的匿踪查询的数据查询方法运算量大、复杂度高,导致数据查询效率低。
[0101]
基于上述不经意传输的方式,在一种可实施的方式中,查询方可以通过伪造多个不存在的数据对待查询用户的用户标识进行混淆。例如,k1、k2为伪造数据,ks为真实数据;数据方根据k1、k2无法查询出结果,而根据ks可以查询出结果,因此数据方可以推测出查询方所要查询的数据是ks对应的数据。
[0102]
再如,如待查询用户为张三,混淆用户为李四,王五,数据方在确定知道李四和王五未记录在数据集中,可以猜测出本次查询的待查询用户为张三。
[0103]
上述技术方案中,存在信息泄露的风险,在数据查询过程中,隐匿性和安全性偏低。
[0104]
因此,现亟需一种数据查询方法,在满足隐匿查询的基础上,减少数据加密运算,降低数据计算量及计算难度,提高数据查询效率。
[0105]
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括查询
方110和数据方120。
[0106]
其中,查询方110是需要查询数据的一方。查询方110用于根据查询密钥对待查询用户的用户标识加密,得到密文标识。然后针对密文标识的第i查询位置,查询方根据i对应的值,对密文标识进行混淆计算,得到混淆标识。最后查询方将混淆标识的值与查询表的数据长度做取余运算,得到待查询用户的第i查询位置,并将待查询用户的查询位置作为查询请求,发送至数据方120。
[0107]
数据方120是拥有数据的一方。数据方120用于生成查询密钥(如生成随机数作为查询密钥)。然后根据查询密钥对数据集中的各用户标识(如用户张三的用户标识id1)加密,得到各密文数据。
[0108]
数据方120根据密文数据的数量选择位置数量。其中,位置数量表示任一密文数据在查询表中的位置数量,且位置数量与密文数据的数量成正比。例如,密文数据的数量为90万,选择位置数量k=7;则表示任一密文数据在查询表中拥有7个位置。
[0109]
数据方120计算位置数量与预设冗余值的和。例如,预设冗余值为1,表示数据冗余的数量。数据方120将密文数据的数量与和的积,作为查询表的数据长度。例如,密文数据的数量为90万,位置数量k=7,预设冗余值s=1,则查询表的数据长度l=90万
×
(7 1)=720万。
[0110]
任一密文数据在查询表中的第i位置(如i=3等),数据方120根据i的值对密文数据进行混淆计算,得到混淆参数。然后将混淆参数的值与查询表的数据长度做取余运算,得到密文数据在查询表中的第i位置。在得到密文数据在查询表中各位置之后,对各位置设置预设值,构建查询表。
[0111]
数据方120在构建万查询表之后,将查询表的数据长度、查询密钥、位置数量发送至查询方110,以使查询方110针对待查询用户的用户标识生成查询位置。
[0112]
数据方120在接收查询方110发送的各查询位置之后,在查询表中确定各查询位置对应的值,若各查询位置对应的值均为预设值,则表示待查询用户存在于查询表中,进一步表示待查询用户记录在数据集中,从而反馈查询结果。
[0113]
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
[0114]
基于上述描述,图2示例性的示出了本发明实施例提供的一种数据查询方法的流程示意图,该流程可由数据查询装置执行。
[0115]
如图2所示,该流程具体包括:
[0116]
步骤210,数据方接收查询方发送的查询请求。
[0117]
在本发明实施例中,查询请求包括待查询用户的查询位置。其中,待查询用户可以为多个,如待查询用户为3个,分别为张三、李四、王五。针对任一待查询用户,该待查询用户的查询位置的数量等于位置数量。其中,位置数量是数据方根据密文数据的数量选择的,表示任一密文数据在查询表中的位置数量。
[0118]
步骤220,所述数据方在查询表中确定所述查询位置对应的值,得到查询结果。
[0119]
在本发明实施例中,查询表是根据数据集中的用户标识构建的;查询表中各位置的值是基于数据集中的用户标识在查询表中的位置确定的,查询表中查询位置对应的值表示查询表是否记录有待查询用户的用户标识,即查询位置对应的值作为查询结果。由查询方根据查询结果确定出待查询用户是否存在于数据集中,因此查询结果表示查询位置对应
的待查询用户存在于或不存在于数据集中。
[0120]
例如,某一待查询用户的用户标识对应在查询表中的各位置的值均为预设值,则表示该待查询用户的用户标识记录在数据集中。由此可见,查询结果表示待查询用户存在于或不存在于数据集中。
[0121]
步骤230,所述数据方将所述查询结果发送至查询方。
[0122]
在步骤220中,数据集用于记录各用户的信息。数据集包括数据属性,数据属性表示记录在该数据集中的各用户的属性。例如,数据属性为白名单或黑名单,则表示记录在该数据集中的各用户为白名单用户或黑名单用户。
[0123]
在一些实施例中,数据集中包括用户标识以及用户标识对应用户的数据属性。例如,用户标识为姓名、身份证号、手机号等;用户的数据属性为该用户是否在黑名单或白名单中。
[0124]
具体举例来说,用户标识包括:张三、李四和王五。其中,张三在白名单中,李四在黑名单中,王五在白名单中。
[0125]
在一种可实施的方式中,通过对数据集进行预处理,使数据集中用户的数据属性相同,将预处理后的数据集作为需要查询的数据集。例如,数据集中的各用户均在黑名单或白名单中。
[0126]
基于上述描述进行举例,预处理后的数据集中包括张三和王五。其中,张三和王五均在白名单中。
[0127]
在本发明实施例中,基于数据集中用户的数据属性相同的数据集进行阐述。例如,数据集中的各用户均表示为白名单或黑名单中的用户。在查询方进行查询数据之前,数据方会根据数据集构建出查询表。
[0128]
在一种可实施的方式中,数据方为了保证数据的隐匿性和安全性,会对数据集中各用户标识进行加密。
[0129]
具体的,数据方随机生成查询密钥,然后根据查询密钥对用户标识加密,得到密文数据。
[0130]
举例来说,用户标识包括id_1、id_2、
……
、id_n-1、id_n。查询密钥为数据方随机生成的256字符串(即256字符的随机数),在本发明实施例中,为了便于描述,以key表示查询密钥。
[0131]
数据方在生成查询密钥key之后,对数据集中各用户标识(id_1、id_2、
……
、id_n-1、id_n)进行加密计算。例如,通过哈希函数对用户标识和查询密钥key进行哈希运算,得到哈希值。具体的,id`=hash(id|key);其中,id`表示密文数据,hash(id|key)表示对用户标识和查询密钥key进行哈希运算。
[0132]
基于上述描述进行举例,id`_1=hash(id_1|key),id`_2=hash(id_2|key)、
……
、id`_n-1=hash(id_n-1|key),id`_n=hash(id_n|key)。其中,id`_1表示用户标识id_1对应的密文数据,以此类推,id`_n表示用户标识id_n对应的密文数据。
[0133]
在本发明实施例中,也可以使用其他加密算法,对用户标识进行加密,用于对用户标识进行数据混淆,保证用户标识的隐匿性和安全性。
[0134]
数据方在得到密文数据之后,根据密文数据的数量计算查询表的数据长度。
[0135]
具体的,数据方根据密文数据的数量选择位置数量;其中,位置数量表示任一密文
数据在查询表中的位置数量;位置数量与密文数据的数量成正比。例如,位置数量k=7,则表示任一密文数据在查询表中占据7个位置。
[0136]
数据方在选择出位置数量之后,计算位置数量与预设冗余值的和;其中,预设冗余值可以是根据经验预设的值,如预设冗余值为1、2等。用于降低任意两个密文数据在查询表中的位置的重复率,即降低任意两个密文数据在查询表中的位置是相同的概率,以此提升在查询数据时的准确性。
[0137]
基于上述描述进行举例,预设冗余值为1,位置数量k=7,则位置数量与预设冗余值的和为8。
[0138]
数据方将密文数据的数量与上述和的积,作为查询表的数据长度。基于上述描述进行举例,假设n等于90万,则表示共有90万条密文数据,对应有90万个用户标识;和等于8,则查询表的数据长度等于720万。
[0139]
数据方在确定出查询表的数据长度之后,计算各密文数据在查询表中的位置,以此生成查询表。基于上述描述,任一密文数据在查询表中共有k个位置,因此需要计算出任一密文数据在查询表中的第i位置;其中,i为正整数,且1≤i≤k。
[0140]
具体的,数据方根据i的值对密文数据进行混淆计算,得到混淆参数;其中,根据下述公式(1)进行混淆计算;
[0141]
obs_ri=hash(obs_(r-1)i|m|i)
ꢀꢀꢀ
(1);
[0142]
其中,obs_ri为混淆参数的值;m为密文数据;r为正整数,且1≤r≤i;当r=1时,obs_1i=hash(m|i)。r表示对密文数据进行混淆计算的次数。r可以是根据经验预设的值,也可以是随机值,如r=4。
[0143]
基于上述描述进行举例,当i=1时,则表示计算出密文数据在查询表中的第1个位置。假设m=id`_1,i=1,r=4,则根据上述公式(1)可知,obs_11=hash(id`_1|1),obs_21=hash(obs_11|id`_1|1),obs_31=hash(obs_21|id`_1|1),obs_41=hash(obs_31|id`_1|1)。将obs_41作为混淆参数。
[0144]
数据方在得到混淆参数之后,将混淆参数的值与查询表的数据长度做取余运算,得到密文数据在查询表中的第i位置。其中,取余运算如下述公式(2)所示。
[0145]
p_i=obs_ri%l
ꢀꢀꢀ
(2);
[0146]
其中,p_i为密文数据在查询表中的第i位置,obs_ri为密文数据的混淆参数,l为查询表的数据长度。
[0147]
基于上述描述进行举例,obs_41为哈希值,是一个256位的数值。假设,l=720万,i=1时,p_1=obs_41%720万=2,则表示密文数据在查询表中的第i位置为查询表中的第2位。以此类推,数据方会计算出各密文数据在查询表中的k个位置。
[0148]
数据方在得到各密文数据在查询表中的k个位置之后,在查询表中,对各密文数据在查询表中的k个位置对应的位置设置预设值,进而构建出查询表。其中,预设值可以是预设的标识值,表示设置在该位置上的密文数据对应的用户标识记录在数据集中。
[0149]
图3为本发明实施例中示例性示出的一种查询表的示意图,查询表包括连续的多个位置。如图3所示,查询表有“0至n-1”,共n个位置。其中,每个位置对应有一个值(初始值或预设值)。初始值是数据方计算出各密文数据在查询表中的k个位置之前,设置在查询表中的,如初始值为0;数据方计算出各密文数据在查询表中的k个位置之后,将初始值修改为
预设值,如预设值为1。
[0150]
基于上述描述进行举例,假设密文数据在查询表中的第i位置为查询表中的第2位,则将查询表中第2个位置的初始值“0”设置为预设值“1”,以此在查询时,通过构建的查询表可以确定待查询用户是否记录在查询表中,进而确定待查询用户的用户标识是否记录在数据集中。需要说明的是,待查询用户可以为多个,即待查询用户的用户标识可以为多个。
[0151]
基于上述描述进行举例,假设待查询用户包括d1、d2和d3;其中,d1的查询位置d11、d12、
……
、d17;d2的查询位置d21、d22、
……
、d27;d3的查询位置d31、d32、
……
、d37。也就是说,查询请求共包括21个查询位置。
[0152]
数据方不知道查询位置对应的待查询用户,以此保证待查询用户的隐匿性和安全性。例如,上述21个查询位置在查询表中均为预设值,则表示待查询用户d1、d2和d3记录在数据集中。再如,上述查询位置d21在查询表中为初始值,其余查询位置在查询表中为预设值,则表示待查询用户d1和d3记录在数据集中,待查询用户d2未记录在数据集中。
[0153]
也就是说,数据方会将查询位置对应的值作为查询结果,发送至查询方,由查询方确定出待查询用户是否记录在数据集中。
[0154]
在一些可实施的方式中,数据方可以确定查询结果;若查询位置的值均为预设值,则确定查询结果为“存在”,表示待查询用户均记录在数据集中;若任一查询位置的值不为预设值,则确定查询结果为“不存在”,表示待查询用户中一个或多个待查询用户未记录在数据集中。
[0155]
为了更好的阐述上述技术方案,图4为本发明实施例中示例性示出的一种数据查询方法的流程示意图,该流程可由数据查询装置执行。
[0156]
如图4所示,该流程包括:
[0157]
步骤410,查询方根据待查询用户的用户标识、查询密钥、位置数量和查询表的数据长度生成待查询用户的查询位置。
[0158]
在本发明实施例中,查询密钥、位置数量和查询表的数据长度是数据方发送的。具体的,查询密钥、位置数量和查询表的数据长度是数据方构建查询表时确定的,具体确定流程已在上述图2中进行描述,在此不做赘述。
[0159]
其中,查询表是根据数据集中的用户标识构建的;查询表中各位置的值是基于数据集中的用户标识在所述查询表中的位置确定的,查询表中查询位置对应的值表示查询表是否记录有待查询用户的用户标识,即查询表中各位置的值表示该位置对应的用户标识是否记录在数据集中;具体的构建过程已在上述图2中进行描述,在此不做赘述。
[0160]
步骤420,所述查询方将所述待查询用户的查询位置作为查询请求,将所述查询请求发送至数据方。
[0161]
本发明实施例中,查询请求用于指示数据方根据查询位置在查询表中确定查询位置对应的值,得到查询结果。其中,查询结果为查询表中,查询位置对应的值。
[0162]
步骤430,所述查询方接收所述数据方基于所述查询请求反馈的查询结果。
[0163]
本发明实施例中,查询结果表示待查询用户存在于或不存在于数据集中。也就是说,由查询方根据查询结果确定待查询用户是否存在于数据集中,而数据方是无法确定的,以此保证数据的隐匿性和安全性。
[0164]
在步骤410中,查询方在得到数据方发送的查询密钥、位置数量和查询表的数据长度之后,先根据查询密钥对待查询用户的用户标识加密,得到密文标识。
[0165]
其中,查询方对待查询用户的用户标识进行加密的方式与上述数据方对用户标识进行加密的方式相同,如上述描述,通过哈希函数进行哈希运算得到哈希值,将哈希值作为密文标识。
[0166]
例如,待查询用户的用户标识为d1,密文标识d`1=hash(d1|key)。其中,d`1表示待查询用户的密文标识,hash(d1|key)表示对用户标识和查询密钥key进行哈希运算。
[0167]
查询方在得到待查询用户的密文标识之后,根据位置数量,确定出该密文标识对应的查询位置。具体的,针对密文标识的第i查询位置,查询方根据i的值对密文标识进行混淆计算,得到混淆标识。
[0168]
其中,根据上述公式(1)进行混淆计算。计算混淆标识的方式与上述计算混淆参数的方式一致,因此在此不做赘述。
[0169]
查询方在得到待查询用户的混淆标识之后,将混淆标识的值与查询表的数据长度做取余运算,得到待查询用户的第i查询位置。
[0170]
其中,根据上述公式(2)进行取余运算,具体的计算第i查询位置的方式与上述计算密文数据在查询表中的第i位置的方式一致,因此在此不做赘述。
[0171]
综上所述,查询方针对任一待查询用户的用户标识,可以得到位置数量个查询位置,将各查询位置作为查询请求,发送至数据方。由数据方根据查询位置查询出在查询表中,查询位置对应的值。
[0172]
在步骤430中,查询方接收所述数据方基于所述查询请求反馈的查询结果之后,根据查询结果确定待查询用户是否存在于所述数据集中。
[0173]
具体的,查询方若确定查询结果中,待查询用户的查询位置对应的值均为预设值,则确定待查询用户存在于所述数据集中。
[0174]
例如,待查询用户包括d1的查询位置为d11、d12、
……
、d17。若查询结果中,d11、d12、
……
、d17对应的值均为预设值,则表示待查询用户d1存在于数据集中。
[0175]
查询方若确定查询结果中,待查询用户的任一查询位置对应的值不为预设值,则确定待查询用户不存在于数据集中。
[0176]
例如,若查询结果中,d11、d12、
……
、和/或d17对应的值不为预设值,则表示待查询用户d1不存在于数据集中。
[0177]
为了更好的解释上述技术方案,图5示例性的示出了一种数据查询方法的流程示意图,该流程可由数据查询装置执行。
[0178]
如图5所示,该流程包括:
[0179]
步骤510,预处理数据集。
[0180]
数据方拥有多个用户的授权名单,如授权名单包括用户赵一、钱二、张三、郑一百万等人。其中,(赵一,在白名单中)、(钱二,在黑名单中)、(张三,在白名单中)、(李四,在黑名单中)、
……
、(郑一百万,在黑名单中)。
[0181]
数据方对授权名单进行预处理,筛选出具有授权白名单的用户,得到为授权白名单的数据集,则数据集m包括赵一、张三等。以用户的用户标识来描述,数据集m=[id_1、id_2、
……
、id_n-1、id_n]。其中,id_n表示赵一、张三等用户的用户标识。在本发明实施例中,
以n=90万为例。
[0182]
步骤520,构建查询表。
[0183]
数据方生成一个256位的随机数,作为查询密钥key。根据查询密钥key对数据集中的各用户标识进行加密。以其中任一用户标识为例,id`_n=hash(id_n|key)。进而得到密文数据集m`=[id`_1、id`_2、
……
、id`_n-1、id`_n]。
[0184]
数据方根据密文数据集m`中n的数量,选择位置数量k。如50万≤n≤100万,k=7。
[0185]
为了降低任意两个密文数据在查询表中的位置是相同的概率,将位置数量与预设冗余值相加。如预设冗余值为1,位置数量k=7,位置数量与预设冗余值的和为8。
[0186]
数据方根据上述的和以及密文数据集m`中n的数量计算出查询表的数据长度。如n等于90万、和等于8,则查询表的数据长度l等于720万。
[0187]
针对任一密文数据,计算出该密文数据在查询表中的k个位置。如针对密文数据id`_n的第i个位置,根据i的值对密文数据id`_n进行混淆计算,得到混淆参数obs_ri。
[0188]
具体举例来说,i=3,r=4,则基于下述计算流程,得到密文数据id`_n的第i混淆参数obs_ri。
[0189]
obs_13=hash(id`_n|3);
[0190]
obs_23=hash(obs_13|id`_n|3);
[0191]
obs_33=hash(obs_23|id`_n|3);
[0192]
obs_43=hash(obs_33|id`_n|3)。
[0193]
其中,obs_43为密文数据id`_n的第i混淆参数。密文数据id`_n的第i混淆参数用于计算密文数据id`_n的第i个位置。
[0194]
数据方将密文数据id`_n的第i混淆参数的值与查询表的数据长度l做取余运算,得到p_ni=obs_43%l=32万;其中,p_ni为密文数据id`_n的第i个位置的位数,obs_43为id`_n的第i混淆参数的值,l为查询表的数据长度。以此类推,计算密文数据id`_n的第i 1个位置等共k个位置。
[0195]
数据方在查询表中,将密文数据id`_n的k个位置对应的值设置为预设值。基于上述图3进行举例,将查询表中第32位的初始值修改为预设值。若查询表中第32位已经为预设值,则不需要修改,或在该预设值的基础上加1。
[0196]
以此类推,将各密文数据的k个位置记录在查询表中,构建出查询表。
[0197]
步骤530,发送查询密钥、位置数量和查询表的数据长度。
[0198]
数据方将查询密钥、位置数量和查询表的数据长度发送至查询方,以使查询方生成查询位置。
[0199]
步骤540,生成查询位置。
[0200]
查询方基于待查询用户的用户标识,生成各待查询用户的查询位置。
[0201]
如待查询用户包括d1、d2和d3;以待查询用户d1为例,查询方根据查询密钥key对待查询用户d1进行加密。d1`=hash(d1`|key)。进而得到查询列表d`=[d1`、d2`、d3`]。
[0202]
针对任一待查询用户,计算出该待查询用户的k个查询位置。如针对密文标识d1`的第i个查询位置,根据i的值对密文标识d1`进行混淆计算,得到混淆标识d_obs_ri。
[0203]
具体举例来说,i=2,r=4,则基于下述计算流程,得到密文标识d1`的第i混淆标识d_obs_ri。
[0204]
d_obs_12=hash(d1`|2);
[0205]
d_obs_22=hash(d_obs_13|d1`|2);
[0206]
d_obs_32=hash(d_obs_23|d1`|2);
[0207]
d_obs_42=hash(d_obs_33|d1`|2)。
[0208]
其中,d_obs_42为密文标识d1`的第i混淆参数。密文标识d1`的第i混淆参数用于计算密文标识d1`的第i个查询位置。
[0209]
查询方将密文标识d1`的第i混淆参数的值与查询表的数据长度l做取余运算,得到d_p_i=d_obs_42%l=45万;其中,d_p_i为密文标识d1`的第i个查询位置的位数,d_obs_42为密文标识d1`的第i混淆参数的值,l为查询表的数据长度。以此类推,计算密文标识d1`的第i 1个查询位置等共7个查询位置。
[0210]
进而,将各密文标识的7个查询位置(共21个查询位置)作为查询请求。
[0211]
步骤550,发送查询请求。
[0212]
查询方将查询请求发送值数据方。
[0213]
步骤560,反馈查询结果。
[0214]
数据方在得到查询请求之后,遍历21个查询位置,在查询表中查询出查询位置对应的值。如查询位置q1对应的值为1、查询位置q2对应的值为0、
……
、查询位置q21对应的值为1等。
[0215]
将各查询位置对应的值作为查询结果,反馈至查询方。
[0216]
步骤570,解析查询结果。
[0217]
查询方在得到查询结果之后,针对任一待查询用户,若该待查询用户对应的查询位置的值均为预设值,则确定该待查询用户记录在数据集中。以此可以区分出多个待查询用户中,任一待查询用户是否记录在数据集中,提升数据查询灵活性。
[0218]
基于相同的技术构思,图6示例性的示出了本发明实施例提供的一种数据查询装置的结构示意图,该装置可以执行数据查询方法的流程。
[0219]
如图6所示,该装置具体包括:
[0220]
接收模块610,用于接收查询方发送的查询请求;所述查询请求包括待查询用户的查询位置;
[0221]
查询模块620,用于在查询表中查询出所述查询位置对应的值,得到查询结果;所述查询表是根据数据集中的用户标识构建的;所述查询表中各位置的值是基于所述数据集中的用户标识在所述查询表中的位置确定的,所述查询表中查询位置对应的值表示所述查询表是否记录有所述待查询用户的用户标识;所述查询结果表示所述查询位置对应的待查询用户存在于或不存在于所述数据集中;
[0222]
发送模块630,用于将所述查询结果发送至查询方。
[0223]
可选的,所述装置还包括构建模块640;
[0224]
所述构建模块640具体用于:
[0225]
随机生成查询密钥;
[0226]
根据所述查询密钥对所述用户标识加密,得到密文数据;
[0227]
根据所述密文数据的数量计算所述查询表的数据长度;
[0228]
计算所述密文数据在所述查询表中的位置,对所述位置设置预设值,构建所述查
询表。
[0229]
可选的,所述构建模块640具体用于:
[0230]
根据所述密文数据的数量选择位置数量;所述位置数量表示任一密文数据在所述查询表中的位置数量;所述位置数量与所述密文数据的数量成正比;
[0231]
计算所述位置数量与预设冗余值的和;
[0232]
将所述密文数据的数量与所述和的积,作为所述查询表的数据长度。
[0233]
可选的,所述构建模块640具体用于:
[0234]
针对所述密文数据在所述查询表中的第i位置,根据所述i对所述密文数据进行混淆计算,得到混淆参数;
[0235]
将所述混淆参数的值与所述查询表的数据长度做取余运算,得到所述密文数据在所述查询表中的第i位置。
[0236]
可选的,根据下述公式(1)进行混淆计算;
[0237]
obs_ri=hash(obs_(r-1)i|m|i)
ꢀꢀꢀ
(1);
[0238]
其中,obs_ri为混淆参数的值;m为密文数据;r为正整数,且1≤r≤i;当r=1时,obs_1i=hash(m|i)。
[0239]
基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种数据查询装置的结构示意图,该装置可以执行数据查询方法的流程。
[0240]
如图7所示,该装置具体包括:
[0241]
生成单元710,用于根据待查询用户的用户标识、查询密钥、位置数量和查询表的数据长度生成待查询用户的查询位置;所述查询密钥、所述位置数量和所述查询表的数据长度是数据方发送的;所述查询表是根据数据集中的用户标识构建的;所述查询表中各位置的值是基于数据集中的用户标识在所述查询表中的位置确定的,所述查询表中查询位置对应的值表示所述查询表是否记录有所述待查询用户的用户标识;
[0242]
发送单元720,用于将所述待查询用户的查询位置作为查询请求,将所述查询请求发送至数据方;所述查询请求用于指示所述数据方根据所述查询位置在查询表中确定所述查询位置对应的值,得到查询结果;
[0243]
接收单元730,用于接收所述数据方基于所述查询请求反馈的查询结果;所述查询结果表示所述查询位置对应的待查询用户存在于或不存在于所述数据集中。
[0244]
可选的,所述生成单元710具体用于:
[0245]
根据所述查询密钥对所述待查询用户的用户标识加密,得到密文标识;
[0246]
针对所述密文标识的第i查询位置,根据所述i对所述密文标识进行混淆计算,得到混淆标识;
[0247]
将所述混淆标识的值与所述查询表的数据长度做取余运算,得到所述待查询用户的第i查询位置。
[0248]
可选的,所述装置还包括解析单元740;
[0249]
所述解析单元740用于:
[0250]
接收所述数据方基于所述查询请求反馈的查询结果之后,若确定所述查询结果中,所述待查询用户的查询位置对应的值均为预设值,则确定所述待查询用户存在于所述数据集中;
[0251]
若确定所述查询结果中,所述待查询用户的任一查询位置对应的值不为预设值,则确定所述待查询用户不存在于所述数据集中。
[0252]
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
[0253]
存储器,用于存储程序指令;
[0254]
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据查询方法。
[0255]
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述数据查询方法。
[0256]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0257]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0258]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0259]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0260]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献