CN116010678B - 一种匿踪查询方法、装置及设备 - Google Patents
一种匿踪查询方法、装置及设备 Download PDFInfo
- Publication number
- CN116010678B CN116010678B CN202211730069.0A CN202211730069A CN116010678B CN 116010678 B CN116010678 B CN 116010678B CN 202211730069 A CN202211730069 A CN 202211730069A CN 116010678 B CN116010678 B CN 116010678B
- Authority
- CN
- China
- Prior art keywords
- client
- keyword
- server
- query
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 123
- 238000004364 calculation method Methods 0.000 claims abstract description 199
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 69
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000003993 interaction Effects 0.000 claims abstract description 45
- 230000002452 interceptive effect Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 abstract description 37
- 238000004891 communication Methods 0.000 abstract description 17
- 230000006870 function Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 17
- 230000011218 segmentation Effects 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种匿踪查询方法、装置及设备,客户端利用OPRF协议与服务端进行针对客户端关键字的交互处理,获取客户端关键字的加密值以及流密码密钥,同时客户端从服务端获取服务端关键字的加密值。通过对客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字,客户端仅从交集关键字中选取待查询关键字,然后利用同态加密算法向服务端发起查询,获得查询结果。通过客户端与服务端数据集预先求交集,削减了客户端查询数据的量级,降低了后续查询过程中的计算开销以及通信开销。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种匿踪查询方法、装置及设备。
背景技术
在数据查询场景下,查询方可能需要获取查询信息的同时,不希望被被查询方获知自己的查询内容。因此,需要对查询方的查询内容进行保护。匿踪查询(PrivateInformation Retrieval,PIR)是一种应用于该场景的隐私保护技术,其可以保护查询方的查询信息不被被查询方获知,从而保障查询方数据隐私安全。
在匿踪查询的过程中,发起查询的客户端使用关键字密文,去查询服务端的数据库,得到查询结果。客户端对查询结果解密得到查询结果明文,完成查询过程。
在实际业务应用过程中,存在客户端与服务端数据量差距较大的情况,例如客户端数据量较大,服务端数据量较小。在这种场景下,客户端执行查询的次数与其数据量级呈正比,但是存在大量数据查询不到结果的情况。因此,在该场景中,大量查询结果为空时,会消耗很多计算开销以及通信开销。
发明内容
有鉴于此,本申请实施例提供一种匿踪查询方法、装置及设备,以降低匿踪查询过程中的计算开销以及通信开销。
为解决上述问题,本申请实施例提供的技术方案如下:
第一方面,本申请实施例提供一种匿踪查询方法,所述方法包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成服务端关键字的加密值;
将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
第二方面,本申请实施例提供一种匿踪查询方法,所述方法包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
从所述服务端获取服务端关键字的加密值;
对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
第三方面,本申请实施例提供一种匿踪查询装置,所述装置包括:
交互单元,用于利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成单元,用于生成服务端关键字的加密值;
第一发送单元,用于将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
查询单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
第二发送单元,用于将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
第四方面,本申请实施例提供一种匿踪查询装置,所述装置包括:
第一获取单元,用于利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
第二获取单元,用于从所述服务端获取服务端关键字的加密值;
取交单元,用于对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
第三发送单元,用于向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
解密单元,用于从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
第五方面,本申请实施例提供一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的任一所述的匿踪查询方法,或者第二方面提供的任一所述的匿踪查询方法。
第六方面,本申请实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如第一方面提供的任一所述的匿踪查询方法,或者第二方面提供的任一所述的匿踪查询方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例客户端利用OPRF(Oblivious Pseudo-Random Function,不经意伪随机函数)协议与服务端进行针对客户端关键字的交互处理,获取客户端关键字的加密值以及流密码密钥,同时客户端从服务端获取服务端关键字的加密值。通过对客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字,客户端仅从交集关键字中选取待查询关键字,然后利用同态加密算法向服务端发起查询,获得查询结果。通过客户端与服务端数据集预先求交集,削减了客户端查询数据的量级,降低了后续查询过程中的计算开销以及通信开销。
附图说明
图1为本申请实施例提供的一种示例性应用场景的示意图;
图2为本申请实施例提供的一种匿踪查询方法的流程图;
图3为本申请实施例提供的一种value字段切分的示意图;
图4为本申请实施例提供的另一种value字段切分的示意图;
图5为本申请实施例提供的另一种匿踪查询方法的流程图;
图6为本申请实施例提供的一种匿踪查询装置的示意图;
图7为本申请实施例提供的另一种匿踪查询装置的示意图;
图8为本申请实施例提供的一种电子设备的示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
为了便于理解和解释本申请实施例提供的技术方案,下面将先对本申请的背景技术进行说明。
在匿踪查询的过程中,查询方(以下均以客户端为例进行说明)使用关键字(Key)查询被查询方(以下均以服务端为例进行说明)的数据库,以得到Key对应的实际值(Value)。在这个过程中,要求服务端对客户端的查询内容无感知。
在实际业务应用过程中,存在客户端与服务端数据量差距较大的情况,例如客户端数据量较大(如10亿),服务端数据量较小(如几千万)。在这种场景下,客户端执行查询的次数与其数据量级呈正比,但是存在大量数据查询不到结果的情况(约9亿)。因此,在该场景中,大量查询结果为空时,会消耗很多计算开销以及通信开销。
基于此,本申请实施例提供一种匿踪查询方法、装置及设备,通过对客户端和服务端的数据集预先求交集运算,客户端会获取到对应的交集数据,使用交集数据进行后续的查询。例如,在原有使用场景下,通过预先求交集运算,能够将约10亿的客户端数据削减为几千万的数据集。这样,大大降低了后续查询过程中的计算开销以及通信开销。
为了便于理解本申请实施例提供的匿踪查询方法,下面结合图1所示的场景示例进行说明。参见图1所示,该图为本申请实施例提供的示例性应用场景的示意图。
本领域技术人员可以理解,图1所示的框架示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的适用范围不受到该框架任何方面的限制。
在实际应用场景下,客户端可以根据自身的数据规模灵活选取使用的匿踪查询算法。当根据业务场景确定客户端数据量级远大于服务端数据量级时,或者客户端数据量级大于阈值时,可以采用本申请实施例中预先求交的匿踪查询算法。
首先客户端与服务端利用OPRF协议进行交互,可以使客户端得到客户端关键字的加密值以及流密码密钥。同时客户端从服务端获取服务端关键字的加密值。通过对客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字,完成预先求交的过程。交集关键字是由客户端与服务端均存在的关键字的加密值组成,则客户端从交集关键字中选取待查询关键字向服务端发送基于同态加密算法的查询,得到查询结果,通过解析查询结果必然能够获得对应的实际值。避免了大量查询结果为空的情况,从而降低了查询过程中的计算开销以及通信开销。
为了便于理解本申请,下面结合附图对本申请实施例提供的一种匿踪查询方法进行说明。
参见图2所示,该图为本申请实施例提供的另一种匿踪查询方法的流程图,本实施例从服务端作为执行主体的角度进行说明。如图2所示,该方法可以包括S201-S205:
S201:利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使客户端根据交互处理的结果获取客户端关键字的加密值以及流密码密钥。
客户端对全量客户端关键字基于OPRF协议进行处理后发送给服务端,服务端对接收到的数据同样基于OPRF协议进行处理后返回给客户端。客户端则能够从接收到的数据中提取各个客户端关键字的加密值以及对应的流密码密钥。客户端关键字的加密值是对客户端关键字进行了加密,可以用于发起匿踪查询,而不会泄露客户端关键字本身。流密码密钥可以用于后续对匿踪查询的查询结果进行解密。
在一种可能的实现方式中,S201利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使客户端获取客户端关键字的加密值以及流密码密钥的具体实现可以包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使客户端根据交互处理的结果获取客户端关键字的加密值以及流密码密钥;目标计算为椭圆曲线算法中的k倍点计算。
在本申请实施例中,客户端对全量客户端关键字基于OPRF协议对客户端关键字进行椭圆曲线算法中的k倍点计算后发送给服务端,服务端对接收到的数据同样基于OPRF协议进行椭圆曲线算法中的k倍点计算后返回给客户端。客户端则能够从接收到的数据中提取各个客户端关键字的加密值以及对应的流密码密钥。
在一种可能的实现方式中,利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使客户端根据交互处理的结果获取客户端关键字的加密值以及流密码密钥的具体实现可以包括:
A1:接收客户端发送的第一计算结果,第一计算结果是客户端将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算得到的。
客户端将每一条客户端关键字分别与第一数值进行椭圆曲线算法中的k倍点计算,得到一组第一计算结果发送给服务端。例如,客户端计算k*X,k为第一数值,可以由客户端随机选取,X为客户端关键字,*表示椭圆曲线算法中的k倍点计算,将k*X作为第一计算结果发送给服务端。
A2:将第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果。
服务端基于第一计算结果,再与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果发送给客户端。例如,服务端计算k’*k*X,k’为第二数值,可以由服务端随机选取,*表示椭圆曲线算法中的k倍点计算,将k’*k*X作为第二计算结果发送给客户端。
A3:将第二计算结果发送给客户端,以使客户端将第二计算结果与第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将第三计算结果按位切分为客户端关键字的加密值以及流密码密钥。
客户端基于第二计算结果与第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果。例如,客户端计算k-1*k’*k*X,由于k-1*k=1,则k-1*k’*k*X=k’*X。此时k’*X为第三计算结果,第三计算结果相当于是由客户端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到的。
然后将第三计算结果按位平均切分为两部分,一部分作为客户端关键字的加密值,另一部分作为流密码密钥。例如第三计算结果共12字节,前6字节作为客户端关键字的加密值,后6字节作为流密码密钥。基于上述示例,令k’*X=(X’|value_key_X’),其中,X’为客户端关键字的加密值,value_key_X’为流密码密钥。
S202:生成服务端关键字的加密值。
同时,服务端也会对全量服务端关键字基于OPRF协议进行处理,并将服务端关键字的加密值发送给客户端,则客户端可以获取到服务端关键字的加密值。服务端关键字的加密值是对服务端关键字进行了加密,可以用于后续的匿踪查询,而不会泄露服务端关键字本身。
在一种可能的实现方式中,S202生成服务端关键字的加密值的具体实现可以包括:
将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
服务端将每一条服务端关键字分别与第二数值进行椭圆曲线算法中的k倍点计算,得到一组第四计算结果发送给服务端。例如,服务端计算k’*Y,k’为第二数值,和上述实施例中的第二数值相同,Y为服务端关键字,*表示椭圆曲线算法中的k倍点计算。
然后将第四计算结果按位平均切分为两部分,一部分作为服务端关键字的加密值,另一部分作为加密密钥。加密密钥可以用于后续匿踪查询过程中对服务端关键字对应的实际值进行加密。
例如第四计算结果共12字节,前6字节作为客户端关键字的加密值,后6字节作为加密密钥。基于上述示例,令k’*Y=(Y’|value_key_Y’),其中,Y’为服务端关键字的加密值,value_key_Y’为加密密钥。
S203:将服务端关键字的加密值发送给客户端,以使客户端对客户端关键字的加密值与服务端关键字的加密值取交集,得到交集关键字。
每条客户端关键字对应有客户端关键字的加密值,每条服务端关键字对应有服务端关键字的加密值。将服务端关键字的加密值发送给客户端,客户端对客户端关键字的加密值与服务端关键字的加密值取交集,得到交集关键字,交集关键字中包括的是客户端关键字与服务端关键字中相同关键字的加密值。例如,客户端关键字有10万条,服务端关键词有2万条,客户端关键字与服务端关键词的交集有1万条。则通过将10万条客户端关键字的加密值与2万条的服务端关键词取交集得到1万条数据,这1万条数据为客户端关键字与服务端关键字中相同关键字的加密值。另外,基于上述示例,本步骤可以表示为将X’和Y’取交集,得到交集数据集X_query。
S204:响应于客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,查询请求包括待查询关键字的同态加密值,待查询关键字属于交集关键字。
由于交集关键字是客户端关键字的加密值与服务端关键字的加密值的交集,客户端选取交集关键字中的任意一个或多个作为待查询关键字发起匿踪查询请求,服务端必然存在待查询关键字对应的实际值,不会浪费计算开销和通信开销。服务端响应于客户端发送的查询请求,可以利用同态加密完成匿踪查询过程生成查询结果。
在实际应用中,在本申请实施例中,对待查询关键字进行同态加密,例如对X1’进行同态加密得到密文Q,X1’为待查询关键字(也为某一客户端关键字的加密值)。客户端将携带密文Q的查询请求发送给服务端。
服务端预先对各个实际值value使用加密密钥value_key_Y’进行流密码加密,得到stream_enc(value),并构建构造插值多项式G(Y’)=H(Y’)+r*F(Y’),变量为Y’,所得结果为stream_enc(value)。其中,H(Y’)和F(Y’)为变量为Y’的插值多项式函数,r为随机数。则针对服务端第i个value值valuei,有G(Y’i)=stream_enc(valuei)。为了提高服务端的计算效率,服务端构建构造插值多项式可以离线预先完成。
服务端在接收到查询请求后,将Q代入上述插值多项式,得到同态密文G(Q),同时生成同态密文M(Q),M(Q)是关于X'的插值多项式,满足当X'i=Y'i,M(X'i)=0,最后将同态密文M(Q)和G(Q)作为查询结果发送给客户端。
S205:将查询结果发送给客户端,以使客户端对查询结果进行同态解密并使用流密码密钥解密,得到待查询关键字对应的实际值。
客户端获取查询结果后,可以对查询结果进行同态解密并使用待查询关键字对应的流密码密钥解密,得到待查询关键字对应的实际值。
也即,首先对同态密文M(Q)进行同态解密,如果解密结果为0,代表X1’=Y’,也就是待查询关键字与某一服务端关键字的加密值相同,又由X1’=Y’,可以得到value_key_X1’=value_key_Y’。此时对G(Q)同态解密后,再使用value_key_X1’解密,可以得到该Y’对应的实际值value。
基于S201-S205的描述,本申请实施例客户端利用OPRF协议与服务端进行针对客户端关键字的交互处理,获取客户端关键字的加密值以及流密码密钥,同时客户端从服务端获取服务端关键字的加密值。通过对客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字,客户端仅从交集关键字中选取待查询关键字,然后利用同态加密算法向服务端发起查询,获得查询结果。通过客户端与服务端数据集预先求交集,削减了客户端查询数据的量级,降低了后续查询过程中的计算开销以及通信开销。
在实际业务场景中,还存在一技术问题。服务端在进行查询时,一般需要对服务端关键字对应的实际值(value)设置为最长字段的长度,不足的部分进行填充。同时为保证计算效率,一般会限制value字段在1024B之内。但是,在实际应用过程中,服务端保存的value字段长短不一,且差异较大,会引入较大的填充开销。而较长字段往往还会超出1024B的限制。
基于此,针对服务端value字段长度分布不均和长度过长的情况,本申请实施例还提出了服务端针对value字段进行横向切分,以解决value字段长度分布不均引发的额外填充计算开销,或者对value字段进行纵向切分,以解决value字段长度过长引发的计算性能较差的问题。从而控制匿踪查询过程中value字段的大小,提升整体计算性能。
在一种可能的实现方式中,本申请实施例提供的匿踪查询方法还可以包括:
B1:对服务端关键字对应的实际值按照数据长度进行排序。
B2:依据排序结果将服务端关键字对应的实际值划分为多个集合。
B3:将每个集合中的服务端关键字对应的实际值填充到第一数据长度,第一数据长度为该集合中的服务端关键字对应的实际值最长的数据长度。
在实际应用中,服务端关键字对应的实际值(value)字段之间的长度差异可能比较大,较短的value字段需要进行填充,从而满足算法的计算需求。因此,value字段长度越相近,填充内容较小,额外计算开销较小。基于此,提出了value字段的横向切分算法,首先对服务端对应的实际值按照数据长度进行排序。然后将排序后的服务端关键字对应的实际值划分为多个集合。针对每个集合分别进行填充,将每个集合中的服务端关键字对应的实际值填充到该集合中实际值最长的数据长度。
参见图3所示,图中左侧为原始对value字段进行填充的方案,例如图中value_4的长度最长,其他的value字段均需要填充到与value_4的长度一致,填充的内容较多。右侧为本申请实施例提供的value字段的横向切分,在对value字段进行排序后,较短的value字段被划分到同一集合,较长的value字段被划分到同一集合。然后对每个集合中的value字段进行填充。如集合1中,value_1的长度最长,则将集合1中的value字段均填充到与value_1的长度一致。集合m中,value_4的长度最长,则将集合m中的value字段均填充到与value_4的长度一致。由此可见,相对于原始方案,本申请实施例提供的value字段的横向切分,填充的内容较小,从而降低了填充而引入的计算开销。
在对value字段进行填充后,S204响应于客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果的具体实现可以包括:
响应于客户端发送的查询请求,根据待查询关键字的同态加密值生成每个集合中每个服务端关键字对应的查询结果子集;
将各个集合对应的查询结果子集组成查询结果。
也即在本申请实施例中,针对每个集合分别执行匿踪查询算法,生成各个集合对应的查询结果子集,然后对各个查询结果子集取并集得到最终的查询结果,从而通过降低了填充开销,减少了生成查询结果过程中的计算开销。
在一种可能的实现方式中,本申请实施例提供的匿踪查询方法还可以包括:
对每一服务端关键字对应的实际值以第二数据长度为单位切分为多个分块,将数据长度不足第二数据长度的分块填充到第二数据长度。
在实际应用中,若服务端关键字对应的实际值(value)字段普遍较长,例如均大于1024B,则考虑通过value字段的横向切分算法进行切分,以提升整体计算性能。纵向切分算法以第二数据长度为单位,对每一value字段切分为多个分块,每个分块的数据长度为第二数据长度,当切分后的分块长度不足第二数据长度时,将该分块填充到第二数据长度。第二数据长度可以由服务端依据自身数据情况进行选取。参见图4所示,对每一value字段分别进行填充,也可以降低由填充而引入的计算开销。
在对value字段进行切分后,S204响应于客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果的具体实现可以包括:
响应于客户端发送的查询请求,根据待查询关键字的同态加密值生成针对每个服务端关键字对应的实际值的第i个分块的查询结果子集;其中,i为1至n的正整数,n为每个服务端关键字对应的实际值的分块数量;
将每个服务端关键字对应的实际值的各个分块对应的查询结果子集组成查询结果。
在本申请实施例中,针对各个Value字段中第i分块执行匿踪查询,得到查询结果子集,将各个查询结果子集组成查询结果。例如,各个Value字段最多具有4个分块,则分别对各个Value字段中第1分块执行匿踪查询,对各个Value字段中第2分块执行匿踪查询,对各个Value字段中第3分块执行匿踪查询,对各个Value字段中第4分块执行匿踪查询,得到4个分块对应的查询结果子集,将4个分块对应的查询结果子集按顺序进行拼接,组成完整的查询结果。从而通过降低了填充开销,减少了生成查询结果过程中的计算开销。
参见图5所示,该图为本申请实施例提供的一种匿踪查询方法的流程图,本实施例从客户端作为执行主体的角度进行说明。如图5所示,该方法可以包括S501-S505:
S501:利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据交互处理的结果获取客户端关键字的加密值以及流密码密钥。
在一种可能的实现方式中,S301利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取客户端关键字的加密值以及流密码密钥的具体实现可以包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
在一种可能的实现方式中,利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
C1:将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算,得到第一计算结果,将第一计算结果发送给服务端。
C2:获取服务端发送的第二计算结果,第二计算结果为服务端将第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算得到的。
C3:将第二计算结果与第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将第三计算结果按位切分为客户端关键字的加密值以及流密码密钥。
S502:从服务端获取服务端关键字的加密值。
在一种可能的实现方式中,服务端关键字的加密值的生成过程包括:
服务端将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
S503:对客户端关键字的加密值与服务端关键字的加密值取交集,得到交集关键字。
S504:向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果。
S505:从服务端获取查询结果,对所述查询结果进行同态解密并使用流密码密钥解密,得到待查询关键字对应的实际值。
另外,如果根据业务场景确定客户端数据量级与服务端数据量级相近时,可以不执行S502-S503,直接从客户端关键字的加密值中选取待查询关键字,并执行后续步骤,完成匿踪查询过程。
S501-S505是客户端作为执行主体的匿踪查询过程,其实现过程的相关说明可以参见上述S201-S205各步骤中的说明,为避免重复,在此不再赘述。
基于S501-S505的描述,本申请实施例客户端利用OPRF协议与服务端进行针对客户端关键字的交互处理,获取客户端关键字的加密值以及流密码密钥,同时客户端从服务端获取服务端关键字的加密值。通过对客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字,客户端仅从交集关键字中选取待查询关键字,然后利用同态加密算法向服务端发起查询,获得查询结果。通过客户端与服务端数据集预先求交集,削减了客户端查询数据的量级,降低了后续查询过程中的计算开销以及通信开销。
基于上述方法实施例提供的一种匿踪查询方法,本申请实施例还提供了一种匿踪查询装置,下面将结合附图对该装置进行说明。
参见图6所示,该图为本申请实施例提供的一种匿踪查询装置的结构示意图。如图6所示,该匿踪查询装置包括:
交互单元601,用于利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成单元602,用于生成服务端关键字的加密值;
第一发送单元603,用于将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
查询单元604,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
第二发送单元605,用于将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
在一种可能的实现方式中,所述交互单元具体用于:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
在一种可能的实现方式中,所述交互单元,包括:
接收子单元,用于接收客户端发送的第一计算结果,所述第一计算结果是所述客户端将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算得到的;
第三计算子单元,用于将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果;
发送子单元,用于将所述第二计算结果发送给所述客户端,以使所述客户端将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
在一种可能的实现方式中,所述生成单元具体用于:
将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将所述第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
在一种可能的实现方式中,所述装置还包括:
排序单元,用于对所述服务端关键字对应的实际值按照数据长度进行排序;
划分单元,用于依据排序结果将所述服务端关键字对应的实际值划分为多个集合;
填充单元,用于将每个所述集合中的服务端关键字对应的实际值填充到第一数据长度,所述第一数据长度为该集合中的服务端关键字对应的实际值最长的数据长度;
所述查询单元,包括:
第一生成子单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成每个所述集合中每个服务端关键字对应的查询结果子集;
第一组成子单元,用于将各个所述集合对应的查询结果子集组成查询结果。
在一种可能的实现方式中,所述装置还包括:
切分单元,用于对每一所述服务端关键字对应的实际值以第二数据长度为单位切分为多个分块,将数据长度不足所述第二数据长度的分块填充到所述第二数据长度;
所述查询单元,包括:
第二生成子单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成针对每个服务端关键字对应的实际值的第i个分块的查询结果子集;其中,i为1至n的正整数,n为所述每个服务端关键字对应的实际值的分块数量;
第二组成子单元,用于将每个所述服务端关键字对应的实际值的各个分块对应的查询结果子集组成查询结果。
基于上述方法实施例提供的另一种匿踪查询方法,本申请实施例还提供了另一种匿踪查询装置,下面将结合附图对该装置进行说明。
参见图7所示,该图为本申请实施例提供的另一种匿踪查询装置的结构示意图。如图7所示,该匿踪查询装置包括:
第一获取单元701,用于利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
第二获取单元702,用于从所述服务端获取服务端关键字的加密值;
取交单元703,用于对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
第三发送单元704,用于向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
解密单元705,用于从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
在一种可能的实现方式中,所述第一获取单元具体用于:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
在一种可能的实现方式中,所述第一获取单元,包括:
第一计算子单元,用于将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算,得到第一计算结果,将所述第一计算结果发送给服务端;
获取子单元,用于获取所述服务端发送的第二计算结果,所述第二计算结果为所述服务端将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算得到的;
第二计算子单元,用于将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
基于上述方法实施例提供的一种匿踪查询方法,本申请还提供一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述匿踪查询方法。
下面参考图8,其示出了适于用来实现本申请实施例的电子设备1300的结构示意图。本申请实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(Personal Digital Assistant,个人数字助理)、PAD(portable androiddevice,平板电脑)、PMP(Portable Media Player,便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV(television,电视机)、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,电子设备1300可以包括处理装置(例如中央处理器、图形处理器等)1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储装置1306加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。在RAM1303中,还存储有电子设备1300操作所需的各种程序和数据。处理装置1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
通常,以下装置可以连接至I/O接口1305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1307;包括例如磁带、硬盘等的存储装置1306;以及通信装置1309。通信装置1309可以允许电子设备1300与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备1300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1309从网络上被下载和安装,或者从存储装置1306被安装,或者从ROM1302被安装。在该计算机程序被处理装置1301执行时,执行本申请实施例的方法中限定的上述功能。
本申请实施例提供的电子设备与上述实施例提供的一种匿踪查询方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
基于上述方法实施例提供的一种匿踪查询方法,本申请实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如上述任一实施例所述的匿踪查询方法。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述匿踪查询方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请实施例的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定,例如,语音数据采集模块还可以被描述为“数据采集模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本申请实施例的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本申请的一个或多个实施例,【示例一】提供了一种匿踪查询方法,所述方法包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成服务端关键字的加密值;
将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
根据本申请的一个或多个实施例,【示例二】提供了一种匿踪查询方法,所述利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
根据本申请的一个或多个实施例,【示例三】提供了一种匿踪查询方法,所述利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
接收客户端发送的第一计算结果,所述第一计算结果是所述客户端将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算得到的;
将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果;
将所述第二计算结果发送给所述客户端,以使所述客户端将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
根据本申请的一个或多个实施例,【示例四】提供了一种匿踪查询方法,所述生成服务端关键字的加密值,包括:
将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将所述第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
根据本申请的一个或多个实施例,【示例五】提供了一种匿踪查询方法,所述方法还包括:
对所述服务端关键字对应的实际值按照数据长度进行排序;
依据排序结果将所述服务端关键字对应的实际值划分为多个集合;
将每个所述集合中的服务端关键字对应的实际值填充到第一数据长度,所述第一数据长度为该集合中的服务端关键字对应的实际值最长的数据长度;
所述响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,包括:
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成每个所述集合中每个服务端关键字对应的查询结果子集;
将各个所述集合对应的查询结果子集组成查询结果。
根据本申请的一个或多个实施例,【示例六】提供了一种匿踪查询方法,所述方法还包括:
对每一所述服务端关键字对应的实际值以第二数据长度为单位切分为多个分块,将数据长度不足所述第二数据长度的分块填充到所述第二数据长度;
所述响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,包括:
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成针对每个服务端关键字对应的实际值的第i个分块的查询结果子集;其中,i为1至n的正整数,n为所述每个服务端关键字对应的实际值的分块数量;
将每个所述服务端关键字对应的实际值的各个分块对应的查询结果子集组成查询结果。
根据本申请的一个或多个实施例,【示例七】提供了一种匿踪查询方法,所述方法包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
从所述服务端获取服务端关键字的加密值;
对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
根据本申请的一个或多个实施例,【示例八】提供了一种匿踪查询方法,所述利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
根据本申请的一个或多个实施例,【示例九】提供了一种匿踪查询方法,利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算,得到第一计算结果,将所述第一计算结果发送给服务端;
获取所述服务端发送的第二计算结果,所述第二计算结果为所述服务端将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算得到的;
将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
根据本申请的一个或多个实施例,【示例十】提供了一种匿踪查询装置,所述装置包括:
交互单元,用于利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成单元,用于生成服务端关键字的加密值;
第一发送单元,用于将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
查询单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
第二发送单元,用于将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
根据本申请的一个或多个实施例,【示例十一】提供了一种匿踪查询装置,所述交互单元具体用于:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
根据本申请的一个或多个实施例,【示例十二】提供了一种匿踪查询装置,所述交互单元,包括:
接收子单元,用于接收客户端发送的第一计算结果,所述第一计算结果是所述客户端将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算得到的;
第三计算子单元,用于将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果;
发送子单元,用于将所述第二计算结果发送给所述客户端,以使所述客户端将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
根据本申请的一个或多个实施例,【示例十三】提供了一种匿踪查询装置,所述生成单元具体用于:
将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将所述第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
根据本申请的一个或多个实施例,【示例十四】提供了一种匿踪查询装置,所述装置还包括:
排序单元,用于对所述服务端关键字对应的实际值按照数据长度进行排序;
划分单元,用于依据排序结果将所述服务端关键字对应的实际值划分为多个集合;
填充单元,用于将每个所述集合中的服务端关键字对应的实际值填充到第一数据长度,所述第一数据长度为该集合中的服务端关键字对应的实际值最长的数据长度;
所述查询单元,包括:
第一生成子单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成每个所述集合中每个服务端关键字对应的查询结果子集;
第一组成子单元,用于将各个所述集合对应的查询结果子集组成查询结果。
根据本申请的一个或多个实施例,【示例十五】提供了一种匿踪查询装置,所述装置还包括:
切分单元,用于对每一所述服务端关键字对应的实际值以第二数据长度为单位切分为多个分块,将数据长度不足所述第二数据长度的分块填充到所述第二数据长度;
所述查询单元,包括:
第二生成子单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成针对每个服务端关键字对应的实际值的第i个分块的查询结果子集;其中,i为1至n的正整数,n为所述每个服务端关键字对应的实际值的分块数量;
第二组成子单元,用于将每个所述服务端关键字对应的实际值的各个分块对应的查询结果子集组成查询结果。
根据本申请的一个或多个实施例,【示例十六】提供了一种匿踪查询装置,所述装置包括:
第一获取单元,用于利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
第二获取单元,用于从所述服务端获取服务端关键字的加密值;
取交单元,用于对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
第三发送单元,用于向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
解密单元,用于从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
根据本申请的一个或多个实施例,【示例十七】提供了一种匿踪查询装置,所述第一获取单元具体用于:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
根据本申请的一个或多个实施例,【示例十八】提供了一种匿踪查询装置,所述第一获取单元,包括:
第一计算子单元,用于将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算,得到第一计算结果,将所述第一计算结果发送给服务端;
获取子单元,用于获取所述服务端发送的第二计算结果,所述第二计算结果为所述服务端将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算得到的;
第二计算子单元,用于将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
根据本申请的一个或多个实施例,【示例十九】提供了一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如【示例一】至【示例六】中任一所述的匿踪查询方法,或者【示例七】至【示例九】中任一所述的匿踪查询方法。
根据本申请的一个或多个实施例,【示例二十】提供了一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如【示例一】至【示例六】中任一所述的匿踪查询方法,或者【示例七】至【示例九】中任一所述的匿踪查询方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种匿踪查询方法,其特征在于,所述方法包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成服务端关键字的加密值;
将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
2.根据权利要求1所述的方法,其特征在于,所述利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
3.根据权利要求2所述的方法,其特征在于,所述利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的目标计算,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
接收客户端发送的第一计算结果,所述第一计算结果是所述客户端将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算得到的;
将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算,得到第二计算结果;
将所述第二计算结果发送给所述客户端,以使所述客户端将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
4.根据权利要求1所述的方法,其特征在于,所述生成服务端关键字的加密值,包括:
将服务端关键字与第二数值进行椭圆曲线算法中的k倍点计算得到第四计算结果,将所述第四计算结果按位切分为服务端关键字的加密值以及加密密钥。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述服务端关键字对应的实际值按照数据长度进行排序;
依据排序结果将所述服务端关键字对应的实际值划分为多个集合;
将每个所述集合中的服务端关键字对应的实际值填充到第一数据长度,所述第一数据长度为该集合中的服务端关键字对应的实际值最长的数据长度;
所述响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,包括:
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成每个所述集合中每个服务端关键字对应的查询结果子集;
将各个所述集合对应的查询结果子集组成查询结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对每一所述服务端关键字对应的实际值以第二数据长度为单位切分为多个分块,将数据长度不足所述第二数据长度的分块填充到所述第二数据长度;
所述响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,包括:
响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成针对每个服务端关键字对应的实际值的第i个分块的查询结果子集;其中,i为1至n的正整数,n为所述每个服务端关键字对应的实际值的分块数量;
将每个所述服务端关键字对应的实际值的各个分块对应的查询结果子集组成查询结果。
7.一种匿踪查询方法,其特征在于,所述方法包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
从所述服务端获取服务端关键字的加密值;
对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
8.根据权利要求7所述的方法,其特征在于,所述利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥;所述目标计算为椭圆曲线算法中的k倍点计算。
9.根据权利要求8所述的方法,其特征在于,利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的目标计算,根据所述目标计算的结果获取所述客户端关键字的加密值以及流密码密钥,包括:
将客户端关键字与第一数值进行椭圆曲线算法中的k倍点计算,得到第一计算结果,将所述第一计算结果发送给服务端;
获取所述服务端发送的第二计算结果,所述第二计算结果为所述服务端将所述第一计算结果与第二数值进行椭圆曲线算法中的k倍点计算得到的;
将所述第二计算结果与所述第一数值的逆元进行椭圆曲线算法中的k倍点计算,得到第三计算结果,将所述第三计算结果按位切分为所述客户端关键字的加密值以及流密码密钥。
10.一种匿踪查询装置,其特征在于,所述装置包括:
交互单元,用于利用不经意伪随机函数OPRF协议与客户端进行针对客户端关键字的交互处理,以使所述客户端根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
生成单元,用于生成服务端关键字的加密值;
第一发送单元,用于将所述服务端关键字的加密值发送给所述客户端,以使所述客户端对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
查询单元,用于响应于所述客户端发送的查询请求,根据待查询关键字的同态加密值生成查询结果,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字;
第二发送单元,用于将所述查询结果发送给所述客户端,以使所述客户端对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
11.一种匿踪查询装置,其特征在于,所述装置包括:
第一获取单元,用于利用不经意伪随机函数OPRF协议与服务端进行针对客户端关键字的交互处理,根据所述交互处理的结果获取所述客户端关键字的加密值以及流密码密钥;
第二获取单元,用于从所述服务端获取服务端关键字的加密值;
取交单元,用于对所述客户端关键字的加密值与所述服务端关键字的加密值取交集,得到交集关键字;
第三发送单元,用于向所述服务端发送查询请求,所述查询请求包括待查询关键字的同态加密值,所述待查询关键字属于所述交集关键字,以使所述服务端响应于所述查询请求,根据所述待查询关键字的同态加密值生成查询结果;
解密单元,用于从所述服务端获取所述查询结果,对所述查询结果进行同态解密并使用所述流密码密钥解密,得到所述待查询关键字对应的实际值。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的匿踪查询方法,或者权利要求7-9中任一所述的匿踪查询方法。
13.一种计算机可读介质,其特征在于,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-6中任一所述的匿踪查询方法,或者权利要求7-9中任一所述的匿踪查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211730069.0A CN116010678B (zh) | 2022-12-30 | 2022-12-30 | 一种匿踪查询方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211730069.0A CN116010678B (zh) | 2022-12-30 | 2022-12-30 | 一种匿踪查询方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116010678A CN116010678A (zh) | 2023-04-25 |
CN116010678B true CN116010678B (zh) | 2024-04-12 |
Family
ID=86033259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211730069.0A Active CN116010678B (zh) | 2022-12-30 | 2022-12-30 | 一种匿踪查询方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010678B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117235802B (zh) * | 2023-11-13 | 2024-01-26 | 翼方健数(北京)信息科技有限公司 | 一种基于隐私计算的条件匿踪查询方法、系统和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018065707A1 (fr) * | 2016-10-03 | 2018-04-12 | Orange | Procédé et dispositif de détection d'intrusions sur un réseau utilisant un algorithme de chiffrement homomorphe |
CN108777623A (zh) * | 2018-05-03 | 2018-11-09 | 上海海事大学 | 一种基于模糊关键字搜索的可撤销公钥加密方法 |
CN110618999A (zh) * | 2019-08-01 | 2019-12-27 | 平安科技(深圳)有限公司 | 数据的查询方法及装置、计算机存储介质、电子设备 |
EP3874671A1 (en) * | 2019-04-05 | 2021-09-08 | Google LLC | Methods for protecting privacy |
CN115098649A (zh) * | 2022-08-25 | 2022-09-23 | 北京融数联智科技有限公司 | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 |
CN115134082A (zh) * | 2022-05-31 | 2022-09-30 | 西北工业大学 | 一种隐私保护的社交媒体假消息检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496638B2 (en) * | 2016-12-07 | 2019-12-03 | City University Of Hong Kong | Systems and methods for privacy-assured similarity joins over encrypted datasets |
US11070366B2 (en) * | 2018-05-08 | 2021-07-20 | Nec Corporation | Dynamic anonymous password-authenticated key exchange (APAKE) |
US11239996B2 (en) * | 2019-12-18 | 2022-02-01 | International Business Machines Corporation | Weighted partial matching under homomorphic encryption |
-
2022
- 2022-12-30 CN CN202211730069.0A patent/CN116010678B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018065707A1 (fr) * | 2016-10-03 | 2018-04-12 | Orange | Procédé et dispositif de détection d'intrusions sur un réseau utilisant un algorithme de chiffrement homomorphe |
CN108777623A (zh) * | 2018-05-03 | 2018-11-09 | 上海海事大学 | 一种基于模糊关键字搜索的可撤销公钥加密方法 |
EP3874671A1 (en) * | 2019-04-05 | 2021-09-08 | Google LLC | Methods for protecting privacy |
CN110618999A (zh) * | 2019-08-01 | 2019-12-27 | 平安科技(深圳)有限公司 | 数据的查询方法及装置、计算机存储介质、电子设备 |
CN115134082A (zh) * | 2022-05-31 | 2022-09-30 | 西北工业大学 | 一种隐私保护的社交媒体假消息检测方法 |
CN115098649A (zh) * | 2022-08-25 | 2022-09-23 | 北京融数联智科技有限公司 | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 |
Non-Patent Citations (4)
Title |
---|
Chen, Hao等.Labeled PSI from Fully Homomorphic Encryption with Malicious Security.《PROCEEDINGS OF THE 2018 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS'18)》.2019,第1223-1237页. * |
Differentially Private Set Intersection for Asymmetrical ID Alignment;Yuanyuan He等;《IEEE Transactions on Information Forensics and Security》;20220919;第3479 - 3494页 * |
关于集合运算的公开可验证委托计算研究;王婷婷;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215;I138-75 * |
面向隐私保护的密文数据检索与集合操作的关键技术研究;邱硕;《中国博士学位论文全文数据库 信息科技辑》;20170915;I138-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN116010678A (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10972251B2 (en) | Secure web browsing via homomorphic encryption | |
US20140233727A1 (en) | Method for secure substring search | |
CN114696990B (zh) | 基于全同态加密的多方计算方法、系统及相关设备 | |
CN109495266B (zh) | 基于随机数的数据加密方法及装置 | |
CN115269938B (zh) | 基于同态加密的关键词匿踪查询方法、系统及相关装置 | |
CN116010678B (zh) | 一种匿踪查询方法、装置及设备 | |
CN112073444B (zh) | 数据集的处理方法、装置和服务器 | |
CN114881247A (zh) | 基于隐私计算的纵向联邦特征衍生方法、装置、介质 | |
WO2022132617A1 (en) | Using secure multi-party computation and probabilistic data structures to protect access to information | |
CN115965093A (zh) | 模型训练方法、装置、存储介质及电子设备 | |
CN113259353A (zh) | 信息处理方法、装置和电子设备 | |
CN111130791B (zh) | 数据签名方法、电子设备及计算机可读存储介质 | |
CN112671717A (zh) | 对加密后的订阅和事件进行匹配的方法 | |
CN111798236A (zh) | 交易数据加、解密方法、装置及设备 | |
CN110765238A (zh) | 数据加密查询方法及装置 | |
CN114726524B (zh) | 目标数据的排序方法、装置、电子设备及存储介质 | |
CN114726580B (zh) | 数据处理方法和装置 | |
CN114726611A (zh) | 多方隐私集合求交方法、系统和装置 | |
CN115205089A (zh) | 图像加密方法、网络模型的训练方法、装置及电子设备 | |
CN112242978B (zh) | 一种处理数据的方法和装置 | |
CN114584284A (zh) | 同态加密操作方法、装置和电子设备 | |
CN115114360A (zh) | 数据对比方法、装置、计算机设备、存储介质 | |
US11310045B2 (en) | Compression and oblivious expansion of RLWE ciphertexts | |
CN114398658A (zh) | 数据处理方法及设备 | |
CN110781523B (zh) | 用于处理信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |