CN117729535A - 一种查询方法、电子设备及系统 - Google Patents
一种查询方法、电子设备及系统 Download PDFInfo
- Publication number
- CN117729535A CN117729535A CN202310565890.XA CN202310565890A CN117729535A CN 117729535 A CN117729535 A CN 117729535A CN 202310565890 A CN202310565890 A CN 202310565890A CN 117729535 A CN117729535 A CN 117729535A
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- data
- query
- time
- cloud
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 116
- 238000004422 calculation algorithm Methods 0.000 claims description 148
- 238000004891 communication Methods 0.000 claims description 48
- 230000004044 response Effects 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 10
- 230000002427 irreversible effect Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 description 164
- 230000006835 compression Effects 0.000 description 163
- 238000012545 processing Methods 0.000 description 88
- 238000013461 design Methods 0.000 description 34
- 210000004027 cell Anatomy 0.000 description 30
- 230000006870 function Effects 0.000 description 21
- 230000002829 reductive effect Effects 0.000 description 20
- 230000008859 change Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000010295 mobile communication Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000001010 compromised effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 210000004899 c-terminal region Anatomy 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 241000662429 Fenerbahce Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
一种查询方法、电子设备及系统,应用于信息安全技术领域。其中,方法包括:第一设备向第二设备发送第一查询请求,第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文。第二设备向第一设备发送第二密文和第二设备中数据集的增量数据对应的第一密文集,第二密文是使用第二密钥对第一密文加密得到的,第一密文集中的密文是使用第二密钥对增量数据加密后得到的,增量数据是指:从t1时刻到t2时刻之间数据集中状态发生更新的数据;状态包括注销状态或新增状态。第一设备基于第二密文、第一密文集和第一密钥,确定第一查询结果,第一查询结果指示第二设备中是否包括第一数据。
Description
技术领域
本申请实施例涉及信息安全技术领域,尤其涉及一种查询方法、电子设备及系统。
背景技术
在使用手机、平板等电子设备的过程中,经常会向云、服务器或者其他设备查询数据。与此同时,在查询过程中,可能涉及到隐私信息的交互。
现有技术中,可以采用隐私集合求交(Private Set Intersection,PSI),在查询过程中实现对隐私信息的保护。
然而,现有的PSI,被查询端(如云、服务器)需要向查询请求端(如手机、平板等电子设备)反馈大量的数据,这些数据的传输需要很大的通信开销,如需要很多的流量。
发明内容
本申请提供一种查询方法、电子设备及系统,可以减少被查询端向查询请求端传输的数据量,节省通信开销。
第一方面,本申请提供一种查询方法,应用于手机、平板、笔记本电脑等第一设备中,第一设备具有向其他设备(如第二设备)查询数据的需求。具体的,第一设备向第二设备发送第一查询请求,第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文。即,第一设备要查询第二设备的数据集中是否包括第一数据。第一设备接收来自第二设备的第二密文和第二设备中数据集的增量数据对应的第一密文集,第二密文是使用第二密钥对第一密文加密得到的,第一密文集中的密文是使用第二密钥对增量数据加密后得到的,增量数据是指:从t1时刻到t2时刻之间数据集中状态发生更新的数据;状态包括注销状态或新增状态,t2时刻是当前时刻,t1时刻是t2时刻之前第一设备查询数据集中是否包括第一数据的过程中的一时刻。即,t1时刻是某一次查询第一数据的历史查询(如前一次查询)中,手机210向云220发送查询请求至手机210得到该次历史查询的查询结果之间的一时刻。例如,第一查询请求之前紧邻的一次查询(记为前一次查询)中,第一设备查询了第一数据,则t1时刻可以是针对该前一次查询,得到查询结果的时刻。
应理解,t1时刻第一设备向第二设备查询过第一数据,则表明第一数据是第一设备历史查询过的数据。也就是说,前述查询方法,针对的是t1时刻已经查询过的第一数据,在t2时刻再次查询的场景。在该场景中,第二设备不会返回第二设备的数据集中所有数据的密文,而只会返回数据集中,在t1时刻和t2时刻之间新增或者注销的数据的密文构成的密文集。从而可以减少第二设备向第一设备返回的数据量,节省通信开销。
示例性的,在t1时刻,第一设备向第二设备查询中注册用户的号码中是否包括号码1,以及,第一查询请求用于查询第二设备中注册用户的号码中是否包括号码1。即,号码1为第一数据,注册用户的号码为第二设备中的数据集。那么,针对第一查询请求,第二设备可以仅在查询响应中携带注册用户的号码中,在t1时刻至t2时刻之间注销或者新增的号码(即增量数据)的密文(即第一密文集),而不携带所有注册用户的号码的密文。
然后,第一设备基于第二密文、第一密文集和第一密钥,确定第一查询结果,第一查询结果指示第二设备中是否包括第一数据。
综上所述,采用本申请,针对历史查询过的数据的查询,第二设备可以仅返回增量数据的第一密文集,减少第二设备和第一设备之间的数据传输量,节省通信开销。
在一种可能的设计方式中,第一查询请求中还包括第一数据的第一哈希特征。其中,增量数据是指:从t1时刻到t2时刻之间数据集中状态发生更新的数据中,第二哈希特征与第一哈希特征相同的数据。
应理解,如果第一数据和增量数据中的某一数据相同,则两者的哈希值必然相同,哈希特征也自然相同。那么,通过哈希特征,可以找到与第一数据可能相同的数据。因此,在从t1时刻到t2时刻之间数据集中状态发生更新的数据中,进一步找到第二哈希特征与第一哈希特征相同的数据作为增量数据,则增量数据是可能与第一数据相同的数据。
也就是说,采用本设计方式,第二设备并不是将所有在t1时刻到t2时刻之间数据集中状态发生更新的数据的密文下发至第一设备,而是将这些状态发生更新的数据中的一部分数据下发至第一设备,从而可以进一步减少数据传输量,进一步节省通信开销。
在另一种可能的设计方式中,第一哈希特征包括第一数据的哈希值中预设比特位(即部分比特位)的信息,第二哈希特征包括状态发生更新的数据的哈希值中预设比特位的信息。例如,预设比特位为哈希值中从高至低的一个或多个比特位,如8个、12个、16个比特位等。其中,从高至低的一个或多个比特位也可以称为哈希前缀。
在另一种可能的设计方式中,第一设备基于第二密文、第一密文集和第一密钥,确定第一查询结果,包括:第一设备使用第一密钥对第二密文解密,得到第三密文。第一设备比对第三密文和第一密文集,得到第一比对结果,第一比对结果指示第一密文集中是否包括第三密文。第一设备基于第一比对结果,确定第一查询结果。
应理解,通常情况下,第一数据的数量不会很多。但是,第二设备中的数据集包括的数据是很多的,并且,数据集中的数据变化也是很频繁的,即增量数据是很多的。简言之,第一数据的数量通常少于增量数据的数量的。以第一数据是手机的通讯录中保存的联系人号码,数据集是某应用的注册用户的号码为例,联系人号码通常也就几十或者几百个,而应用的注册用户则往往很多,一般可以达到几万、几十万甚至更多,注册用户随时都在变化,则注册用户的号码的增量数据一般也都是多于联系人号码的。
相应的,第二密文的数量也就少于第一密文集中的密文数量。在此前提下,与对第一密文集中的密文加密的运算量相比,对第二密文解密的运算量显然更小。因此,本设计方式中,采用先解密第二密文,再比对的方式,可以减少第一设备的运算量。
在另一种可能的设计方式中,第一设备基于第一比对结果,确定第一查询结果,包括:如果第一密文集中包括与第三密文相等的新增数据的密文,则表明第一数据与第二设备的数据集中一新增数据相同,如联系人号码与新增注册用户的号码相同,可以得到第一查询结果指示第二设备中包括第一数据。如果第一密文集中包括与第三密文相等的注销数据的密文,则表明第一数据与第二设备的数据集中一注销数据相同,如联系人号码与注销的注册用户的号码相同,可以得到第一查询结果指示第二设备中不包括第一数据。如果第一密文集中不包括与第三密文相等的密文,则表明增量数据中不包括第一数据。与此同时,如果t1时刻第一设备查询到第二设备中不包括第一数据,则表明非增量数据(即数据集中除增量数据之外的数据)中也不包括第一数据,在可以得到第一查询结果指示第二设备中不包括第一数据。如果第一密文集中不包括与第三密文相等的密文,则表明增量数据中不包括第一数据。与此同时,如果t1时刻第一设备查询到第二设备中包括第一数据,则表明非增量数据中包括第一数据,则可以得到第一查询结果指示第二设备中包括第一数据。
在另一种可能的设计方式中,在确定第一查询结果之前,第一设备检测到第一数据不是t1时刻至t2时刻之间新增的。
实际中,只有针对历史查询过的第一数据,才能依据增量数据的密文,得到查询结果。而对于历史未查询过的数据,则需要依据全量数据(如数据集中的所有数据,或者数据集中可能与该未查询过的数据相同的数据)的密文,才能得到查询结果。因此,在本设计方式中,第一设备需要确定第一数据是历史查询过的数据,如确定第一数据不是在t1时刻至t2时刻之间新增的。这样,可以保证查询结果的准确性。
示例性的,第一设备中记录有各条数据(如各个联系人号码)的新增标签,用于指示数据是否是新增的。第一设备通过查询数据的新增标签,即可检测到数据是否为新增的。
在另一种可能的设计方式中,第二查询请求和第一查询请求为前后两次相邻的查询请求,第二查询请求为t1时刻第一设备查询数据集中是否包括第一数据的查询请求。
在另一种可能的设计方式中,在t1时刻第一设备查询数据集中是否包括第一数据之后,第一设备记录查询时间,查询时间指示t1时刻。其中,第一查询请求中还包括查询时间,查询时间用于第二设备确定第一密文集。
在每次查询后,第一设备都记录查询时间,并携带在下一次查询请求中,便于第二设备明确t1时刻,从而确定出第一密文集。
在另一种可能的设计方式中,第二设备可以对先对增量数据使用第二密钥加密,进一步对加密得到的密文使用第一压缩算法压缩得到压缩密文,即:第一密文集中的密文为使用第一压缩算法压缩得到的压缩密文。这样,第一密文集中都是压缩密文,可以进一步减少第二设备向第一设备传输的数据量,节省通信开销。
相应的,第一设备可以使用第一密钥解密第二密文,再使用第一压缩算法压缩,得到第三密文。这样,第三密文与第一密文集中的密文都是使用第二密钥加密、再使用第一压缩算法压缩的压缩密文,两者才具有可比性。
在另一种可能的设计方式中,第一密文集中的密文为使用第一压缩算法压缩得到的压缩密文,或者,第一密文集中的密文不是压缩密文。也就是说,第一密文集中的密文可能是压缩密文,也可能不是压缩密文。示例性的,如果不能保证不同增量数据的密文压缩后得到的压缩密文不存在碰撞(即没有相同的压缩密文),则不会对增量数据的密文压缩。反之,如果可以保证不同增量数据的密文压缩后得到的压缩密文不存在碰撞,则可以对增量数据的密文压缩。这样,可以避免出现压缩碰撞,提高查询结果的准确性。
相应的,第一设备在接收到查询响应之后,如果确定第一密文集中的密文的长度大于第一长度,则表明第一密文集中的密文不是压缩密文,该情况下,第一设备使用第一密钥解密第二密文即可得到第三密文,而无需对解密后的结果进一步压缩。如果确定第一密文集中的密文的长度小于或等于第一长度,则表明第一密文集中的密文是压缩密文,该情况下,第一设备可以使用第一密钥解密第二密文,再使用第一压缩算法压缩,得到第三密文。这样,可以保证第三密文与第一密文集中的密文都是使用第二密钥加密的密文,或者第三密文与第一密文集中的密文都是使用第二密钥加密、再使用第一压缩算法压缩的压缩密文,使得第三密文和第一密文集中的密文具有可比性。
在另一种可能的设计方式中,第一密文集中的密文为使用第一压缩算法压缩得到的压缩密文,或者,第一密文集中的密文为使用第二压缩算法压缩得到的压缩密文。也就是说,第一密文集中的密文可能是使用第一压缩算法压缩得到的压缩密文,也可能是使用第二压缩算法压缩得到的压缩密文。其中,第二设备采用第一压缩算法或者第二压缩算法,都是为了保证第一密文集中的密文不会存在碰撞。这样,可以避免出现压缩碰撞,提高查询结果的准确性。
相应的,第一设备在接收到查询响应之后,可以使用第一密钥解密第二密文,再使用与第一密文集中的密文的长度相匹配的目标压缩算法压缩,得到第三密文。其中,第一密文集中的密文的长度为第二长度,第二长度是第一压缩算法压缩得到的压缩密文的长度,该情况下,目标压缩算法则为第一压缩算法。第一密文集中的密文的长度为第三长度,第三长度是第二压缩算法压缩得到的压缩密文的长度,该情况下,目标压缩算法则为第二压缩算法。这样,可以保证第三密文与第一密文集中的密文都是使用第二密钥加密、再使用第一压缩算法压缩得到的压缩密文,或者都是使用第二密钥加密、再使用第二压缩算法压缩得到的压缩密文,使得第三密文和第一密文集中的密文具有可比性。
在另一种可能的设计方式中,压缩前的密文包括多个比特位,压缩后的密文包括压缩前的密文中部分比特位(如第二比特位)的信息。或者,压缩前的密文的哈希值包括多个比特位压缩后的密文中包括压缩前的密文的哈希值中部分比特位的信息。即,取压缩前的密文或者压缩前的密文的哈希值中部分比特位的信息作为压缩后的密文。
第二方面,本申请提供一种查询方法,应用于云设备、服务器等提供查询服务的第二设备。具体的,第二设备接收来自第一设备的第一查询请求,第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文。第二设备向第一设备发送第二密文和第二设备中数据集的增量数据对应的第一密文集,第二密文是使用第二密钥对第一密文加密得到的,第一密文集中的密文是使用第二密钥对增量数据加密后得到的,增量数据是指:从t1时刻到t2时刻之间第二设备的数据集中状态发生更新的数据;状态包括注销状态或新增状态,t2时刻是当前时刻,t1时刻是t2时刻之前第一设备查询数据集中是否包括第一数据的过程中的一时刻。关于该查询方法的原理及效果,可以参见第一方面的相关说明,此处不再赘述。
在一种可能的设计方式中,第一查询请求中还包括第一特征信息,第一特征信息是采用不可逆的第一加密算法对第一数据加密得到的密文的特征信息。其中,增量数据是指:从t1时刻到t2时刻之间数据集中状态发生更新的数据中,第二特征信息与第一特征信息匹配的数据,第二特征信息是使用第一加密算法对状态发生更新的数据加密得到的密文的特征信息。关于该查询方法的原理及效果,可以参见第一方面的可能设计方式中的相关说明,此处不再赘述。
在另一种可能的设计方式中,在第二设备向第一设备发送第二密文和第二设备中数据集的增量数据对应的第一密文集之前,第二设备检测到第一查询请求为第一设备非首次查询第二设备的数据集的查询请求。
实际中,首次查询时,则没有历史的查询结果可以参考,第二设备需要向第一设备返回全量数据(如数据集中的所有数据,或者数据集中可能与查询的数据相同的数据)的密文,以供第一设备得到完整的查询结果。因此,在本设计方式中,第二设备在返回数据前,需要先确定出此次查询为非首次查询。这样,可以保证返回数据的正确性。
示例性的,如果是首次查询,第一设备可以在查询请求中携带指示未发生过查询的指示信息,如时间标签NA;如果是非首次查询,第一设备可以在查询请求中携带指示发生过查询的指示信息,如上一次查询的查询时间。这样,第二设备基于指示信息则可以检测是否为首次查询。
在另一种可能的设计方式中,第一查询请求中包括查询时间,查询时间指示第一设备在t1时刻查询过第二设备的数据集。一方面,该查询时间刻可用于第二设备确定此次为非首次查询;另一方面,该查询时间可用于第二设备明确t1时刻,从而确定出第一密文集。
在另一种可能的设计方式中,在第二设备向第一设备发送第二密文和第二设备中数据集的增量数据对应的第一密文集之前,第二设备检测到第一数据不是t1时刻至t2时刻之间第一设备中的新增数据。
实际中,只有针对历史查询过的第一数据,第二设备才能仅向第一设备返回增量数据的密文。而针对历史未查询过的数据,第二设备需要返回全量数据(如数据集中的所有数据,或者数据集中可能与该未查询过的数据相同的数据)的密文,这样,第一设备才能得到准确的查询结果。因此,在本设计方式中,第一设备需要确定第一数据是历史查询过的数据,如确定第一数据不是在t1时刻至t2时刻之间新增的。这样,可以保证查询结果的准确性。
示例性的,查询请求中可以携带指示查询的数据是否为新增数据的新增标签,用于指示数据是否是新增的。第二设备通过新增标签,即可检测到数据是否为新增的。
在另一种可能的设计方式中,在第二设备向第一设备发送查询响应之前,第二设备可以获取增量数据对应的目标处理参数;目标处理参数包括第二密钥、压缩信息;压缩信息包括:用于指示是否压缩使用第二密钥加密的密文的指示信息、以及在指示压缩使用第二密钥加密的密文时所使用的压缩算法。也就是说,第二设备需要先获取目标处理参数,才能处理得到第一密文集。应注意,目标处理参数需要达到如下效果:使用目标处理参数得到的第一密文集中不包括相同的压缩密文。即,通过目标处理参数,可以避免出现压缩碰撞,提高查询结果的准确性。
然后,第二设备基于目标处理参数,处理增量数据后得到第一密文集。其中,第二密钥用于第二设备对增量数据加密。指示信息用于第二设备确定是否需要在对增量数据使用第二密钥加密后,进一步进行压缩。例如,指示信息指示无需压缩使用第二密钥加密的密文,则第二设备只需要对增量数据使用第二密钥加密,即可得到第一密文集中的密文;指示信息指示需要压缩使用第二密钥加密的密文,则第二设备需要对增量数据使用第二密钥加密后、再压缩得到第一密文集中的密文。压缩算法用于第二设备确定对增量数据使用第二密钥加密后、进一步压缩时采用的压缩算法,如第一压缩算法或者第二压缩算法。例如,压缩算法为第一压缩算法,第二设备则使用第一压缩算法对使用第二密钥加密得到的密文压缩,得到第一密文集中的密文。压缩算法为第二压缩算法,第二设备则使用第二压缩算法对使用第二密钥加密得到的密文压缩,得到第一密文集中的密文。从而保证第一密文集中不存在相同的密文。
在另一种可能的设计方式中,可以通过对大量的与第二设备中的数据集中同类型的试验数据进行实验,得到使每组实验数据集对应的实验密文集中都不包括相同的密文的第一处理参数,如得到不同的哈希特征对应的压缩信息,或者得到适用于所有的哈希特征的压缩信息。然后,第二设备可以从第一处理参数中获取到用于对增量数据处理的目标处理参数。例如,第二设备的数据集中包括注册用户的号码,则实验数据可以是大量的电话号码,如国内或者全球所有的电话号码。
具体的,实验过程如下所示:第二设备基于多个实验数据的哈希特征对多个实验数据分组,得到多个实验数据集。每个实验数据集中都包括哈希特征相同的实验数据。第二设备基于初始处理参数计算各个实验数据集对应的实验密文集,实验密文集包括:使用随机密钥加密实验数据集中的实验数据、再使用第一压缩算法压缩后得到的压缩密文;初始处理参数包括随机密钥以及第一压缩算法。第二设备检测各个实验密文集中是否包括相同的压缩密文,基于检测结果得到第一处理参数。
应理解,使用第一处理参数,可以保证每个实验密文集中都不包括相同的密文。而实际中,增量数据是实验数据的子集,则使用第一处理参数中的目标处理参数,自然可以保证第一密文集中不保存在相同的密文。
进一步的,在实现方式一中,第二设备检测各个实验密文集中是否包括相同的压缩密文,基于检测结果得到第一处理参数,包括:
重复执行下述过程,直至各个实验密文集中都不包括相同的压缩密文则得到第一处理参数:检测各个实验密文集中是否包括相同的压缩密文,若存在至少一个实验密文集中包括相同的压缩密文,第二设备更新初始处理参数中的随机密钥,使用更新后的初始处理参数再次计算各个实验数据集对应的实验密文集。
换言之,任一实验密文集中存在相同的密文,则更新随机密钥,直至使用更新后的随机密钥以及第一压缩算法处理后,每个实验密文集中都不存在相同的密文,则得到第一处理参数包括更新后的随机密钥和第一压缩算法。从而得到使每个实验密文集中都不包括相同的密文的第一处理参数。
应理解,如果使用初始处理参数就能使各个实验密文集中都不包括相同的压缩密文,则第一处理参数就是初始处理参数,即初始的随机密钥和第一压缩算法。
在实现方式一,第一处理参数可以应用到数据集中所有数据的处理。即,所有号码都可以使用第一处理参数来处理。那么,第二设备从检测得到的第一处理参数中,获取增量数据对应的目标处理参数,包括:第二设备将检测得到的第一处理参数,确定为增量数据对应的目标处理参数。也就是说,目标处理参数中的第二密钥即为第一处理参数中的随机密钥,目标处理参数中的压缩算法即为第一处理参数中的第一压缩算法。
在实现方式二中,第二设备检测各个实验密文集中是否包括相同的压缩密文,基于检测结果得到第一处理参数,包括:多个实验密文集中第一实验密文集中包括相同的压缩密文,则第二设备更新初始处理参数中的压缩信息,得到第一哈希特征对应的第一处理参数,第一哈希特征是第一实验密文集对应的实验数据集的哈希特征,更新后的压缩信息中的指示信息指示不压缩使用第二密钥加密的密文。换言之,如果第一实验密文集中包括相同的密文,则得到第一哈希特征对应的第一处理参数中,指示信息指示不压缩使用第二密钥加密的密文,以及第二密钥为初始的随机密钥。
多个实验密文集中第二实验密文集中不包括相同的压缩密文,第二设备将初始处理参数作为第二哈希特征对应的第一处理参数,第二哈希特征是第二实验密文集对应的实验数据集的哈希特征。换言之,如果第二实验密文集中包括相同的密文,则得到第二哈希特征对应的第一处理参数为初始处理参数,即第二密钥为初始的随机密钥,压缩算法为第一压缩算法。
在实现方式三中,第二设备检测各个实验密文集中是否包括相同的压缩密文,基于检测结果得到第一处理参数,包括:多个实验密文集中第一实验密文集中包括相同的压缩密文,第二设备更新初始处理参数中的压缩算法,得到第一哈希特征对应的第一处理参数,第一哈希特征是第一实验密文集对应的实验数据集的哈希特征,更新后的压缩算法压缩得到的密文的长度大于更新前的压缩算法压缩得到的密文的长度。应理解,压缩算法压缩得到的密文更长,则可以降低出现碰撞的可能。换言之,如果第一实验密文集中包括相同的密文,则得到第一哈希特征对应的第一处理参数中,压缩算法为更新后的压缩算法(也可以称为第二压缩算法),以及第二密钥为初始的随机密钥。
多个实验密文集中第二实验密文集中不包括相同的压缩密文,第二设备将初始处理参数作为第二哈希特征对应的第一处理参数,第二哈希特征是第二实验密文集对应的实验数据集的哈希特征。换言之,如果第二实验密文集中包括相同的密文,则得到第二哈希特征对应的第一处理参数为初始处理参数,即第二密钥为初始的随机密钥,压缩算法为第一压缩算法。
在上述实现方式二和实现方式三中,第二设备从检测得到的第一处理参数中,获取增量数据对应的目标处理参数,包括:第二设备从检测得到的第一处理参数中,获取与增量数据的哈希特征(即特征信息为哈希特征)相同的哈希特征对应的第一处理参数作为增量数据对应的目标处理参数。
示例性的,采用实现方式二,如果增量数据的哈希特征与第一哈希特征相同,则目标处理参数中指示信息指示不压缩使用第二密钥加密的密文,第二密钥为初始的随机密钥。如果增量数据的哈希特征与第二哈希特征相同,则目标处理参数中压缩算法为第一压缩算法,以及第二密钥为初始的随机密钥。从而保证使用目标处理参数处理得到的第一密文集中不存在相同的密文。
又示例性的,采用实现方式三,如果增量数据的哈希特征与第一哈希特征相同,则目标处理参数中压缩算法为第二压缩算法,以及第二密钥为初始的随机密钥。如果增量数据的哈希特征与第二哈希特征相同,则目标处理参数中压缩算法为第一压缩算法,以及第二密钥为初始的随机密钥。从而保证使用目标处理参数处理得到的第一密文集中不存在相同的密文。
第三方面,本申请提供一种查询方法,应用于第一设备和第二设备。具体的,第一设备向第二设备发送第一查询请求,第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文。响应于第一查询请求,第二设备向第一设备发送第二密文和第二设备中数据集的增量数据对应的第一密文集,第二密文是使用第二密钥对第一密文加密得到的,第一密文集中的密文是使用第二密钥对增量数据加密后得到的,增量数据是指:从t1时刻到t2时刻之间数据集中状态发生更新的数据;状态包括注销状态或新增状态,t2时刻是当前时刻,t1时刻是t2时刻之前第一设备查询数据集中是否包括第一数据的过程中的一时刻。响应于第二密文和第一密文集,第一设备基于第二密文、第一密文集和第一密钥,确定第一查询结果,第一查询结果指示第二设备中是否包括第一数据。关于该查询方法的原理及效果,可以参见第一方面的相关说明,此处不再赘述。
第四方面,本申请还提供一种电子设备,所述电子设备包括存储器和一个或多个处理器。所述存储器和所述处理器耦合。所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令。其中,所述电子设备为第一设备,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第一设备执行的步骤;或者,所述电子设备为第二设备,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第二设备执行的步骤。
第五方面,本申请还提供一种通信系统,所述通信系统包括如第一方面、第二方面、第三方面及其任一种可能的设计方式中的第一设备和第二设备。
第六方面,本申请实施例提供一种芯片系统,该芯片系统应用于包括显示屏和存储器的电子设备;所述芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令。其中,所述电子设备为第一设备,当所述处理器执行所述计算机指令时,使得所述电子设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第一设备执行的步骤。或者,所述电子设备为第二设备,当所述处理器执行所述计算机指令时,使得所述电子设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第二设备执行的步骤。
第七方面,本申请提供一种计算机存储介质,该计算机存储介质包括计算机指令。其中,当所述计算机指令在第一设备上运行时,使得所述第一设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第一设备执行的步骤。或者,当所述计算机指令在第二设备上运行时,使得所述第二设备执行如第一方面、第二方面、第三方面及其任一种可能的设计方式中,所述第二设备执行的步骤。
第八方面,本申请提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。
可以理解地,上述电子设备,通信系统,芯片系统,计算机存储介质,计算机程序产品所能达到的有益效果,可参考第一方面、第二方面、第三方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种PSI的原理图;
图2为本申请实施例提供的一种通信系统的组成图;
图3为本申请实施例适用的场景1的示意图;
图4A为本申请实施例适用的场景2的示意图;
图4B为本申请实施例适用的场景3的示意图;
图5A为查询方法的流程图之一;
图5B为查询方法的流程图之二;
图5C为查询方法的流程图之三;
图6为本申请实施例提供的查询方法的示例图;
图7为本申请实施例提供的一种电子设备的硬件结构图;
图8为本申请实施例提供的查询方法的阶段构成图之一;
图9为本申请实施例提供的查询方法中阶段1的流程图之一;
图10为本申请实施例提供的查询方法中阶段2的流程图;
图11为本申请实施例提供的查询方法中阶段3的流程图之一;
图12为本申请实施例提供的查询方法的原理图之一;
图13为本申请实施例提供的查询方法中阶段4的流程图之一;
图14为本申请实施例提供的查询方法中阶段3的流程图之二;
图15为本申请实施例提供的查询方法中阶段4的流程图之二;
图16为本申请实施例提供的查询方法中阶段1的流程图之二
图17为本申请实施例提供的查询方法中首次查询时的流程图;
图18为本申请实施例提供的查询方法中非首次查询时的流程图;
图19为本申请实施例提供的查询方法的流程图之一;
图20为本申请实施例提供的查询方法的流程图之二;
图21为本申请实施例提供的查询方法的原理图之二;
图22为本申请实施例提供的查询方法的阶段构成图之二;
图23A为本申请实施例提供的查询方法中阶段0的流程图之一;
图23B为本申请实施例提供的查询方法中阶段0的流程图之二;
图23C为本申请实施例提供的查询方法中阶段0的流程图之三;
图24为本申请实施例提供的芯片系统的结构图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
在说明本申请实施例之前,先对本申请涉及的技术术语做简单介绍:
1、隐私集合求交(Private Set Intersection,PSI)。
PSI是一种安全多方计算(Secure Multi-Party Computation,SMPC)技术。采用PSI,可以在参与双方不泄露双方持有数据的交集之外的数据的情况下,得到该交集,实现隐私保护。
示例性的,参见图1,手机拥有隐私数据集A,云拥有隐私数据集B,手机需要查询隐私数据集A和隐私数据集B的交集A∩B。但是,手机不希望向云泄露其隐私数据集A,云也不希望向手机泄露其隐私数据集B中除A∩B之外的数据。针对这种场景,手机和云可以采用PSI,使得手机仅获得A∩B,而不会获得隐私数据集B中除A∩B之外的数据,以及云不会获得隐私数据集A。
在本申请实施例中,采用PSI,可以在查询的过程中,不泄露双方持有数据的交集之外的数据,实现隐私保护。
2、PSI加密算法。
PSI加密算法是指在采用PSI的方案中,支持对数据加密的算法。示例性的,PSI加密算法包括迪菲-赫尔曼(Diffie-Hellman,DH)算法、椭圆曲线迪菲-赫尔曼(EllipticCurve Diffie-Hellman,ECDH/ECC)算法、罗纳德·李维斯特-阿迪·萨莫尔-伦纳德·阿德曼(Leonard Adleman-Ron Rivest-Adi Shamir,RSA)盲签算法、茫然传输(ObliviousTransfer,OT)算法等。在本文中,主要以DH算法和ECDH算法来说明本申请方案。
其中,DH协议和ECDH协议都是可交换的加密协议。可交换的加密算法即为加解密的顺序可以调换的算法。
示例性的,采用可交换的加密算法,使用密钥a对数据x加密,得到密文xa,使用密钥b对密文xa进一步加密,得到密文xab。采用可交换的加密算法,使用密钥b对数据y加密,得到密文yb,使用密钥a对密文yb进一步加密,得到密文yba。如果数据x和数据y相等,则上述密文xab与密文xba也相等。即,对于相同的数据,使用可交换的加密算法,则交换加密顺序,也可以得到相同的密文(简称为原理一)。在PSI中,可以使用该原理一实现隐私保护。
进一步的,对于上述密文xab,先使用密钥a可以解密得到密文xb,如果数据x和数据y相等,则密文xb等于对数据y使用密钥b加密得到的密文,即密文yb。那么,对于数据x,使用可交换的加密算法双重加密(即先使用密钥a加密,再使用密钥b加密)后,再使用密钥a解密,可以得到使用密钥b对数据x加密得到的密文xb,如果密文xb与使用密钥b对数据y加密得到的密文yb相等,则可以确定数据x和数据y相等(简称为原理二)。在PSI中,也可以使用该原理二实现隐私保护,以降低查询时延。
需要说明的是,下文中除有特别声明外,PSI中的加密/解密都是使用可交换的加密算法来实现的。
参见图2,为可适用于PSI的一种通信系统,该通信系统可以包括第一设备(如图2所示的手机210)和第二设备(如图2所示的云220)。其中,第一设备为具有查询需求的设备,第二设备为提供查询服务的设备。
第一设备和第二设备通信连接,用于传输查询过程中的数据。例如,用于第一设备向第二设备发送查询请求,以及用于第二设备向第一设备返回查询响应。示例性的,第一设备和第二设备之间可以使用通用串行总线(universal serial bus,USB)建立有线连接。或者,第一设备和第二设备之间可以通过全球移动通讯系统(global system for mobilecommunications,GSM)、通用分组无线服务(general packet radio service,GPRS)、码分多址接入(code division multiple access,CDMA)、宽带码分多址(wideband codedivision multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA),长期演进(long term evolution,LTE)、蓝牙、无线保真(wireless fidelity,Wi-Fi)、NFC、基于互联网协议的语音通话(voice over Internetprotocol,VoIP)、支持网络切片架构的通信协议建立无线连接。
上述第一设备可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等具有查询需求的设备。上述第二设备可以是云(可以理解为云设备、云服务器)、服务器(可以理解为传统服务器)、个人计算机(personalcomputer,PC)等可以提供查询服务的设备。本申请实施例对第一设备和第二设备的具体形态不作特殊限制。
示例性的,上述第一设备可以是企业对消费者(Business to Consumer,B2C)模式、消费者对消费者(Consumer to Consumer,C2C)模式或者企业对企业(Business toBusiness,B2B)模式中的任一端,上述第二设备可以是B2C模式、C2C模式或者B2B模式中的另一端。应理解,与B端设备相比:C端设备对通信开销更敏感,因此,如果第一设备是上述B2C模式或者C2C模式中的C端设备,采用本申请实施例提供的查询方法,可以更明显的节省第一设备的通信开销。
下文中,以第一设备是图2所示的手机210,第二设备是图2所示的云220为例来说明。
下面列举PSI的几种典型的场景:
场景1,好友发现场景。即,发现通讯录中的联系人是否在社交应用中注册有账号。
手机210在安装并首次运行社交应用A时,可以显示图3所示的界面301。界面301中包括提示文本“是否允许发现通讯录好友”,以提示用户发现通讯录中的联系人是否在社交应用中注册有账号。以及,界面301中还包括“是”和“否”两个选项。响应于用户对界面301中“是”选项的选择操作,手机210可以向云220发送发现通讯录好友的查询请求,以查询通讯录中的各个联系人是否在社交应用A中注册有账号。在查询结束之后,手机210可以显示图3所示的界面302。界面302中包括在社交应用A中注册有账号的联系人,如汤姆、爱丽丝等。当然,界面302中还可以包括这些联系人在社交应用A中的账号(如我爱吃鱼、天天开心等)、头像等信息。
在非首次运行社交应用A的过程中,响应于发现通讯录好友的操作(如用户在社交应用A的设置中点击发现通讯录好友的按钮的操作),手机210也可以向云220发送发现通讯录好友的查询请求,并在获得查询结果后显示,此处不多赘述。
在上述场景1中,手机210向云220发送的查询请求中,通常需要携带通讯录中包括的联系人号码。这样,云220通过将联系人号码与云220中记录的注册用户的号码(简称为注册号码)比对,才能发现通讯录中的各个联系人是否在社交应用A中注册有账号。例如,通讯录中包括联系人号码“12345678910”,云220中记录的注册号码中也包括“12345678910”,云220则可以确定联系人号码“12345678910”在社交应用A中注册有账号。然而,手机210中通讯录包括的联系人号码属于隐私信息,手机210将其直接发送至云220,会存在隐私泄露的风险。
在场景1中,手机210中的隐私信息为联系人号码,云220中的隐私信息为注册号码。在场景1中,使用PSI,在实现发现好友的同时,可以避免联系人号码泄露给云220。另外,也可以避免云220中除联系人号码和注册号码的交集之外的注册号码泄露给手机210。
场景2,反诈云查场景。即,查询陌生来电是否为存在安全风险的电话(简称为风险号码)。
手机210在接收到陌生来电后,可以向云220发送风险号码的查询请求,以查询陌生来电是否为风险号码。在查询到陌生来电为风险号码之后,手机210可以显示图4A所示正在通话的界面401。界面401中包括提示文本“诈骗电话”,以提示陌生来电为风险号码。
在上述场景2中,手机210向云220发送的查询请求中,通常需要携带陌生来电的来电号码。这样,云220通过将来电号码与云220的反诈号码库中记录的风险号码比对,才能发现陌生来电的来电号码是否为风险号码。例如,陌生来电的来电号码为“10987654321”,云220的反诈号码库中也记录有号码“10987654321”,云220则可以确定来电号码为风险号码。然而,手机210接收到的来电号码属于隐私信息,手机210将其直接发送至云220,会存在隐私泄露的风险。
在场景2中,手机210中的隐私信息为来电号码,云220中的隐私信息为反诈号码库中的风险号码。在场景2中,使用PSI,在实现反诈的同时,避免来电号码泄露给云220。另外,也可以避免云220中除来电号码和反诈号码库的交集之外的风险号码泄露给手机210。
场景3,泄露密码检查场景。即,查询密码是否泄漏。
手机210在检测到密码检查的事件后,可以向云220发送泄漏密码的查询请求,以查询手机210中的密码是否被泄露。示例性的,手机可以显示图4B所示的界面402。界面402为密码的设置界面,用于手机210中密码的管理。界面402中包括泄漏密码检查的设置项403。例如,设置项403中包括文本“检查已泄露的密码”,以指示设置项403用于泄漏密码的检查;以及,设置项403中还包括文本“可安全监控您的密码,并在密码出现泄露时提醒您”,以对泄露密码检查进行功能介绍。并且,设置项403中还包括按钮4031,按钮4031处于关闭状态。密码检查的事件可以是用户对按钮4031的点击操作。响应于用户对按钮4031的点击操作,则可以开启泄露密码检查的功能,。在开启检查之后,手机210可以向云220发送泄露密码的查询请求。或者,在泄露密码检查的功能开启后,手机210可以定期向云220发送泄露密码的查询请求。在查询结束之后,手机210可以显示图4B所示的界面404,界面404中仍然包括设置项403,但此时设置项403中的按钮4031处于开启状态,指示泄露密码检查的功能已开启。并且,界面405中包括应用1的密码已泄露的提示信息,用于提示应用1的密码被泄露,存在安全隐患。。
在场景3中,手机210中的隐私信息为应用或者解锁的密码,云220中的隐私信息为从各个渠道收集到的密码。在场景3中,使用PSI,在实现泄漏密码查询的同时,避免手机210中的密码泄露给云220。另外,也可以避免云220中除手机210中的密码与云220中的密码的交集之外的密码泄露给手机210。
上述场景1-场景3都是二值查询的场景,即,通过查询得到是(YES)或否(NO)的结果的查询场景。例如,得到联系人是否在社交应用A中注册,来电号码是否为风险号码,秘密是否被泄露。
而实际中,PSI还可以用于其他涉及隐私信息的查询场景中。示例性的,在上述场景1查询到联系人号码“12345678910”在社交应用A中注册有账号之后,手机210可以继续向云220查询联系人号码“12345678910”对应的注册用户在社交应用A中开通的业务功能,如视频通话、语音电话、短信发送等功能。很显然,开通的业务功能并不是简单的是或否的结果,因此不是二值查询。在该场景中,使用PSI,可以避免手机210中的联系人号码“12345678910”泄露给云220,以及避免云220中除“12345678910”之外的号码泄露给手机210。
在下文中,将主要结合上述场景1和场景2说明采用PSI实现隐私保护的过程。在场景1和场景2中,隐私信息都是电话号码。并且,为了便于区分,将手机210中的隐私信息记为隐私信息x,隐私信息x包括x1、x2……xm,m为手机210中隐私信息的数量。以及,将云220中的隐私信息记为隐私信息y,隐私信息y包括y1、y2……yn,n为云220中隐私信息的数量。通常情况,n远大于m。示例性的,云220中包括的风险号码或者注册号码可能有几十万,那么n可能是十万级别的;而手机210中当前的来电号码通常只有一个,即m=1,或者,手机210中的联系人号码通常也就几十或者几百,则m也就几十或者几百,很显然都远远小于n。
参见图5A,针对上述隐私查询的场景,采用PSI实现隐私保护的过程包括:
S501、云220采用密钥b对n条隐私信息y加密,得到数据集Hn(y)b,n为正整数。
示例性的,n个风险号码分别为y1,y2,y3……yn,使用密钥b加密后,可以依次得到密文y1b,y2b,y3b……ynb。y1b,y2b,y3b……ynb构成上述数据集Hn(y)b。
S502、响应于查询事件,手机210采用密钥a对m条隐私信息x加密,得到数据集Hm(x)a,m为正整数。
其中,查询事件用于触发手机210向云220进行二值查询。例如,查询事件可以是用户对前述图3所示界面301中“是”选项的选择操作。或者,查询事件可以是手机210接收到陌生来电的事件。或者,查询事件可以是用户对图4B所示界面402中按钮4031的点击操作。
示例性的,来电号码为x1,使用密钥a加密后,可以得到密文x1a。x1a构成上述数据集Hm(x)a。应理解,如果m更大,则数据集Hm(x)a中包括的密文会更多。
S503、手机210向云220发送查询请求,查询请求中包括数据集Hm(x)a。
手机210并不会将隐私信息x的明文发送至云220,而只是会发送对隐私信息x一次加密后的密文,以避免隐私泄露。
示例性的,手机210向云220发送风险号码的查询请求,查询请求中携带来电号码的密文。
S504、响应于查询请求,云220使用密钥b对数据集Hm(x)a中的密文二次加密,得到数据集Hm(x)ab。
示例性的,云220对数据集Hm(x)a中的密文x1a使用密钥b二次加密,可以得到密文x1ab。x1ab构成上述数据集Hm(x)ab。
S505、云220向手机210发送数据集Hm(x)ab和数据集Hn(y)b。
也就是说,云220会对隐私信息x的密文进一步加密后返回给手机210,也不会获取到隐私信息x的明文。以及,云220并不会将隐私信息y的明文发送至手机210,而只是发送对隐私信息y一次加密的密文,避免隐私泄露。
至此,需要说明的是,上述S501与S502-S504之间并没有严格的先后执行顺序。实际中,只要在S505之前完成S501即可。
S506、手机210基于数据集Hn(y)b和数据集Hm(x)ab包括的内容,完成数据比对,得到比对结果。
在一种具体的实现方式中,参见图5B,上述S506进一步包括:
S5061a、手机210可以使用密钥a对数据集Hn(y)b中的密文分别二次加密,得到数据集Hn(y)ba。
示例性的,手机210对数据集Hn(y)b中的密文y1b,y2b,y3b……ynb分别使用密钥a二次加密,可以依次得到密文y1ba,y2ba,y3ba……ynba。y1ba,y2ba,y3ba……ynba构成上述数据集Hn(y)ba。
S5061b、手机210将数据集Hm(x)ab和数据集Hn(y)ba比对,得到比对结果。
应理解,前述加密(如使用密钥a加密和使用密钥b加密)都是使用的可交换的加密算法,如DH、ECDH。依据可交换的加密算法的原理一(具体可参见前文关于“PSI加密算法”的术语介绍)可知,如果隐私信息xi和隐私信息yj相同,则数据集Hm(x)ab中xi对应的密文xiab,与数据集Hn(y)ba中yj对应的密文yjba相等。
那么,针对数据集Hm(x)ab中的密文xiab,如果数据集Hn(y)ba中包括相同的密文yjba,则表示隐私信息y中包括密文xiab对应的隐私信息xi;如果数据集Hn(y)ba中不包括相同的密文yjba,则表示隐私信息y中不包括密文xiab对应的隐私信息xi。
示例性的,如果比对得到数据集Hm(x)ab中的密文x1ab与数据集Hn(y)ba中的密文y3ba相同,则表示云220的风险号码库中包括来电号码x1。
在另一种具体的实现方式中,参见图5C,上述S506进一步包括:
S5062a、手机210使用密钥a对数据集Hm(x)ab中的密文解密,得到数据集Hm(x)b。
示例性的,手机210对数据集Hm(x)ab中的密文x1ab使用密钥a解密,得到密文x1b。x1b构成上述数据集Hm(x)b。在S601中,手机210仅需对数据集Hm(x)ab中的m个密文解密,m远小于n。因此,与对n个密文加密相比,对m个密文解密的运算量要更小,耗时更短,时延更低。从而可以提高查询效率。
S5062b、手机210将数据集Hm(x)b和数据集Hn(y)b比对,得到比对结果。
依据可交换的加密算法的原理二(具体可参见前文关于“PSI加密算法”的术语介绍)可知,如果隐私信息xi和隐私信息yj相同,则对数据集Hm(x)ab中xiab解密得到的密文xib,与数据集Hn(y)b中yj对应的密文yjb相等。那么,针对数据集Hm(x)b中的密文xib,如果数据集Hn(y)b中包括相同的密文yjb,则表示隐私信息y中包括密文xib对应的隐私信息xi;如果数据集Hn(y)b中不包括相同的密文yjb,则表示隐私信息y中不包括密文xib对应的隐私信息xi。
应注意,为了提高查询效率,下文中,将主要以图5C所示的方式来说明。
需要说明的是,手机210经过比对,只能确定云220中是否包括与隐私信息x相同的隐私信息,而无法获知云220中除隐私信息x之外的隐私信息。示例性的,手机210可以确定云220中的风险号码中是否包括来电号码x1,但是不能确定云220中是否包括除来电号码x1之外的号码。
S507、手机210提示比对结果中相同元素对应的隐私信息x的查询结果为“是”。
其中,相同元素是指数据集Hm(x)ab和数据集Hn(y)ba(或者数据集Hm(x)b和数据集Hn(y)b)中相同的密文。例如,密文x1ab和密文y3ba。
示例性的,手机210可以显示图4A所示的界面401,以提示来电号码x1,如“10987654321”是风险号码。
由此可见,采用图5A-图5C所示的方案,在实现查询的同时,一方面可以保证手机210中的隐私信息x不会泄露给云220,另一方面可以保证云220中除隐私信息x之外、剩余的隐私信息y不会泄露给手机210。
与此同时,采用上述图5A-图5C所示的方案,在S505中,云220需要将包括n个密文的数据集Hn(y)b下发至手机210。而n非常大,即云220需要向手机210传输大量的数据,通信开销很大,如需要很多的流量。并且,如果多次查询,则通信开销将成倍的增加。例如,一次查询的通信开销为O(n),则p次查询的通信开销为O(p*n)。通信开销增加到一定程度,用户可能难以接受。
基于此,本申请实施例提供了一种查询方法,该方法应用于包括手机210和云220的通信系统。
通常情况下,手机210中的隐私信息x和/或云220中的隐私信息y会随着时间动态变化。例如,手机210中的联系人号码会新增、删除,云220中的注册号码会新增、注销等。应理解,上述动态变化可能会导致查询结果发生变化。例如,手机210中有新增的联系人号码,那么,可能查询到新增的联系人号码为注册号码。又例如,云220中有注册号码被注销,那么,上一次查询到为注册号码的联系人号码,可能因为注册号码注销而变化为不是注册号码。除此之外,其余未发生任何变化的数据,不会造成查询结果发生变化。例如,上一次查询到某联系人号码为注册号码,而继上一次查询之后,手机210中该联系人号码未被删除,并且,云220中与该联系人号码相同的注册号码也未被注销,则依然可以查询到该联系人号码对应的联系人为注册用户。
因此,参见图6,在本申请实施例中,手机210非首次向云220发送查询请求(第一查询请求)后,云220不会向手机210下发云220中所有隐私信息y的密文(即数据集Hn(y)b),而只是会发送相较于历史查询的增量数据的密文。其中,增量数据包括与t1时刻至t2时刻之间新增的隐私信息x(如联系人号码x4)可能相同的隐私信息y(如注册号码y1和注册号码y2),和/或在t1时刻至t2时刻之间状态发生更新(如新增)的隐私信息y(如注册号码yn+1和注册号码yn+2)中、与t1时刻之前产生的隐私信息x(第一数据,如联系人号码x1、联系人号码x2和联系人号码x3)可能相同的隐私信息y(如注册号码yn+1)。
其中,t2时刻是当前时刻。即,云220确定增量数据的密文的时刻。t1时刻是t2时刻之前手机210向云220查询隐私信息y的过程中的一时刻。即,t1时刻是某一次历史查询(如前一次查询)中,手机210向云220发送查询请求至手机210得到该次历史查询的查询结果之间的一时刻。例如,t1时刻是前一次查询得到查询结果的时刻。
继续参见图6,手机210可以基于云220下发的数据,发现查询结果的增量情况(如联系人号码x4为注册号码),并结合t1时刻的查询结果(如联系人号码x1和联系人号码x2为注册号码),得到本次的查询结果(第一查询结果,如联系人号码x1、联系人号码x2和联系人号码x4为注册号码)。
采用本申请实施例,云210在接收到手机210非首次的查询请求后,仅下发增量数据的密文,而无需下发所有隐私信息y的密文,即无需下发数据集Hn(y)b。这样,即使多次查询,也不会产生过多的通信开销。从而节省通信开销。
需要在此说明的是,在图6的示例及其对应的说明中,虽然以增量数据包括在t1时刻至t2时刻之间状态发生更新的隐私信息y中、与t1时刻之前产生的隐私信息x可能相同的隐私信息y来说明。但实际中,对于t1时刻之前产生的隐私信息x的查询,增量数据只要满足是在t1时刻至t2时刻之间状态发生更新的隐私信息y,即可达到减少数据传输量的效果。从而节省通信开销。下文中,还是主要以增量数据包括在t1时刻至t2时刻之间状态发生更新的隐私信息y中、与t1时刻之前产生的隐私信息x可能相同的隐私信息y来说明,以更大程度的实现减少数据传输量。
下面将结合附图对本申请实施例的实施方式进行详细描述。图7为本申请实施例提供的一种电子设备(如第一设备、第二设备)的硬件结构图。以电子设备是手机210为例,如图7所示,电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
充电管理模块140用于接收充电器的充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
电子设备可以通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
电子设备可以通过摄像模组193,ISP,视频编解码器,GPU,显示屏194以及应用处理器AP、神经网络处理器NPU等实现摄像功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。内部存储器121可以用于存储计算机可执行程序代码,该可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。
电子设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190可以包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备的接触和分离。
需要在此说明的是,上述图7所示电子设备的硬件结构仅为示例性的。实际中,电子设备可以具有比图7更多或者更少的结构。以电子设备是云220为例,则电子设备可能主要包括处理器和存储器。
下文仍以第一设备是手机210,第二设备是云220为例,来详细说明本申请实施例提供的查询方法。
参见图8,本申请实施例提供的查询方法包括如下4个阶段:
阶段1,云220数据初始化阶段。在阶段1中,云220需要对n条隐私信息y进行加密,得到数据集Hn(y)b。示例性的,云220需要执行前文中的S501。
在一些实施例中,云220可以离线完成数据初始化,以避免查询过程中的初始化运算,降低查询时延。
阶段2,手机210请求阶段。在阶段2中,手机210响应于查询事件,需要完成对隐私信息x的加密并向云220发送查询请求。示例性的,在阶段2中,手机210可以完成前文S502-S503的步骤。
阶段3,云220查询响应阶段。在阶段3中,云220可以响应来自手机210的查询请求。示例性的,在阶段3中,云220需要完成前文S504-S505的步骤。
阶段4,手机210比对阶段。在阶段4中,手机210基于云220下发的数据来比对,从而得到查询结果。示例性的,在阶段4中,手机210可以完成前文S506-S507。
实际中,隐私信息集合Hn(y)中包括的数据量很大,相应的,加密得到的数据集Hn(y)b中的密文数据量也很大。后续向手机210传输数据集Hn(y)b需要很大的通信开销,如需要很多的流量。通信开销增大到一定程度时,用户可能难以接受。针对该问题,云220还可以通过数据处理,减小向手机210传输的数据量,从而节省通信开销。具体地,云220可以通过对数据集Hn(y)b中的密文分桶和/或压缩数据集Hn(y)b中的密文的方式来减小向手机210传输的数据量。下面分别说明:
在一些实施例中,在阶段1中,云220可以将数据集Hn(y)b包括的大量密文划分到多个分桶(也可以理解为分组)中,后续在阶段3中,云220向手机210下发密文时,则可以仅发送有需要的分桶(可以称为目标分桶)中的密文,从而减小通信开销。
参见图9,在阶段1中,云220可以完成下述步骤:
S901、云220对n条隐私信息y分别计算哈希值,得到n个哈希值。
云220可以使用哈希算法(Hash Algorithm,HA)计算每条隐私信息y的哈希值。例如,哈希算法包括信息-摘要算法4(Message-Digest Algoorithm 4,MD4)、信息-摘要算法5(Message-Digest Algoorithm 5,MD5)、安全散列算法256(Secure Hash Algorithm 256,SHA-256)、散列消息认证码(Hash-based Message Authentication Code,HMAC)等。
以n条隐私信息y为风险号码y1、y2、y3、y4为例,手机210计算n个风险号码的哈希值,可以依次得到哈希值0002E11A0C0E…51A1518,000341AA6176…C300081,000C497DE639…4BB1298,0002DF235902…D6B71BD。
应理解,哈希算法是不可逆的加密算法,因此,可以避免加密得到的哈希值被其它设备(如手机210)还原为明文,进一步提高数据的安全性。
S902(即前文S501)、云220对n条隐私信息y使用密钥b(第二密钥)加密,得到数据集Hn(y)b。
在一种具体的实现方式中,云220可以对n条隐私信息y本身加密,以实现对n条隐私信息y加密,图9中并未示出该实现方式。示例性的,云220可以对风险号码本身加密。需要说明的是,如果采用本实现方式,则S901和S902之间没有严格的先后顺序限制,而只需在S903之前完成S901和S902即可。
在另一种具体的实现方式中,云220可以对n条隐私信息y对应的n个哈希值加密,以实现对n条隐私信息y加密,图9示出的即为这种实现方式。示例性的,云220可以对风险号码的哈希值0002E11A0C0E…51A1518,000341AA6176…C300081,000C497DE639…4BB1298,0002DF235902…D6B71BD分别加密,依次得到密文y1b,y2b,y3b,y4b。
S903、云220将数据集Hn(y)b中的密文yjb划分到隐私信息yj的哈希值前缀对应的分桶中,1≤j≤n,j为整数。
在S903之前,云220可以按照哈希值前缀(即前k个比特位(bit))的可能取值来表示分桶。其中,k可以为8、12、16等。例如,k=16,即按照前16个比特位的可能取值来表示分桶,则可以得到分桶0x 0000、分桶0x 0001……分桶0x ffff。其中,0x表示16进制。应理解,为了简化,下文和图中都会省略掉0x。
针对任一隐私信息yj,经过前文S901,处理得到了隐私信息yj的哈希值,如记为S(yj);以及经过前文S902,处理得到了隐私信息yj的密文yjb。在S903中,云220可以将密文yjb划分到S(yj)的哈希值前缀对应的分桶中。
仍以k=16为例,风险号码y1的哈希值为0002E11A0C0E…51A1518,即哈希值前缀为0002,那么,可以将密文y1b划分到分桶0002;风险号码y2的哈希值为000341AA6176…C300081,即哈希值前缀为0003,那么,可以将密文y2b划分到分桶0003;风险号码y3的哈希值为000C497DE639…4BB1298,即哈希值前缀为000C,那么,可以将密文y3b划分到分桶000C;风险号码y4的哈希值为0002DF235902…D6B71BD,即哈希值前缀为0002,那么,可以将密文y4b划分到分桶0002。
经过S903,则分桶中会包括密文。示例性的,各个分桶包括的密文如下表1所示:
表1
其中,分桶0002中包括密文y1b、ynb;分桶0003中包括密文y2b;分桶000C中包括密文y3b。
至此,云220可以将n条隐私信息y的密文划分到多个分桶中,以便后续确定目标分桶。
在阶段2中,手机210还可以得到m条隐私信息x分别的哈希值前缀,以便于云220在阶段3中,可以确定出目标分桶。
参见图10,在阶段2中,手机210可以完成下述步骤:
S1001、响应于查询事件,手机210对m条隐私信息x分别计算哈希值,得到m个哈希值。
示例性的,对来电号码x1求哈希值,得到哈希值0002936ED794…8921B4B。
关于S1001的具体实现,可参见前文S901的相关说明,此处不再赘述。需要说明的是,为了使隐私信息y的哈希值和隐私信息x的哈希值之间具有可比性,在S1001中,手机210采用的哈希算法与前文S901中云220采用的哈希算法相同。进一步的,为了在接收到查询事件后,可以快速得到查询结果,云220和手机210都可以采用运算速度较快的哈希算法来计算哈希值,如MD5、SHA256等。
S1002(即前文S502)、手机210对m条隐私信息x使用密钥a(第一密钥)加密,得到数据集Hm(x)a。
与前文S902中类似的:在一种具体的实现方式中,手机210可以对m条隐私信息x本身加密,以实现对m条隐私信息x加密,图10并未示出这种实现方式。示例性的,手机210可以对来电号码x1本身加密。需要说明的是,如果采用本实现方式,则S1001和S1002之间没有严格的先后顺序限制,而只需在S1003之前完成S1001和S1002即可。在另一种具体的实现方式中,手机210也可以对m条隐私信息x对应的m个哈希值加密,以实现对m条隐私信息加密,图10示出的即为这种实现方式。示例性的,手机210可以对来电号码x1的哈希值0002936ED794…8921B4B加密。
需要注意的是,为了保证云220中n条隐私信息y的密文和手机210中m条隐私信息x的密文具有可比较性,如果S902中采用对隐私信息y本身进行加密的方式,则S1002中也应采用对隐私信息x本身进行加密的方式。如果S902中采用对隐私信息y的哈希值进行加密的方式,则S1002中也应采用对隐私信息x的哈希值进行加密的方式。
S1003、手机210基于m个哈希值构建哈希值前缀和数据集Hm(x)a中各个密文的关系字典1。
针对任一隐私信息xi,经过前文S1001,处理得到了隐私信息xi的哈希值,如记为S(xi);以及经过前文S1002,处理得到了隐私信息xi的密文xia,如密文x1a。在S1003中,手机210可以建立S(xi)的哈希值前缀和密文xia的对应关系,得到关系字典1。示例性的,关系字典1中包括来电号码x1的哈希值0002936ED794…8921B4B的哈希值前缀0002和密文x1a的对应关系。
在手机210中,可以维护上述关系字典1。示例性的,关系字典1中的数据结构如下表2所示:
表2
哈希值前缀 | 密文 |
0002 | x1a |
S1004、手机210向云220发送查询请求,查询请求中包括关系字典1。
关系字典1中包括m条隐私信息x的密文,即数据集Hm(x)a。可见,本实施例中,手机210可以通过向云220发送关系字典1实现向云220发送数据集Hm(x)a,即实现前文S503。
其中,手机210可以通过安全加密的方式,如https方式向云220发送查询请求,以保证信息安全。
以及,在阶段3中,云220可以根据关系字典1包括的哈希值前缀,确定出目标分桶,以减少返回给手机210的数据量,缩减通信开销。
参见图11,在阶段3中,云220可以完成下述步骤:
S1101、云220查询关系字典1中的哈希值前缀对应的目标分桶。
云220遍历关系字典1中的每一个哈希值前缀,查询该哈希值前缀对应的目标分桶。示例性的,关系字典1中的哈希值前缀包括0002。那么,云220可以查询到目标分桶为分桶0002。
应理解,隐私信息x和隐私信息y相同,则两者的哈希值也应该相同。与此同时,分桶用哈希值前缀来标识,分桶中包括隐私信息y的密文。关系字典1中的哈希值前缀为隐私信息x的哈希值前缀。因此,通过查找关系字典1中哈希值前缀对应的目标分桶,则可以查找到与隐私信息x可能相同的隐私信息y的密文。
S1102、云220使用密钥b对关系字典1中的密文二次加密,得到数据集Hm(x)ab。
应理解,关系字典1中的密文即前文所述的数据集Hm(x)a,则对数据集Hm(x)a中的每一个密文加密后可以得到数据集Hm(x)ab,从而实现前文S504的过程,此处不再赘述。
前文S1101和S1102之间并没有严格的先后顺序,实际中,可以先后依次执行S1101和S1102,也可以先后依次执行S1102和S1101,还可以同时执行S1101和S1102。本申请实施例对此不作具体限定。
S1103、云220将目标分桶中的密文和数据集Hm(x)ab下发至手机210。
示例性的,云220也可以通过安全加密的方式,如https方式向手机210下发目标分桶中的密文和数据集Hm(x)ab,以保证信息安全。
与不分桶的实施例相比:本实施例中,云220不会将其所有隐私信息y的密文,如数据集Hn(x)b下发至手机210,而仅将目标分桶中的密文(如记为数据集Hn0(x)b)下发至手机210。其中,n0为目标分桶中包括的密文的数量,n0为小于n的正整数。即,前文S505会更新为S1103。这样,可以减少云220向手机210下发的数据量,缩减通信开销。
至此,需要说明的是:k的取值不同,则缩减通信开销的程度也不同。其中,k的取值越大,缩减通信开销的程度越大。下面将详细说明k的取值对通信开销的影响:
k的取值越大,则分桶越精细。那么,在阶段1中,将云220中的隐私信息y的密文划分到分桶中时,可以将密文分散到更多的分桶中,使得密文分桶更精细。
示例性的,云220中的隐私信息y及其哈希值和密文如下表3所示:
表3
隐私信息y | 哈希值 | 密文 |
风险号码y1 | 0002E11A0C0E…51A1518 | 密文y1b |
风险号码y2 | 000341AA6176…C300081 | 密文y2b |
风险号码y3 | 000C497DE639…4BB1298 | 密文y3b |
风险号码y4 | 0002DF235902…D6B71BD | 密文y4b |
以上表3中的数据为例,参见图12,下面比较k=8和k=16时,上述表3中4条隐私信息y所属的分桶:
k=8,则可以包括分桶00、01……ff,共256个分桶;而k=16,则可以得到分桶0000、0001……ffff,共65536个分桶。很显然,与k=8相比:k=16时,可以划分得到更多数量的分桶,分桶更精细。
上述表3中4个哈希值的前8个比特位都是00,则在阶段1中,如果采用k=8的分桶,上述表3中的4个密文y1b、密文y2b、密文y3b以及密文y4b都会被划分到分桶00中。即,分桶00中包括4个密文。上述表3中4个哈希值的前16个比特位依次是0002、0003、000C以及0002,则在阶段1中,如果采用k=16的分桶,上述表3中的4个密文y1b、密文y2b、密文y3b以及密文y4b会依次被划分到分桶0002、分桶0003、分桶000C和分桶0002中。即,4个密文分散划分到3个分桶中,其中分桶0002中包括2个密文,分桶0003中包括1个密文,分桶000C中包括1个密文。很显然,与k=8相比:k=16可以使得密文分桶更精细。
相应的,在阶段3中,云220确定出的目标分桶中包括的密文更少。仍然沿用图12的示例,并且手机210中的隐私信息x及其哈希值和密文如下表4所示:
表4
隐私信息x | 哈希值 | 密文 |
来电号码x1 | 0002936ED794…8921B4B | 密文x1a |
k=8,则上述表4中哈希值0002936ED794…8921B4B的哈希值前缀为00,那么,在阶段3中,云220可以确定目标分桶为分桶00,从而会将分桶00中的密文,如密文y1b、密文y2b、密文y3b以及密文y4b下发给手机210。k=16,则上表4中哈希值0002936ED794…8921B4B的哈希值前缀为0002,那么,在阶段3中,云220可以确定目标分桶为分桶0002,从而会将分桶002中的密文,密文y3b以及密文y4b下发给手机210。很显然,与k=8相比:k=16时,云220向手机210发送密文会更少,从而可以更大程度的减小通信开销。
因此,为了更大程度减小通信开销,可以设置k为更大的值。
然而,k的取值越大,则哈希值的更多比特位将用于标识分桶,即哈希值中更多的比特位将暴露。相应的,剩余未暴露的比特位的数量则更少,则隐私保护的程度越低。
以哈希值一共有128个比特位为例,如果k=16,那么隐私信息x的哈希值的前16位将作为关系字典1中的哈希值前缀发送给云220,即暴露给云220。剩余未暴露的哈希值位数则有128-16=112个比特位。如果k=64,那么隐私信息x的哈希值的前64位将作为关系字典1中的哈希值前缀发送给云220,即暴露给云220。剩余未暴露的哈希值位数则仅有128-64=64个比特位。很显然,与k=16相比:k=64时,未暴露的比特位更少,云220预测出隐私信息x的可能性更高,隐私保护的程度更低。
综上所述,在实际实施时,可以综合对通信开销的需求和对隐私保护程度的需求,来设置合适的k值。
由于,在阶段3中,云220下发的是目标分桶的密文,那么,在阶段4中,手机210仅需要将数据集Hm(x)b和目标分桶中的密文比对。
参见图13,在阶段4中,手机210可以完成下述步骤:
S1301(即前文S506)、手机210使用密钥a对数据集Hm(x)ab中的密文一次解密,得到数据集Hm(x)b。
关于S1301的具体实现,可参见前文S506中的说明。
S1302、手机210将数据集Hm(x)b和目标分桶中的密文比对,得到比对结果。
示例性的,数据集Hm(x)b中包括来电号码x1的密文x1b,而目标分桶为分桶0002,分桶0002中包括密文y1b和密文y4b。因此,手机210可以比对密文x1b是否与密文y1b或者密文ynb相同,得到比对结果。其中,如果密文x1b与密文y1b或者密文ynb相同,则表明来电号码x1是风险号码;如果密文x1b与密文y1b和密文ynb都不相同,则表明来电号码x1不是风险号码。
本实施例中,云220仅下发目标分桶中的密文(即数据集Hn0(y)b)用于比对,因此,在S1302中,手机210比对的数据为数据集Hn0(y)b,而不是云220中所有隐私信息y的密文。即,前文S506更新为S1302。这样,可以减少手机210比对的数据量,提升比对效率。
S1303(即前文S507)、手机210提示比对结果中相同元素对应的隐私信息x的查询结果为“是”。
关于S1303的具体实现,可参见前文S507中的说明。
前文关于阶段1-阶段4的说明中,更多的是以场景2(即反诈云查场景)为例在说明。在场景2中,手机210中的隐私信息x为当前接收到的来电号码x1,即隐私信息x仅有1条。那么,在阶段3中,云220确定的目标分桶也仅有1个。相应的,在阶段4中,手机210仅需将1个来电号码x1的密文与1个目标分桶中的密文比对即可。
然而,在其他场景(如场景1、场景3)中,手机210中的隐私信息x可能有多条,在阶段3中也可能确定出多个目标分桶,相应的,在阶段4中,手机210则需要将多条隐私信息x与多个目标分桶中的密文比对。示例性的,在场景1中,手机210中包括多个联系人号码,并且多个联系人号码的哈希值前缀涉及0002、0003和ffee,则目标分桶包括分桶0002、分桶0003和分桶ffee,那么,手机210需要将多个联系人号码的密文与分桶0002、分桶0003和分桶ffee中的密文比对。
针对这种情况,如果将每条隐私信息x(如联系人号码)都与分桶0002、分桶0003和分桶ffee中的密文比对,则比对的工作量会很大,影响查询效率。基于此,在一些实施例中,在阶段3中,手机210还可以建立数据集Hm(x)ab中的各个密文和目标分桶中的密文的关系字典2;然后,在阶段4中,针对数据集Hm(x)ab中的任一密文xiab解密得到密文xib,手机210仅需将密文xib与关系字典2中密文xiab对应的密文比对,从而减小比对的工作量,提高查询效率。
具体的,如图14所示,在阶段3中,云220可以完成下述步骤:
S1401、云220查询关系字典1中的哈希值前缀对应的目标分桶。具体可参见前文S1101的说明。
示例性的,关系字典1中包括的内容如下表5所示:
表5
那么,云220可以确定目标分桶包括分桶0002、分桶0003以及分桶ffee。
S1402、云220使用密钥b对关系字典1中的密文二次加密,得到数据集Hm(x)ab。具体可参见前文S1102的说明。
示例性的,云220对表5所示关系字典1中4个密文二次加密,依次得到密文x1ab、密文x2ab、密文x3ab和密文x4ab。即,数据集Hm(x)ab包括密文x1ab、密文x2ab、密文x3ab和密文x4ab。
S1403、云220建立数据集Hm(x)ab中各个密文和目标分桶中的密文的关系字典2。
针对数据集Hm(x)ab中的任一密文xi ab,可以建立密文xi ab与密文xi a目标分桶中第一分桶的密文的对应关系。其中,第一分桶为密文xi a的哈希值前缀对应的分桶。
示例性的,关系字典1如上表5所示,则云220可以建立数据集Hm(x)ab中密文x1ab和密文x3ab与分桶0002中的密文的对应关系,密文x4ab与分桶0003中的密文的对应关系,以及密文x2ab与分桶ffee中的密文的对应关系,从而得到关系字典2。例如,关系字典2中的数据结构如下表6所示:
表6
S1404、云220将关系字典2下发至手机210。
在关系字典2中,隐私信息y的密文即构成前文数据集Hn0(y)b,隐私信息x的密文即构成前文数据集Hm(x)ab。因此,将关系字典2下发至手机210,可以实现将目标分桶中的密文和数据集Hm(x)ab下发至手机210,即实现S1103。
本实施例中,如图15所示,在阶段4中,手机210可以完成下述步骤:
S1501、手机210使用密钥a对关系字典2中数据集Hm(x)ab中的密文一次解密,得到数据集Hm(x)b。可参见前文S506中的说明。
示例性的,手机210可以对上述表6中隐私信息x的密文解密。
S1502、手机210将数据集Hm(x)b中的密文xib和关系字典2中密文xiab对应的密文比对,得到比对结果。
示例性的,数据集Hm(x)b中包括密文x1b、密文x2b、密文x3b以及密文x4b,则手机210可以将密文x1b与关系字典2中密文x1ab对应的密文(如表6中分桶0002中的密文)比对,将密文x2b与关系字典2中密文x2ab对应的密文(如表6中分桶ffee中的密文)比对,将密文x3b与关系字典2中密文x3ab对应的密文(如表6中分桶0002中的密文)比对,以及将密文x4b与关系字典2中密文x4ab对应的密文(如表6中分桶0003中的密文)比对。
很显然,针对数据集Hm(x)b中的任一个密文xib,手机210无需将其与Hn0(y)b中的所有密文比对。从而减小比对的工作量,提高查询效率。
S1503、手机210提示比对结果中相同元素对应的隐私信息的查询结果为“是”。具体可参见前文S507中的说明。
实际中,手机210中的隐私信息x和/或云220中的隐私信息y会随着时间动态变化。例如,手机210中的联系人号码会新增、删除,云220中的注册号码会新增、注销等。并且,上述动态变化才会导致查询结果发生变化。例如,手机210中有新增的联系人号码,那么,可能查询到新增的联系人号码对应的联系人为注册用户。又例如,云220中有注册号码被注销,那么,上一次查询到为注册用户的联系人,可能变化为不是注册用户。除此之外,其余未发生任何变化的数据,不会造成查询结果发生变化。例如,上一次查询到联系人号码对应的联系人为注册用户,而继上一次查询之后,手机210中该联系人号码未被删除,并且,云220中与该联系人号码相同的注册号码也未被注销,则查询依然是该联系人号码对应的联系人为注册用户。
基于此,在一些实施例中,云220可以获取上述动态变化的增量数据,并下发至手机210,以使手机210确定出查询结果的变化情况。最后,手机210将历史的查询结果和查询结果的变化情况结合,则可以得到本次的查询结果。
参见图16,本实施例中,在阶段1中,在S903之后,还包括S1601:
S1601、云220建立隐私信息y的密文与隐私信息y的更新时间标签和注销标签之间的对应关系,得到关系字典3。
其中,更新时间标签用于指示隐私信息y的更新时间,如隐私信息y的新增时间或注销时间。注销标签用于指示隐私信息y是否注销。
以及,关系字典3中包括哈希值前缀、隐私信息y的密文以及更新标签之间的对应关系。
示例性的,分桶结果如前文表1所示,云220可以在表1的基础上,新增更新时间和注销字段,得到如下表7所示的关系字典3:
表7
在一种具体的实现方式中,在建立关系字典3时,将更新时间标签(如表7中的“更新时间”字段)统一设置为当前时间,如2023-4-22;以及,按照各条隐私信息y是否被注销的实际情况来设置注销标签(如表7中的“注销”字段)。
在经过S1601之后,则构建得到了初始的关系字典3。后续,如果检测到隐私信息y有更新,如有新增或者有注销,云220则需要更新关系字典3,如下S1602和S1603所示:
S1602、响应于新增隐私信息y00,云220在关系字典3中新增隐私信息y0的记录,隐私信息y00的记录包括隐私信息y00的哈希值前缀、密文、更新时间标签和注销标签,得到更新后的关系字典3。
示例性的,如果有新用户注册社交应用A,云220可以发现有注册号码新增,即隐私信息y00为新的注册号码。
其中,云220可以将当前时间记录为隐私信息y0的更新时间。
示例性的,隐私信息y00的哈希值为0a9e,密文为y00b,当前时间为2023-4-23,则可以在上述表7中新增记录,得到如下表8所示的关系字典3:
表8
S1603、响应于注销隐私信息y11,云220更改关系字典3中隐私信息y11的更新时间标签和注销标签,得到更新后的关系字典3。
示例性的,如果有用户注销在社交应用A中的账号,云220可以发现有注册号码注销,即隐私信息y11为注销的注册号码。
其中,云220可以将当前时间记录为隐私信息y11的更新时间,以及更改注销标签为是。
示例性的,隐私信息y11是上表8中密文y1 b对应的隐私信息,当前时间为2023-4-25,则可以将上述表8中密文y1 b对应的“更新时间”字段的值更改为2023-4-25,以及“注销”字段对应的值更改为“是”,得到如下表9所示的关系字典3:
表9
下面结合图17来说明首次查询的具体实现:
在首次查询时,在阶段2中,手机210可以在查询请求中携带指示未发生过比对的信息(如下文中的比对时间标签1),以便云220确定出是首次查询。具体的,手机210可以执行下述S1701-S1704:
S1701、响应于查询事件,手机210对手机210中当前的m1条隐私信息x分别计算哈希值,得到m1个哈希值。具体可参见S1001的说明。
应理解,手机210中的隐私信息x会发生删除或者新增,因此,每次查询时的隐私信息x可能是不同的。为了便于区分,将首次查询时手机210中的隐私信息x记为m1条隐私信息x。
S1702、手机210对m1条隐私信息使用密钥a加密,得到数据集Hm1(x)a。具体可参见S1002的说明。
S1703、手机210构建哈希值前缀、数据集Hm1(x)a中各个密文、比对时间标签1和新增标签1之间的对应关系,得到关系字典4。其中,比对时间标签1指示未发生过比对,新增标签1指示隐私信息x不是新增的。
即,在前文S1003构建得到的关系字典1的基础上,进一步增加比对时间标签和新增标签。
示例性的,关系字典1如前文表5所示,云220可以在表5的基础上,新增比对时间标签和新增标签,得到如下表10所示的关系字典4:
表10
上表10中,“比对时间”字段的值“NA”是比对时间标签1,用于指示未发生过比对。以及,“新增”字段的值“否”即为新增标签1,用于指示隐私信息x不是新增的。
S1704、手机210向云220发送查询请求(第二查询请求),查询请求中包括关系字典4。
关系字典4中包括关系字典1,因此,手机210向云220发送关系字典4,也可以实现向云220发送关系字典1。
在首次查询时,在阶段3中,云220可以确定出是首次查询,并针对首次查询返回可能相同的全量数据。具体的,云220可以执行下述S1705-S1708:
S1705、云220确定关系字典4中包括比对时间标签1。
如果关系字典4中包括比对时间标签1,则表示是首次查询。针对首次查询,云220可以采用S1706-S1708来处理。
S1706、云220查询关系字典4中的哈希值前缀对应的目标分桶。具体可参见前文S1101的说明。
S1707、云220使用密钥b对关系字典4中的密文二次加密,得到数据集Hm1(x)ab。具体可参见前文S1102的说明。
S1708、云220向手机210下发目标分桶的密文及其对应的注销标签,以及数据集Hm1(x)ab。
本实施例中,云220不仅将目标分桶包括的密文下发至手机210,而且将密文的注销标签下发至手机210,以供手机210确定密文对应的隐私信息y是否被注销。
示例性的,目标分桶包括前文表9中的分桶0002,则云220需要下发密文y1b及其注销标签“是”,以及密文y4b及其注销标签“否”。
在首次查询时,在阶段4中,手机210不仅需要比对得到相同元素,还需要进一步结合云220返回的数据是注销数据还是新增数据来确定查询结果。具体的,手机210可以执行下述S1709-S1711:
S1709、手机210使用密钥a对数据集Hm1(x)ab中的密文一次解密,得到数据集Hm1(x)b。具体可参见前文S1301的说明。
S1710、手机210将数据集Hm1(x)b中的密文和目标分桶的密文比对。
S1711、如果数据集Hm1(x)b中的密文xib与目标分桶中的密文yjb相同,且密文yjb的注销标签指示未注销,手机210显示隐私信息xi的查询结果为“是”。
如果密文xib与密文yjb相同,只能表示两者为相同元素。进一步,只有密文yjb的注销标签指示未注销,才能表明密文yjb对应的隐私信息yj依然为有效状态,例如,依然为风险号码,依然是注册号码等。该情况下,才显示查询结果为是。
反之,如果密文xib与密文yjb不同,或者,密文xib与密文yjb相同、但密文yjb的注销标签(如“是”)指示已注销,则显示查询结果为否,或者不显示。
另外,在首次查询完成后,手机210还可以执行下述S1712:
S1712、手机210更新比对时间。
示例性的,手机210将比对时间更新为当前时间,如2023-4-24。比对时间用于下一次查询时,手机210确定关系字典4中的比对时间标签。
应注意,图17中,在阶段4完成后,手机210才执行S1712。实际中,并不以此为限,手机210可以在首次查询过程中的任一时刻执行S1712。例如,在执行S1704发送查询请求之后,紧接着执行S1712,更新比对时间。
在完成上述首次查询之后,手机210还可能第2次、第3次……向云220发送查询请求,即触发第2次、第3次……查询,统称为非首次查询。
下面结合图18,说明非首次查询的具体实现:
在非首次查询时,在阶段2中,手机210可以在查询请求中携带指示发生过比对的信息(如下文中的比对时间标签2),以便云220确定出是非首次查询。以及,手机210还可以在查询请求中携带指示每条隐私信息x是否为手机210中的新增数据的信息(如下文中的新增标签2),以便云220确定出待查询的是手机210中的新增数据还是历史查询过的数据。具体的,手机210可以执行下述S1801-S1804:
S1801、响应于查询事件,手机210对手机210中当前的m2条隐私信息x分别计算哈希值,得到m2个哈希值。具体可参见S1001的说明。
与S1701中类似的,为了便于区分,将非首次查询时手机210中的隐私信息x记为m2条隐私信息x。
S1802、手机210对m2条隐私信息x使用密钥a加密,得到数据集Hm2(x)a。具体可参见S1002的说明。
为了便于说明,将m2条隐私信息x中,在t1时刻手机210已经向云220查询过的一条信息称为第一数据,则数据集Hm2(x)a中包括第一数据的密文(第一密文)。
S1803、手机210构建哈希值前缀、数据集Hm2(x)a中各个密文、比对时间标签2和新增标签2之间的对应关系,得到关系字典5。其中,比对时间标签2指示上一次的比对时间,新增标签2指示是新增的或者不是新增的。
与首次查询不同的是:在非首次查询时,已经发生过至少一次查询,那么则存在比对时间。因此,各条隐私信息x的比对时间不再指示未发生过比对,而是指示上一次的比对时间,如前文S1712中记录的比对时间。
以及,在上次查询至本次查询的过程中,手机210中可能产生新的隐私信息x。在非首次查询时,将新的隐私信息x的新增标签2设置为指示新增。除新的隐私信息x之外,其余隐私信息x的新增标签2都设置为指示不是新增。
示例性的,关系字典5如下表11所示:
表11
上表11中,“比对时间”字段的值“2023-4-24”是比对时间标签2,用于指示上一次的比对时间是2023-4-24。以及,“新增”字段的值“是”或“否”都是新增标签2。其中,有些密文的“新增”字段的值为“是”,用于指示隐私信息x是新增的;有些密文的“新增”字段的值为“否”,用于指示隐私信息x不是新增。
以上次查询是首次查询为例,表11相较于表10更新了比对时间,新增了密文x5a的记录,以及减少了密文x3a的记录。即表明:相较于首次查询时,新增了密文x5a对应的隐私信息x,以及删除了密文x3a对应的隐私信息x。
S1804、手机210向云220发送查询请求(第一查询请求),查询请求中包括关系字典5。
在非首次查询时,在阶段3中,云220可以确定出是非首次查询,以及确定出待查询的有手机210中的新增数据和/或手机210中历史查询过的数据。并且,针对手机210中的新增数据,云220可以返回与该新增数据可能相同的全量数据的信息。而针对手机210中的已经查询过的数据,云220可以返回与该已经查询过的数据可能相同的数据中、状态(如新增状态和注销状态)发生更新的数据的信息。具体的,在阶段3中,云220可以执行下述S1805-S1810:
S1805、云220确定关系字典5中不包括比对时间标签1。
如果关系字典5中不包括比对时间标签1,则表示为非首次查询。针对非首次查询,云220对新增和非新增的密文采用不同的处理方式。具体的,对新增的密文采用下述S1806来处理;对非新增的密文采用下述S1807-S1808来处理。
S1806、云220查询新增标签2指示新增的记录中,哈希值前缀对应的目标分桶1。具体可参见前文S1101的说明。
以关系字典5如上述表11所示、分桶结果如上述表9所示为例,新增标签2指示新增的记录为最后一行的记录,即“哈希值前缀:0a9e;密文:x5a;比对时间:2023-4-24;新增:是”,其中的哈希值前缀为0a9e。那么,云220可以在表9中查询到目标分桶1为分桶0a9e。
S1807、云220查询新增标签2指示不是新增的记录中,哈希值前缀(第一哈希特征)对应的目标分桶2。具体可参见前文S1101的说明。
为了便于说明,目标分桶2的哈希前缀可以称为第二哈希特征。
仍以关系字典5如上述表11所示、分桶结果如上述表9所示为例,新增标签2指示不是新增的记录为除最后一行之外的记录,涉及的哈希值前缀包括0002、0003和ffee。那么,云220可以在表9中查询到目标分桶2为分桶0002、分桶0003和分桶ffee(表9中未示出)。
S1808、云220查询目标分桶2中各条记录的更新时间,确定目标分桶2中更新时间晚于比对时间的记录1。
以目标分桶2为上述表9中的分桶0002、关系字典5如上述表11所示为例,表11中的比对时间为2023-4-24,目标分桶2中的记录如下所示:
第1条记录,哈希值前缀:0002;密文:y1b;更新时间:2023-4-25;注销:是;
第2条记录,哈希值前缀:0002;密文:y4b;更新时间:2023-4-22;注销:否。
那么,云220可以将第1条记录的更新时间“2023-4-25”和第2条记录的更新时间“2023-4-22”分别与比对时间“2023-4-24”比较。很显然,第1条记录的更新时间“2023-4-25”晚于比对时间“2023-4-24”,第2条记录的更新时间“2023-4-22”早于比对时间“2023-4-24”。
如果目标分桶2中记录1的更新时间晚于比对时间,则表明在上一次比对之后,记录2发生了更新,因此,云220在本次查询中可以将记录1用于比对。示例性的,第1条记录的更新时间“2023-4-25”晚于比对时间“2023-4-24”,即第1条记录为记录1,云220在本次查询中将第1条记录用于比对。
如果目标分桶2中记录2的更新时间早于比对时间,则表明在上一次比对之后,记录1并未发生过更新。那么,在历史查询过程中,该记录2已经用于比对过。因此,云220在本次查询中可以不再将记录2用于比对。示例性的,第2条记录中的更新时间“2023-4-25”早于比对时间“2023-4-24”,即第2条记录为记录2,云220在本次查询中可以不再将第2条记录用于比对。
以及,在阶段3中,还包括:
S1809、云220使用密钥b对关系字典5中的密文二次加密,得到数据集Hm2(x)ab。具体可参见前文S1102的说明。
应理解,上述S1806-S1809中,仅需保证S1807在S1808之前即可,其余步骤没有先后限制。
S1810、云220向手机210下发目标分桶1和目标分桶2中记录1的密文(可以简称为目标密文)及其对应的注销标签,以及数据集Hm2(x)ab。
与首次查询相比:在非首次查询时,云220并不是将目标分桶中所有记录(如目标分桶1和目标分桶2中的所有记录)的密文及其对应的注销标签下发至手机210,而只是将一部分目标分桶(如目标分桶1)的所有记录的密文和另一部分目标分桶(如目标分桶2)的部分记录(如记录1)的密文(第一密文集)及其注销状态下发至手机210。这样,可以进一步减少下发的数据量,减少通信开销。
示例性的,目标分桶1是上述表9中的分桶0a9e,目标分桶2中的记录1是上述表9所示分桶0002中的记录“哈希值前缀:0002;密文:y1b;更新时间:2023-4-25;注销:是”,则目标密文及其对应的注销标签如下表12所示:
表12
密文 | 注销 |
y1b | 是 |
y0b | 否 |
上述目标分桶1对应的哈希值前缀和新增标签2指示新增的记录的哈希值前缀相同。其中,目标分桶1中是隐私信息y的记录,新增标签2指示新增的记录即为上一次查询之后新增的隐私信息x的记录。因此,目标分桶1中的记录可以视为与新增的隐私信息x可能相同的隐私信息y的记录。即,目标分桶1中包括手机210中增量的隐私信息x对应的记录。
上述目标分桶2对应的哈希值前缀和新增标签2指示新增的记录的哈希值前缀相同。其中,目标分桶2中是隐私信息y的记录,新增标签2指示新增的记录不是上一次查询之后新增的隐私信息x的记录。因此,目标分桶2中的记录可以视为与非新增的隐私信息x可能相同的隐私信息y的记录。进一步的,记录1是与非新增的隐私信息x可能相同的、并且发生了更新的隐私信息y的记录。即,即记录1是云220中一部分更新(也可以理解为增量)的隐私信息y的记录。
换言之,在非首次查询时,云220只是将增量数据的记录下发至手机210。
在非首次查询时,在阶段4中,手机210在比对得到相同元素,且结合云220返回的数据是注销数据还是新增数据得到查询结果的基础上,在一些情况下,还需要进一步结合历史查询的查询结果和/或待查询的是否为手机210中的新增数据的情况,来得到本次的查询结果。具体的,手机210可以执行下述S1811-S1814:
S1811、手机210使用密钥a对数据集Hm2(x)ab中的密文一次解密,得到数据集Hm2(x)b。具体可参见前文S1301的说明。
S1812、手机210将数据集Hm2(x)b中的密文与目标密文比对。
S1813、如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,且密文yjb的注销标签指示未注销,手机210显示隐私信息xi的查询结果为“是”。具体可参见前文S1711的说明。
密文xib和目标密文yjb相同,则表示两者是相同元素。在此基础上,如果密文yjb未注销,才能表明密文yjb对应的隐私信息yj依然为有效状态,例如,依然为风险号码,依然是注册号码等。该情况下,才确认隐私信息xi的查询结果为是。
示例性的,对于新增的(即上一次查询之后新增的)隐私信息x5,查询到隐私信息x5的密文x5b与上述表12中的密文y0b相同,则表明隐私信息x5与密文y0b对应的隐私信息y0相同。并且,密文y0b的注销标签指示未注销,则表明隐私信息y0依然是有效状态。因此,手机210可以显示隐私信息x5的查询结果为是。
S1814、如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,但密文yjb的注销标签指示已注销,手机210显示隐私信息xi的查询结果为“否”。
密文xib和目标密文yjb相同,则表示两者是相同元素。在此基础上,如果密文yjb已注销,才能表明密文yjb对应的隐私信息yj已经不是有效状态了,例如,不再是风险号码,不再是注册号码等。该情况下,则确认隐私信息xi的查询结果为否。
示例性的,对于原有的(即上一次查询之前就有的)隐私信息x1,查询到隐私信息x1的密文x1b与上述表12中的密文y1b相同,则表明隐私信息x1与密文y1b对应的隐私信息y1相同。并且,密文y1b的注销标签指示已注销,则表明隐私信息y1已经不是有效状态了。因此,手机210可以显示隐私信息x1的查询结果为否。
S1815、如果数据集Hm2(x)b中的密文xib与目标密文中的所有密文都不相同,且隐私信息xi的新增标签2指示是新增的,手机210显示隐私信息xi的查询结果为“否”。
如果隐私信息xi是新增的,则经过前文S1806和S1810,云220已经将所有可能与隐私信息xi相同的隐私信息y的密文都下发至手机210了。在此基础上,如果密文xib与目标密文(包括所有可能与隐私信息xi相同的隐私信息y的密文)中的所有密文都不相同,则表明云220中不包括该隐私信息xi,因此,隐私信息xi的查询结果为否。
经过上述S1813-S1815,则得到了查询结果的增量情况,即相较于上一次查询的变化情况。在此基础上,还可以结合上一次查询的查询结果,得到本次查询的查询结果。具体的,如下S1816所示:
S1816、如果数据集Hm2(x)b中的密文xib与目标密文中的所有密文都不相同,且隐私信息xi的新增标签2指示不是新增的,手机210显示隐私信息xi上一次查询的查询结果。
如果隐私信息xi不是新增的,则经过前文S1807、S1808和S1810,云220只是将所有可能与隐私信息xi相同的隐私信息y中,更新时间晚于比对时间的隐私信息y的密文下发至手机210。在此基础上,如果密文xib与目标密文中的所有密文都不相同,也只能表明更新时间晚于比对时间的隐私信息y中不包括隐私信息xi。进一步的,上一次查询得到隐私信息xi的查询结果为否,则可以进一步确定更新时间早于比对时间的隐私信息y中也不包括隐私信息xi,从而确定云220中不包括隐私信息xi,得到隐私信息xi的查询结果为否。反之,上一次查询得到隐私信息xi的查询结果为是,则可以进一步确定更新时间早于比对时间的隐私信息y中包括隐私信息xi,从而确定云220中包括隐私信息xi,得到隐私信息xi的查询结果为是。
由此可见,如果数据集Hm2(x)b中的密文xib与目标密文中的所有密文都不相同,且隐私信息xi的新增标签2指示不是新增的,手机210则以上一次查询得到的隐私信息xi的查询结果为准。即,上一次查询得到隐私信息xi的查询结果为是,则本次查询得到隐私信息xi的查询结果为是;上一次查询得到隐私信息xi的查询结果为否,则本次查询得到隐私信息xi的查询结果为否。当然,手机210可以直接保持隐私信息xi的状态(是或否的状态)不变,而无需去获取历史的查询结果。
另外,在非首次查询完成后,手机210还可以执行下述S1817:
S1817、手机210更新比对时间。具体可参见前文S1712的说明。
为了便于对上述图17和图18所示的查询过程的理解,下面结合图19所示的流程图,来简要说明该查询过程的核心:
S1901、手机210向云220发送查询请求,查询请求用于请求查询云220的隐私信息y中是否包括隐私信息xi。具体可参见前文S1701-S1704或者S1801-S1804的说明。
S1902、云220检测查询请求是否为手机210首次从云220中查询隐私信息x的请求。若是,则执行S1903;若否,则执行S1905。具体可参见前文S1705或者S1805的说明。
具体的,如S1705所示,如果查询请求中包括比对时间标签1,云220可以确定为首次查询。如S1805所示,如果查询请求中不包括比对时间标签1,云220可以确定为非首次查询。
S1903、云220向手机210下发查询响应1,查询响应1中包括可能与隐私信息xi相同的全量数据的信息。具体可参见前文S1706-S1708的说明。
需要在此说明的是,前文实施例中,主要以哈希值前缀来查找可能相同的数据,如查询找与隐私信息x可能相同的隐私信息y。实际实施时,并不以此为限。例如,还可以通过哈希值中其他比特位来查找可能相同的数据。换言之,可以通过哈希值的部分比特位(预设比特位)来查找可能相同的数据。
S1904、手机210基于查询响应1确定查询结果。具体可参见前文S1709-S1711的说明。
如果数据集Hm1(x)b中的密文xib与目标分桶中的密文yjb相同,且密文yjb的注销标签指示未注销,则得到隐私信息xi的查询结果为“是”。如果数据集Hm1(x)b中的密文xib与目标分桶中的密文yjb相同,但密文yjb的注销标签指示已注销,或者,如果数据集Hm1(x)b中的密文xib与目标分桶中的所有密文都不相同,则得到隐私信息xi的查询结果为“否”
应注意,在首次查询时,手机210无需参考历史查询的查询结果和隐私信息xi是否为手机210中的新增数据的情况。
S1905、云220确定隐私信息xi中手机210的新增数据,并确定可能与隐私信息xi中的新增数据相同的全量数据。具体可参见前文S1806的说明。
例如,密文的新增标签2指示新增,则表明该密文为新增数据的密文。
S1906、云220确定隐私信息xi中手机210已经查询过的数据,并确定可能与该已经查询过的数据相同的全量数据中、云220中状态发生更新的增量数据。具体可参见前文S1807-S1808的说明。
例如,密文的新增标签2指示不是新增,则表明该密文是已经查询过的数据的密文。
这样,针对重复查询的隐私信息xi,云220仅需返回增量数据的信息,可以极大的降低传输的数据量。
S1907、云220向手机210下发查询响应2,查询响应2中包括可能与该新增数据相同的全量数据的信息,和/或可能与该已经查询过的数据相同的全量数据中、云220中状态发生更新的增量数据的信息。具体可参见前文S1809-S1810的说明。
至此,需要说明的是,实际中,隐私信息xi中可能仅包括新增数据,该情况下则仅需执行S1905即可。那么,查询响应2不包括可能与该已经查询过的数据相同的全量数据中、云220中状态发生更新的增量数据的信息。或者,隐私信息xi中可能仅包括已经查询过的数据,该情况下则仅需执行S1906即可。那么,查询响应2中不包括可能与该新增数据相同的全量数据的信息。
S1908、手机210基于查询响应2,隐私信息xi是否为手机210中的新增数据的情况,以及历史的查询结果(如上一次的查询结果),确定查询结果。具体可参见前文S1811-S1816的说明。
针对隐私信息xi是手机210中的新增数据的情况,如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,且密文yjb的注销标签指示未注销,则得到隐私信息xi的查询结果为“是”。如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,但密文yjb的注销标签指示已注销,则得到隐私信息xi的查询结果为“否”。
针对隐私信息xi不是手机210中的新增数据的情况,如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,且密文yjb的注销标签指示未注销,则得到隐私信息xi的查询结果为“是”。如果数据集Hm2(x)b中的密文xib与目标密文中的密文yjb相同,但密文yjb的注销标签指示已注销,则得到隐私信息xi的查询结果为“否”。如果数据集Hm2(x)b中的密文xib与目标密文中的所有密文都不相同,则将历史查询得到的隐私信息xi的查询结果作为本次的查询结果。例如,历史查询得到隐私信息xi的查询结果为“是”,则本次也可以得到隐私信息xi的查询结果为“是”;历史查询得到隐私信息xi的查询结果为“否”,则本次也可以得到隐私信息xi的查询结果为“否”。
在另一些实施例中,在阶段1中,云220还可以将数据集Hn(y)b中的每个密文进行压缩,得到压缩后的数据集Hn(y)b’。后续阶段3中,云220可以将压缩得到的数据集Hn(y)b’返回至手机210,以便手机210进行比对。应理解,与压缩前的数据集Hn(y)b相比:压缩后的数据集Hn(y)b’的数据量更小。即,可以减少云220向手机210传输的数据量,缩减通信开销。
参见图20,在阶段1中S501之后,还包括S2001:
S2001、云220对数据集Hn(y)b中的每个密文进行压缩,得到压缩后的数据集Hn(y)b’。
示例性的,云220对数据集Hn(y)b中的密文y1b、密文y2b、密文y3b……密文ynb分别压缩,依次得到压缩后的结果y1b’、压缩后的结果y2b’、压缩后的结果y3b’……压缩后的结果ynb’。
在一种具体的实现方式中,云220可以采用指纹压缩的方式实现对密文的压缩。其中,指纹压缩是指使用密文的“指纹”来表示密文,从而实现对密文的压缩。应理解,此处的“指纹”代表可以唯一表示密文的信息,而并不是常规意义上的指纹。
示例性的,指纹压缩的具体实现可以是:云220使用数据集Hn(y)b中各个密文的一部分比特位(第二比特位)作为密文压缩后的结果。参见图17所示的压缩方式一,数据集Hn(y)b中包括密文DC9CA4E4602…204B3、60E9A9315AB…E4F5E、294DE95CBCD…C1D91以及A61DF617262…79A1F,云220可以取这些密文的前32个比特位,依次得到压缩后的结果为DC9CA4E4、60E9A931、294DE95C以及A61DF617,则数据集Hn(y)b’中包括DC9CA4E4、60E9A931、294DE95C以及A61DF617。
又示例性的,指纹压缩的具体实现可以是:云220对数据集Hn(y)b中各个密文求哈希值,然后取哈希值的部分比特位(第二比特位)作为密文压缩后的结果。参见图17所示的压缩方式二,数据集Hn(y)b中包括密文DC9CA4E4602…204B3、60E9A9315AB…E4F5E、294DE95CBCD…C1D91以及A61DF617262…79A1F,云220可以对这些密文求哈希,依次得到哈希值51A15180…002E11A0C0E、C3000810…00341AA6176、4BB12980…00C497DE639和D6B71BD0…002DF235902。然后,云220取这些哈希值的前32个比特位,依次得到压缩后的结果51A15180、C3000810、4BB12980以及D6B71BD0,则数据集Hn(y)b’中包括51A15180、C3000810、4BB12980以及D6B71BD0。
以及,阶段3中的S505替换为S2002:
S2002、云220向手机210发送数据集Hm(x)ab和数据集Hn(y)b’。
本实施例中,由于云220下发的是对密文压缩后的结果,那么,在阶段4中,手机210在解密得到数据集Hm(x)b后,即S5062a之后,还包括S2003,以使数据具有可比性:
S2003、手机210对数据集Hm(x)b中的各个密文压缩,得到数据集Hm(x)b'。
示例性的,手机210对数据集Hm(x)b中的密文x1b压缩,得到压缩后的结果x1b’。
应理解,S1403中采用的压缩算法与S1401中采用的压缩算法相同。
以及,阶段4中的S5062b替换为S2004:
S2004、手机210将数据集Hm(x)b’和数据集Hn(y)b’比对,得到比对结果。
由于手机210仅将数据集Hm(x)b’和数据集Hn(y)b’比对,而并不需要还原出数据集Hm(x)b’和数据集Hn(y)b’中压缩后的结果对应的密文。因此,云220或者手机210在压缩时,可以采用不可逆的压缩算法,以更大的减小数据量。
至此,需要说明的是,上述对密文分桶的实施例和对密文压缩的实施例是可以结合的。示例性的,在阶段1中,云220可以将密文划分到各个分桶中;以及,云220将每个分桶中的密文进行压缩。在阶段3中,云220接收到查询请求后,可以将目标分桶中压缩后的结果发送至手机210。在阶段4中,手机210在解密得到数据集Hm(x)b后,可以将数据集Hm(x)b中的每个密文压缩后,再与目标分桶中压缩后的结果比对。这样,可以通过分桶和压缩更大程度的减少传输的数据量,缩减通信开销。
实际中,不同密文压缩后,得到的压缩结果可能相同,即出现碰撞。以图21所示的压缩方式一为例,取密文的前32个比特位作为压缩后的结果,虽然两个密文不同,但是两个密文的前32个比特位可能是相同的。并且,通常情况下,压缩率越低(即压缩程度越大),导致出现压缩碰撞的可能性就越大。以取密文的前32个比特位和前16个比特位为例,取前16个比特位,则需要保留密文的16个比特位,而取前32个比特位,则需要保留密文的32个比特位。很显然,取前16个比特位的压缩率更低。但是,16个比特位可能的取值包括0000-ffff,共有164种可能,32个比特位可能的取值包括00000000-ffffffff,共有168种可能。应理解,可能的取值越少,则发生碰撞的可能性越大。那么,取密文的前32个比特位,发生碰撞的可能性更大。
在出现碰撞后,则可能导致查询出错。示例性的,云220中的风险号码包括号码1、号码2、号码3、号码5、号码6和号码10,手机210中来电号码为号码4。也就是说,云220中的风险号码中不包括号码4,即号码4不是风险号码。然而,如果号码1、号码2、号码3、号码5、号码6和号码10中任一个的压缩结果,与号码4的压缩结果相同,手机210经过比对则可能将号码4确定风险号码。这显然与实际情况(即号码4不是风险号码)是不符的,查询出错了。
通常而言,只要出错的概率不高,影响不会很大。但是,有些场景是不允许出现这种查询错误的。例如,将未注册社交应用A的联系人识别为社交应用A的注册用户,这显然是不允许的。因此,在对密文压缩的实施例中,还需要进一步避免出现碰撞的问题。
在一些实施例中,参见图22,在云220执行前文阶段1之前,还包括阶段0,云220确定处理参数(第一处理参数)。其中,处理参数包括密钥b,用于指示是否压缩使用密钥b加密的密文的指示信息,以及在指示压缩使用密钥b加密的密文时所使用的压缩算法中的一项或多项。后续(如阶段1-阶段4中),云220和手机210可以基于这些处理参数处理,以避免出现碰撞,提高查询的准确率。例如,在阶段1中,云220可以基于这些处理参数来得到各个分桶中的密文,以使得各个分桶中都不存在碰撞。
下面以对密文分桶和对密文压缩结合的方式为例,并主要在场景1中,来示例性的说明阶段0的具体实现。参加图23A、图23B和图23C,在阶段0中,云220可以执行下述步骤:
S2301、云220获取所有可能的Q条隐私信息(实验数据),得到隐私信息的全量数据集H(Q),1≤Q,Q为整数。
示例性的,全量数据集H(Q)中包括所有的手机号码(实验号码),如手机号码q1、手机号码q2……手机号码qQ,约为20亿左右。
S2302、云220采用哈希算法1对Q条隐私信息分别计算哈希值,得到Q个哈希值。
关于S2302的具体实现,可以参见前文S901的说明,此处不再赘述。
S2303、云220按照Q个哈希值的哈希值前缀(即前k0个比特位的值),划分分桶。
其中,一个哈希值前缀划分为一个分桶。以k=16为例,可以划分得到分桶0000、0001……ffff,共65536个分桶。
S2304、云220随机生成密钥b0,使用密钥b0对Q条隐私信息加密,得到Q条密文。
云220可以使用密钥b0对Q个哈希值加密,得到密文q1b0、密文q2b0、……、密文qQb0,从而实现对Q条隐私信息加密(图23A、图23B和图23C示出的就是这种实现方式);或者,云220可以使用密钥b0对Q条隐私信息本身加密,从而实现对Q条隐私信息加密。
关于S2304的具体实现,可以参见前文S902的说明,此处不再赘述。
S2305、云220将Q条密文分桶。
针对任一密文qzb0(1≤z≤Q,z为整数),云220将其划分到隐私信息qz的哈希值前缀对应的分桶。
示例性的,手机号码q1的哈希值前缀为0001,则可以将手机号码q1的密文q1b0划分到分桶0001;手机号码q2的哈希值前缀为ffff,则可以将手机号码q2的密文q2b0划分到分桶ffff……手机号码qQ的哈希值前缀为0000,则可以将手机号码qQ的密文qQb0划分到分桶0000。
关于S2305的具体实现,可以参见前文S903的说明,此处不再赘述。
S2306、云220采用压缩算法1(第一压缩算法)对各个分桶中的密文进行压缩。
以分桶0000中的密文包括密文q5b0、密文q80b0、密文q900b0以及密文qQb0为例,可以对这些密文取一部分比特位,或者对这些密文求哈希后取一部分比特位,从而得到个个密文压缩后的结果,如依次得到压缩后的结果DC9CA4、60E9A9、294DE9和DC9CA4。其中,在阶段0中,经过使用随机密钥加密、压缩得到的每个分桶中的密文称为一个实验密文集。
经过S2306,在进行压缩之后,则可以得到各个密文压缩后的结果。后续,云220可以基于压缩结果完成碰撞检测与规避,使得各个分桶中都不存在碰撞的问题。下面以三种具体的实现方式来说明。
实现方式一,云220可以通过重新生成随机密钥的方式来避免碰撞,并将最终使得不存在碰撞的随机密钥确定为第二密钥。具体的,如图23A所示,在S2306之后,还包括:
S2307a、云220检测是否包括存在碰撞的至少一个分桶。若是,则重复执行S2304及其后续步骤;若否,则执行S1408a。
针对任一分桶,云220可以检测该分桶中是否包括相同的压缩后的结果,如果包括相同的压缩后的结果,则表明该分桶中存在碰撞。示例性的,分桶0000中包括两个DC9CA4,则表明分桶0000中存在碰撞。反之,如果不包括相同的压缩后的结果,则表明该分桶中不存在碰撞。
如果包括存在碰撞的至少一个分桶,则重复执行S2304及其后续步骤,以重新生成密钥来加密。经验表明,在存在碰撞的情况下,如果更换密钥加密而后压缩,则再次出现碰撞的可能性将极大降低。因此,通过重复执行S2304及其后续步骤,则可能降低存在碰撞的可能性。
如果不包括存在碰撞的至少一个分桶,即所有分桶中都不存在碰撞的问题,则执行下述S2308a,以保存处理参数。
S2308a、云220保存哈希算法1、k0、b0以及压缩算法1。
即,处理参数包括分桶、哈希算法1、k0、b0以及压缩算法1。云220保存处理参数,可用于后续阶段中的处理。
其中,哈希算法1用于阶段1和阶段2中求哈希。示例性的,在S901和S1001中求哈希。
k0用于阶段1和阶段2中取哈希值前缀。示例性的,k0可用作k,在S903和S1003中取哈希值前缀。
b0是指最后一轮执行S2304的过程中,随机生成的密钥。b0用于阶段1和阶段3中的加密处理。示例性的,b0可用作b,在S902和S1102中加密。
压缩算法1用于阶段1和阶段4中对密文压缩。示例性的,在S1601和S1603中对密文压缩。
也就是说,在实现方式一中,云220可以检测各个分桶中是否包括相同的压缩密文,若存在至少一个分桶中包括相同的压缩密文,云220则可以更新随机密钥,使用更新后的书记密钥和原来的压缩算法1来重新得到各个分桶中的压缩密文,直至所有分桶中都不存在相同的压缩密文,则得到最终的处理参数。例如,处理参数包括最终更新的随机密钥和压缩算法1。其中,最终更新的随机密钥作为前文中密钥b使用。
应理解,在阶段0中,是对全量数据集(如20亿手机号码)进行的碰撞检测,并且达到了每个分桶中都不存在碰撞的效果。那么,在阶段1-阶段4中采用这些处理参数,对上述全量数据集的子集(如前文Hm(x)和Hn(y))处理,也可以保证哈希值前缀相同的密文(即在阶段0中划分到一个分桶中的密文)压缩后的结果不会存在碰撞。那么,在阶段4中,手机210采用图15所示的方式比对,不会出现查询出错的可能。从而可以提高查询结果的准确性。下文中的实现方式二和实现方式三也同理。
实现方式二,云220可以标记存在碰撞的分桶,如记录存在碰撞的分桶的哈希前缀(第一哈希特征),后续在压缩处理时,如果隐私信息y的哈希特征与记录的哈希特征相同,则在该隐私信息y使用密钥b压缩后,不再进一步压缩,以避免发生碰撞。具体的,如图23B所示,在S2306之后,还包括:
S2307b、云220遍历分桶,检测当前分桶中压缩后的结果是否存在碰撞。若是,则执行S2308b;若否,则继续检测下一个分桶。
关于检测是否存在碰撞的具体实现,可以参加前文S2307a中的说明,此处不再赘述。
S2308b、云220标记当前分桶。
针对当前分桶,如果检测到存在碰撞,则对当前分桶标记。例如,记录该存在碰撞的分桶的哈希前缀。这样,后续在阶段1中对各个分桶中的密文压缩时,则不会对有标记的分桶中的密文压缩。
S2309b、云220保存哈希算法1、k0、b0以及压缩算法1。
关于哈希算法1、k0以及b0,可参见前文S2308a中的相关说明,此处不再赘述。
需要说明的是,在本实现方式中,压缩算法1用于阶段1中对没有标记的分桶中的密文压缩,而对于有标记的分桶,则无需使用压缩算法1来压缩。即,如果隐私信息y的哈希前缀与标记的分桶的哈希特征相同,则无需在对隐私信息y使用密钥b加密后,进一步压缩。反之,如果隐私信息y的哈希前缀与标记的分桶的哈希特征不相同,则在对隐私信息y使用密钥b加密后,需要进一步压缩。以及,在阶段4中,在使用密钥a解密得到密文xib后,可能需要对密文xib压缩,也可能不需要对密文xib压缩。具体地,手机210可以根据密文xib的待比对数据,如关系字典2中密文xiab对应的数据的长度确定是否需要对密文xib压缩。其中,如果待比对数据的长度小于或等于长度1(第一长度),则表明待比对数据是压缩后的结果,因此需要对密文xib压缩。如果待比对数据的长度大于长度1,则表明待比对数据不是压缩后的结果,因此不需要对密文xib压缩。这样,可以在避免碰撞的前提下,使得两个比对的数据之间具有可比性。
当然,在阶段1中,云220可以标识压缩后的结果或者未压缩的密文。这样,在阶段4中,如果查询到密文xib的待对比对数据具有压缩后的结果的标识(或者不具有未压缩的密文的标识),手机210可以将密文xib压缩后再与待比对数据比对;如果查询到密文xib的待对比对数据不具有压缩后的结果的标识(或者具有未压缩的密文的标识),手机210可以将密文xib不经压缩则与待比对数据比对。
实现方式三,云220可以针对存在碰撞的分桶,使用更长的压缩位数,以避免发生碰撞。具体的,如图23C所示,还包括:
S2307c、云220遍历分桶,检测各个分桶中压缩后的结果是否存在碰撞。若是,则执行S2308c;若否,则继续检测下一个分桶。
关于检测是否存在碰撞的具体实现,可以参加前文S2307a中的说明,此处不再赘述。
S2308c、云220采用压缩算法2(第二压缩算法)对当前分桶中的密文重新压缩,压缩算法2的压缩位数多于压缩算法1的压缩位数。
针对任一分桶,如果检测到当前分桶中存在碰撞,则牺牲压缩率,而使用压缩为数更长的压缩算法2来对当前分桶中密文的压缩,以避免出现碰撞。
示例性的,分桶0000中的密文包括密文q5 b0、密文q80 b0、密文q900 b0以及密文qQb0,如果取24个比特位,可以依次得到压缩后的结果DC9CA4、60E9A9、294DE9和DC9CA4,其中,DC9CA4有重复,存在碰撞。那么,可以取28个比特位。例如,取28个比特位,可以依次得到压缩后的结果DC9CA41、60E9A92、294DE93和DC9CA44。
S2309c、云220检测当前分桶中压缩后的结果是否存在碰撞。若是,则重复执行S2308c及S2309c。若否,则执行S2310c。
如果采用更长的压缩位数压缩后,依然存在碰撞,则针对当前分桶,重复执行S2308c及其后续步骤,再次增加压缩位数来压缩。
如果采用更长的压缩位数压缩后,不存在碰撞了,则可以执行下述S2310c,以便后续针对该当前分桶采用更长的压缩位数,从而避免碰撞。
S2310c、云220将压缩算法2与当前分桶关联保存。
这样,后续在阶段1中对各个分桶中的密文压缩时,则会对该当前分桶中的密文使用压缩算法2来压缩。
S2311c、云220保存哈希算法1、k0、b0以及压缩算法1。
关于哈希算法1、k0以及b0,可参见前文S2308a中的相关说明,此处不再赘述。
需要说明的是,在本实现方式中,压缩算法1用于阶段1中对没有关联压缩算法2的分桶中的密文压缩,而对于关联有压缩算法2的分桶,则使用压缩算法2来压缩。以及,在阶段4中,在使用密钥a解密得到密文xib后,可能需要使用压缩算法1来压缩,也可能需要使用压缩算法2来压缩。具体地,手机210可以根据密文xib的待比对数据,如关系字典2中密文xiab对应的数据的位数(也可以理解为长度),选择压缩算法1或者压缩算法2对密文xib压缩。其中,如果待比对数据的位数是位数1(等于压缩算法1的位数,如记为第二长度),因此对密文xib采用压缩算法1来压缩。如果待比对数据的位数是位数2(等于压缩算法2的位数,如记为第三长度),因此对密文xib采用压缩算法2来压缩。这样,可以在避免碰撞的前提下,使得两个比对的数据之间具有可比性。
当然,在阶段1中,云220对各个密文压缩后,可以标识压缩后的结果采用的压缩算法。这样,在阶段4中,如果查询到密文xib的待对比对数据具有压缩算法1的标识,手机210可以采用压缩算法1对密文xib压缩;如果查询到密文xib的待对比对数据具有压缩算法2的标识,手机210可以采用压缩算法2对密文xib压缩。
在前文三种实现方式中,有变化的处理参数仅有b0和压缩算法。例如,在实现方式一中,可能会重新生成b0;在实现方式三中,有些分桶采用的压缩算法是压缩算法2。除此之外,哈希算法1和k0都未发生变化。因此,手机210和云220也可以预设哈希算法为哈希算法1以及预设哈希值前缀的位数为k0,然后在阶段0-阶段4中都使用哈希算法1和k0。从而无需在阶段0中保存哈希算法1和k0。即,S2308a、S2309b和S2311c中都无需保存哈希算法1和k0。
上述关于避免碰撞的实施例中,以对密文分桶和对密文压缩结合的方式为例在说明。而实际实时时,可能仅采用对密文压缩的方式来节省通信开销,而不使用密文分桶的方式来节省通信开销。这种情况下,则可以省略上述S2301和S2302,并且也无需保存分桶相关的参数,如哈希算法1和k0。这样,也可以避免碰撞。
本申请实施例还提供了一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种芯片系统,如图24所示,该芯片系统2400包括至少一个处理器2401和至少一个接口电路2402。处理器2401和接口电路2402可通过线路互联。例如,接口电路2402可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路2402可用于向其它装置(例如处理器2401)发送信号。示例性的,接口电路2402可读取存储器中存储的指令,并将该指令发送给处理器2401。当所述指令被处理器2401执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中手机执行的各个功能或者步骤。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述方法实施例中手机执行的各个功能或者步骤。
其中,本实施例提供的电子设备、通信系统、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (18)
1.一种查询方法,其特征在于,所述方法包括:
第一设备向所述第二设备发送第一查询请求,所述第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文;
所述第一设备接收来自所述第二设备的第二密文和所述第二设备中数据集的增量数据对应的第一密文集,所述第二密文是使用第二密钥对所述第一密文加密得到的,所述第一密文集中的密文是使用所述第二密钥对所述增量数据加密后得到的,所述增量数据是指:从t1时刻到t2时刻之间所述数据集中状态发生更新的数据;所述状态包括注销状态或新增状态,所述t2时刻是当前时刻,所述t1时刻是所述t2时刻之前所述第一设备查询所述数据集中是否包括所述第一数据的过程中的一时刻;
所述第一设备基于所述第二密文、所述第一密文集和所述第一密钥,确定第一查询结果,所述第一查询结果指示所述第二设备中是否包括所述第一数据。
2.根据权利要求1所述的方法,其特征在于,所述第一查询请求中还包括所述第一数据的第一哈希特征;
其中,增量数据是指:从t1时刻到t2时刻之间所述数据集中状态发生更新的数据中,第二哈希特征与所述第一哈希特征相同的数据。
3.根据权利要求2所述的方法,其特征在于,所述第一哈希特征包括所述第一数据的哈希值中预设比特位的信息,所述第二哈希特征包括所述状态发生更新的数据的哈希值中所述预设比特位的信息。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一设备基于所述第二密文、所述第一密文集和所述第一密钥,确定第一查询结果,包括:
所述第一设备使用所述第一密钥对所述第二密文解密,得到第三密文;
所述第一设备比对所述第三密文和所述第一密文集,得到第一比对结果,所述第一比对结果指示所述第一密文集中是否包括所述第三密文;
所述第一设备基于所述第一比对结果,确定所述第一查询结果。
5.根据权利要求4所述的方法,其特征在于,所述第一设备基于所述第一比对结果,确定所述第一查询结果,包括:
如果所述第一密文集中包括与所述第三密文相等的新增数据的密文,则所述第一查询结果指示所述第二设备中包括所述第一数据;
或者,如果所述第一密文集中包括与所述第三密文相等的注销数据的密文,则所述第一查询结果指示所述第二设备中不包括所述第一数据;
或者,如果所述第一密文集中不包括与所述第三密文相等的密文,且t1时刻所述第一设备查询到所述第二设备中不包括所述第一数据,则所述第一查询结果指示所述第二设备中不包括所述第一数据;
或者,如果所述第一密文集中不包括与所述第三密文相等的密文,但t1时刻所述第一设备查询到所述第二设备中包括所述第一数据,则所述第一查询结果指示所述第二设备中包括所述第一数据。
6.根据权利要求5所述的方法,其特征在于,在所述确定所述第一查询结果之前,所述方法还包括:
所述第一设备检测到所述第一数据不是t1时刻至t2时刻之间新增的。
7.根据权利要求1-6中任一项所述的方法,其特征在于,第二查询请求和所述第一查询请求为前后两次相邻的查询请求,所述第二查询请求为t1时刻所述第一设备查询所述数据集中是否包括所述第一数据的查询请求。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
在t1时刻所述第一设备查询所述数据集中是否包括所述第一数据之后,所述第一设备记录查询时间,所述查询时间指示t1时刻;
其中,所述第一查询请求中还包括所述查询时间,所述查询时间用于所述第二设备确定所述第一密文集。
9.一种查询方法,其特征在于,所述方法包括:
所述第二设备接收来自所述第一设备的第一查询请求,所述第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文;
所述第二设备向所述第一设备发送第二密文和所述第二设备中数据集的增量数据对应的第一密文集,所述第二密文是使用第二密钥对所述第一密文加密得到的,所述第一密文集中的密文是使用所述第二密钥对所述增量数据加密后得到的,所述增量数据是指:从t1时刻到t2时刻之间所述第二设备的数据集中状态发生更新的数据;所述状态包括注销状态或新增状态,所述t2时刻是当前时刻,所述t1时刻是所述t2时刻之前所述第一设备查询所述数据集中是否包括所述第一数据的过程中的一时刻。
10.根据权利要求9所述的方法,其特征在于,所述第一查询请求中还包括第一特征信息,所述第一特征信息是采用不可逆的第一加密算法对第一数据加密得到的密文的特征信息;
其中,增量数据是指:从t1时刻到t2时刻之间所述数据集中状态发生更新的数据中,第二特征信息与所述第一特征信息匹配的数据,所述第二特征信息是使用所述第一加密算法对所述状态发生更新的数据加密得到的密文的特征信息。
11.根据权利要求9或10所述的方法,其特征在于,在所述第二设备向所述第一设备发送第二密文和所述第二设备中数据集的增量数据对应的第一密文集之前,所述方法还包括:
所述第二设备检测到所述第一查询请求为所述第一设备非首次查询所述第二设备的所述数据集的查询请求。
12.根据权利要求11所述的方法,其特征在于,所述第一查询请求中包括查询时间,所述查询时间指示所述第一设备在t1时刻查询过所述第二设备的所述数据集。
13.根据权利要求11或12所述的方法,其特征在于,在所述第二设备向所述第一设备发送第二密文和所述第二设备中数据集的增量数据对应的第一密文集之前,所述方法还包括:
所述第二设备检测到所述第一数据不是t1时刻至t2时刻之间所述第一设备中的新增数据。
14.一种查询方法,其特征在于,所述方法包括:
第一设备向所述第二设备发送第一查询请求,所述第一查询请求中包括使用第一密钥对第一数据加密得到的第一密文;
响应于所述第一查询请求,所述第二设备向所述第一设备发送第二密文和所述第二设备中数据集的增量数据对应的第一密文集,所述第二密文是使用第二密钥对所述第一密文加密得到的,所述第一密文集中的密文是使用所述第二密钥对所述增量数据加密后得到的,所述增量数据是指:从t1时刻到t2时刻之间所述数据集中状态发生更新的数据;所述状态包括注销状态或新增状态,所述t2时刻是当前时刻,所述t1时刻是所述t2时刻之前所述第一设备查询所述数据集中是否包括所述第一数据的过程中的一时刻;
响应于所述第二密文和所述第一密文集,所述第一设备基于所述第二密文、所述第一密文集和所述第一密钥,确定第一查询结果,所述第一查询结果指示所述第二设备中是否包括所述第一数据。
15.一种电子设备,其特征在于,所述设备包括存储器和处理器,所述存储器和处理器耦合;其中,所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令;
其中,所述电子设备为第一设备,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法中,所述第一设备执行的步骤;
或者,所述电子设备为第二设备,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法中,所述第二设备执行的步骤。
16.一种通信系统,其特征在于,所述通信系统包括权利要求1-14中任一项所述的第一设备和第二设备。
17.一种计算机可读存储介质,其特征在于,包括计算机指令;
其中,当所述计算机指令在第一设备上运行时,使得所述第一设备执行如权利要求1-14中任一项所述的方法中,所述第一设备执行的步骤;
或者,当所述计算机指令在第二设备上运行时,使得所述第二设备执行如权利要求1-14中任一项所述的方法中,所述第二设备执行的步骤。
18.一种芯片系统,其特征在于,所述芯片系统应用于包括处理器和存储器的电子设备,所述芯片系统包括一个或多个接口电路和一个或多个处理器,所述接口电路和所述处理器通过线路互联,所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;
其中,所述电子设备为第一设备,当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-14中任一项所述的方法中,所述第一设备执行的步骤;
或者,所述电子设备为第二设备,当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-14中任一项所述的方法中,所述第二设备执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310565890.XA CN117729535A (zh) | 2023-05-17 | 2023-05-17 | 一种查询方法、电子设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310565890.XA CN117729535A (zh) | 2023-05-17 | 2023-05-17 | 一种查询方法、电子设备及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117729535A true CN117729535A (zh) | 2024-03-19 |
Family
ID=90209362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310565890.XA Pending CN117729535A (zh) | 2023-05-17 | 2023-05-17 | 一种查询方法、电子设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117729535A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117993027A (zh) * | 2024-03-28 | 2024-05-07 | 之江实验室 | 针对重复查询攻击的数据保护方法和装置 |
-
2023
- 2023-05-17 CN CN202310565890.XA patent/CN117729535A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117993027A (zh) * | 2024-03-28 | 2024-05-07 | 之江实验室 | 针对重复查询攻击的数据保护方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11477006B2 (en) | Secure analytics using an encrypted analytics matrix | |
CN109040076B (zh) | 一种数据处理方法、系统、装置、设备及介质 | |
TW202029690A (zh) | 基於區塊鏈的業務檔案儲存方法及裝置 | |
CN107295069A (zh) | 数据备份方法、装置、存储介质及服务器 | |
CN109992563A (zh) | 一种基于区块链的业务文件存储方法及装置 | |
CN109241352A (zh) | 个人档案信息的获取方法及服务器 | |
CN114840867B (zh) | 基于可交换加密数据混淆的数据查询方法、装置和系统 | |
CN117729535A (zh) | 一种查询方法、电子设备及系统 | |
CN109697370A (zh) | 数据库数据加解密方法、装置、计算机设备和存储介质 | |
CN116502276B (zh) | 匿踪查询方法及装置 | |
CN116502254B (zh) | 可查得统计的匿踪查询方法及装置 | |
CN112073444B (zh) | 数据集的处理方法、装置和服务器 | |
CN114969128A (zh) | 一种基于安全多方计算技术的隐匿查询方法、系统和存储介质 | |
CN104243153A (zh) | 一种用于发现设备的用户的方法和用户设备 | |
CN111339562B (zh) | 保序/揭序密文恢复方法及装置 | |
CN117729533A (zh) | 一种查询方法、电子设备及系统 | |
CN113902025A (zh) | 诈骗电话识别方法及系统 | |
CN112836239A (zh) | 保护隐私的双方协同确定目标对象数据的方法及装置 | |
CN112751841A (zh) | 一种基于区块链技术的加密通讯方法以及系统 | |
CN117729534A (zh) | 一种查询方法、电子设备及系统 | |
CN117728965A (zh) | 一种获取信息安全程度的方法及服务器 | |
Avoine et al. | Deploying OSK on low-resource mobile devices | |
CN113452654B (zh) | 一种数据解密的方法 | |
CN108874989A (zh) | 信息查询方法及装置 | |
CN114884700B (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 |